1: 一個個pod剔除,直到機器load爲0(空機器)
關注“上下文切換” 指標
記錄移除了哪些pod 產生了哪些變化
驗證free少的機器,load高?
結論:
a:進程數越多,即使CPU空閒率比較高,但是load還是有可能比較高,因爲進程切換佔用CPU時間
b:io wait 也會造成load虛高,需要排查 iostat -xz 1 看%util是否過高
分析結果:
a:機器沒有流量,pod比較多(20+searcher pod),負載在2左右,比較高
機器沒有流量,無pod,負載在0.6左右,比較低
期待的結果是,機器沒有流量,負載都應該比較低!!!!
b: 當pod被依次遷移走,發生變化的變量有:
進程數
上下文切換
內存
c:
刪除adapter的時候,內存釋放了20G,但是負載沒有發送變化,說明負載和內存並沒有直接的關聯
通過不斷減少任務數目,負載未發送變化,任務數目也和負載並沒有明顯的關聯
searcher的即使沒有流量,只要pod越多,負載就會越高,merger也是!
最終結論:
進程上下文切換越多,負載越高,目前看進程上下文切換與pod的數目是有關係的,並且與CPU的使用也有很大關係! 基於以上分析,加之對比主站機器,雲搜的機器的負載普遍虛高的原因是,機器上下文切換數目始終維持在比較高的狀態(無pod切換在8w+),在此中狀態下會導致CPU的使用率與load的關係表現爲:100%cpu,load爲1,並保持這種線性增長的關係!
todolist
1: tasks爲什麼這麼多?
2: 進程切換爲什麼這麼多?是哪些進程在切換?
階段1 : 機器上有20+ searcher pod
初始值