linux 系統性能方面的學習
1、 load average
系統負載(system load) 是指系統CPU的繁忙的度量,即有多少程序在等待被CPU排程(程序等待佇列的長度)。
平均負載(load average) 是一段時間內系統的平均負載,時間段一般取1分鐘,5分鐘,15分鐘
1.1、檢視命令:
top命令
w命令
uptime命令
以top 命令說明
圖中說明機器vanv的1分鐘、5分鐘、15分鐘的平均負載分別是:0.08、0.12、0.16
1.2、load的數值含義
把CPU比喻成一條(單核)公路,程序任務比喻成公路上的汽車,load表示馬路的繁忙程度:
load = 0:表示公路上一輛車也沒有
load < 1:表示公路不堵車,汽車在公路上跑的遊刃有餘:
load =1:表示公路沒有額外的地方可以跑汽車
load > 1:則表示公路上已經存現堵車,汽車需要出現等待
但是如果有兩個CPU,則表示有兩條公路,此時load >1 也不代表塞車,以此類推。
1.3、load 值的留意(單核為例)
一般我會以0.7作為一個分界線
load<0.7時,系統很閒
0.7<load<1, 系統狀態可以應付
load == 1時,系統要處理不了,需要找一下原因
load > 5時,系統有嚴重的問題,會導致系統崩潰
1.4、三個load值得理解(單核)
1分鐘 | 5分鐘 | 15分鐘 | 說明 |
load>5 | load<1 | load<1 | 短期內繁忙,中長期空閒,是一個抖動,或者阻塞前兆 |
load>5 | load>1 | load<1 | 短期內繁忙,中期緊張,可能是一個阻塞開始 |
load>5 | load>5 | load>5 | 系統正在阻塞 |
load<1 | load>1 | load>5 | 短期空閒,中長期繁忙,系統可能正在好轉 |
1.5、多核處理器
上面說明都是以單核為例,如果我們的CPU是多核,那麼處理的能力就翻倍,因此檢視load average需要根據CPU核數來判斷
計算公式:load average < CPU個數 * CPU核數 * 0.7
CPU物理個數檢視命令:
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
邏輯CPU個數檢視命令:
cat /proc/cpuinfo| grep "processor"| wc -l
每個物理CPU的core個數
cat /proc/cpuinfo| grep "cpu cores"| uniq
檢視是否開啟intel的超執行緒技術(HT)
如果有兩個邏輯CPU具有相同的"core id",那麼超執行緒是開啟的。可以根據以下原則,來判斷是否支援HT技術。
如果"siblings"和"cpu cores"一致,則說明不支援超執行緒,或者超執行緒未開啟。
如果"siblings"是"cpu cores"的兩倍,則說明支援超執行緒,並且超執行緒已開啟。
物理CPU與邏輯CPU的關係:
邏輯CPU的數量=物理CPU數量 *CPU cores * 2(支援並開啟HT)