Linux服務器中高負載現象故障排查 linux技術學習
CPU利用率高並不意味著負載就一定大,可能這個任務是一個CPU密集型的。一樣CPU低利用率的情況下是否會有高Load Average的情況產生呢?理解占有時間和使用時間就可以知道,當
由此來看,僅僅從CPU的使用率來判斷CPU是否處於一種超負荷的工作狀態還是不夠的,必須結合Load Average來全局的看CPU的使用情況。網上有個例子來說明兩者的區別如下:某公用電話亭,有一個人在打電話,四個人在等待,每人限定使用電話一分鐘,若有人一分鐘之內沒有打完電話,只能掛掉電話去排隊,等待下一輪。電話在這裏就相當於CPU,而正在或等待打電話的人就相當於任務數。在電話亭使用過程中,肯定會有人打完電話走掉,有人沒有打完電話而選擇重新排隊,更會有新增的人在這兒排隊,這個人數的變化就相當於任務數的增減。為了統計平均負載情況,我們
CPU數量和CPU核心數(即內核數)都會影響到
Linux裏有一個/proc目錄,存放的是當前運行系統的虛擬映射,其中有一個文件為cpuinfo,這個文件裏存放著CPU的信息。/proc/cpuinfo文件按邏輯CPU而非真實CPU分段落顯示信息,每個邏輯CPU的信息占用一個段落,第一個邏輯CPU標識從0開始。
要理解該文件中的CPU信息,有幾個相關的概念要知道,如:processor表示邏輯CPU的標識、model name表示真實CPU的型號信息、physical id表示真實CPU和標識、cpu cores表示真實CPU的內核數等等。
邏輯CPU的描述:現在的服務器一般都使用了“超線程”(Hyper-Threading,簡稱HT)技術來提高CPU的性能。超線程技術是在一顆CPU同時執行多個程序而共同分享一顆CPU內的資源,理論上要像兩顆CPU一樣在同一時間執行兩個線程。雖然采用超線程技術能同時執行兩個線程,但它並不象兩個真正的CPU那樣,每各CPU都具有獨立的資源。當兩個線程都同時需要某一個資源時,其中一個要暫時停止,並讓出資源,直到這些資源閑置後才能繼續。因此超線程的性能並不等於兩顆CPU的性能。具有超線程技術的CPU還有一些其它方面的限制。
Linux服務器中高負載現象故障排查 linux技術學習