CPU使用過低,load過高

1:按照網上說的,這種情況很有可能下面的情況

等待磁盤I/O完成的進程過多,導致進程隊列長度過大,但是cpu運行的進程卻很少,這樣就體現到負載過大了,cpu使用率低。

使用“iostat -txk 1”或者“sar -d 1”(每個一秒採樣)來查看:

 

io阻塞會讓出cpu,如果大多數的進程都在阻塞,那麼會造成太多的上下文切換,這種切換消耗了cpu的時間,但是沒有真正的執行任務!

 

根據load的官方解釋:

System load averages is the average number of processes that are either in a runnable or uninterruptable state. A process in a

runnable state is either using the CPU or waiting to use the CPU.

 

進程狀態切換圖如下

 

官方解釋中提到的uninterruptable state,就是處於 uninterruptible sleep 狀態的進程通常是在等待 IO,比如磁盤 IO,網絡 IO,其他外設 IO, 這種狀態在linux中用D表示,ps 可看到。

@hxx爲什麼說是不可打斷的狀態,因爲在這種狀態下的進行,無法用kill -9 發送信號來中斷,只能重啓!

 

 

也就是說io是不佔用CPU的,不會導致top看到的CPU過高,但

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章