一般說到CPU使用率恳不,大家都不陌生望忆,就是程序?qū)PU時間片的占用情況,但我們大多情況下阐虚,還需要看另外一個指標(biāo)序臂,CPU load average.
先來看著圖:
下面top命令,可以看到load average实束,3個值奥秆,分別記錄了1min,5min,15min的系統(tǒng)平均負載磕洪。(用uptime命令也可以查看到這三個值)
這幾個值是linux的負載均值吭练,對性能有重要的意義。但這個值設(shè)置多少是合理的呢析显?
放出定義:load average 表示的是CPU的負載鲫咽,包含的信息不是CPU的使用率狀況,而是在一段時間內(nèi)CPU正在處理以及等待CPU處理的進程數(shù)之和的統(tǒng)計信息谷异,也就是CPU使用隊列的長度的統(tǒng)計信息分尸。
我們舉個例子:高速公路收費站10個車道,那當(dāng)有1-9輛車在不同的通道通過時歹嘹,認為收費站的load<1;當(dāng)正好10輛車在不同的通道時箩绍,load=1;當(dāng)超過10輛車(假設(shè)每個通道是均勻有車)時,load>1.假設(shè)有100輛車尺上,每個通道10輛材蛛,那就說明能有10輛車能過去,另外90輛車則需要等待怎抛。此時收費站的load為100/10=10. 這個10的負載表示系統(tǒng)當(dāng)前滿負荷運轉(zhuǎn)卑吭,且還有相當(dāng)于90%的滿負載的請求在等待。
但是經(jīng)常我們也看到load average 有高達6马绝,那真的是有問題嘛豆赏?不一定,因為它是基于操作系統(tǒng)的內(nèi)核的數(shù)量決定的富稻,一般可以簡單粗暴的理解為內(nèi)核load之和掷邦。 比如現(xiàn)在一般都是8個內(nèi)核,那么load average的值就是8椭赋、
一般業(yè)界能夠被接受的值是抚岗, load average <= CPU核數(shù) *0.7。 但現(xiàn)在硬件越來越便宜哪怔,核數(shù)龐大的機器也越來越大宣蔚,如遇到機器的CPU核數(shù)很大廷痘,那么剩余的30%部分也越大,這個時候可以適當(dāng)?shù)恼{(diào)整下件已,只要不要到整個核數(shù)都用滿。
綜合元暴,理想的系統(tǒng)load是既沒有進程(線程)等待也沒有CPU空閑篷扩,可最大限度的利用CPU資源。
回到上面的圖茉盏,我們可以看到1min,5min,15min 的平均load值鉴未。這三個字是要結(jié)合起來看的,如果機器持續(xù)在一段時間內(nèi)都是load很高的鸠姨,那么也許機器性能下降了铜秆,可能需要進一步排查問題,也許是要增加機器了讶迁。
有時候也會遇到一種情況连茧,Load很高,但系統(tǒng)的CPU使用率卻比較低巍糯⌒パ保可能的原因是頻繁的上下文切換導(dǎo)致耗費了大量的CPU時間,以至于用在運算的CPU時間片比較少祟峦,卻有很多進程在等待運行罚斗。