做為乙個測試工程師,每當我們發現計算機變慢的時候,我們通常執行 uptime 或 top 命令,來了解系統的負載情況。或者使用相關視覺化平台直接檢視平均負載和cpu使用率。
那麼這二者具體是什麼呢?有什麼關係呢?
先說平均負載,
標準定義:單位時間內,系統中處於可執行狀態和不可中斷狀態的平均程序數。
cpu 負載值在 linux 系統中表示正在執行,處於可執行狀態的平均作業數(讀取一組與流程執行執行緒對應的機器語言的程式指令),或者非常重要,休眠但不可中斷(不可交錯的休眠狀態))。也就是說,要計算 cpu 負載的值,只考慮正在執行或等待分配 cpu 時間的程序。不考慮正常的休眠過程(休眠狀態),殭屍或停止的過程。
可執行狀態的程序:正在使用cpu或者正在等待cpu的程序,即 ps aux 命令下 stat 處於 r 狀態的程序。
不可中斷狀態的程序:處於核心態關鍵流程中的程序,且不可被打斷,如等待硬體裝置io響應,ps 命令 d 狀態的程序。
理想狀態:每個cpu上都有乙個活躍程序,即平均負載數等於cpu數。
過載值:平均負載高於cpu數量 70% 的時候。
再說cup使用率
cpu使用率定義:單位時間內cpu繁忙情況的統計。
如果我們觀察在給定時間間隔內通過cpu的不同程序,則利用率百分比將表示相對於cpu執行與每個程序相對應的指令的那個時間間隔的時間部分。但這種計算只執行的程序,而不是那些正在等待,無論它們是在佇列(可執行狀態)還是睡著但不可中斷(例如在等待輸入/輸出操作的結束)被認為。
因此,這個指標可以讓我們了解哪些程序最大程度地擠壓cpu,但是如果系統狀態過載或者未充分利用,則不能給出真實的系統狀態圖。
乙個模擬
上面還看太懂怎麼辦?沒事,我們來看乙個簡單的模擬例子。
先假設最簡單的情況,你的計算機只有乙個 cpu,所有的運算都必須由這個 cpu 來完成。
那麼,我們不妨把這個 cpu 想象成一座大橋,橋上只有一根車道,所有車輛都必須從這根車道上通過。(很顯然,這座橋只能單向通行。)
系統負載為 0,意味著大橋上一輛車也沒有。
系統負載為 0.5,意味著大橋一半的路段有車。
系統負載為 1.0,意味著大橋的所有路段都有車,也就是說大橋已經"滿"了。但是必須注意的是,直到此時大橋還是能順暢通行的。
系統負載為 1.7,意味著車輛太多了,大橋已經被佔滿了(100%),後面等著上橋的車輛為橋面車輛的 70%。以此類推,系統負載 2.0,意味著等待上橋的車輛與橋面的車輛一樣多;系統負載 3.0,意味著等待上橋的車輛是橋面車輛的 2 倍。總之,當系統負載大於 1,後面的車輛就必須等待了;系統負載越大,過橋就必須等得越久。
cpu 的系統負載,基本上等同於上面的模擬。大橋的通行能力,就是cpu 的最大工作量;橋梁上的車輛,就是乙個個等待 cpu 處理的程序(process)。
如果cpu 每分鐘最多處理100個程序,那麼系統負載0.2,意味著cpu在這 1 分鐘裡只處理 20 個程序;系統負載 1.0,意味著 cpu 在這 1 分鐘裡正好處理 100 個程序;系統負載 1.7,意味著除了 cpu 正在處理的100 個程序以外,還有 70 個程序正排隊等著cpu處理。
為了計算機順暢執行,系統負載最好不要超過 1.0,這樣就沒有程序需要等待了,所有程序都能第一時間得到處理。很顯然,1.0 是乙個關鍵值,超過這個值,系統就不在最佳狀態了,你要動手干預了。
linux系統平均負載和cpu使用率是我們檢視伺服器效能的關鍵指標,二者相互聯絡,又相輔相成。若是看單個指標,資料可能有誤,建議同時檢視。
系統平均負載
1分鐘 5分鐘 15分鐘 系統的平均負載 平均負載跟系統cpu的使用率沒有太大關係 在單位時間內,系統正在執行中的程序數或者不可中斷的程序數量 程序的活躍數量 跟cpu的核心數有關係 當負載為2的時候 核心數為4 50 核心數為2 100 核心數為1 200 當1分鐘的值小於5分鐘和15分鐘的時候 ...
linux效能優化cpu 02平均負載
每次我們系統變慢時,我們通常做的第一件事就是top命令或者uptime命令,看一下系統的負載情況,比如下面 我在命令列中輸入uptime 22 15 51 表示當前系統時間 up 13 min 系統執行總時間 2 users 當前正在登陸 使用者數 load erage 0.12,0.06,0.05...
Linux 理解平均負載
uptime輸出的平均負載,又叫平均程序數,包括正在使用cpu 等待cpu 等待io的程序。和cpu使用率沒有直接關係。假設系統只有乙個cpu,當平均負載為1,即每個cpu剛好執行乙個任務 不可中斷狀態 ps為d狀態的 可執行狀態 ps為r狀態 cpu使用率含義 單位時間內cpu繁忙情況的統計,和平...