簡(jiǎn)介
使用top命令、uptime命令時(shí),都會(huì)打印服務(wù)器的load average,代表Linux系統(tǒng)1分鐘、5分鐘、15分鐘的負(fù)載情況,實(shí)際上,這些數(shù)據(jù)均來源于/proc/loadavg的前三個(gè)參數(shù)
什么是load average?
參考Linux官網(wǎng)說明http://man7.org/linux/man-pages/man5/proc.5.html
/proc/loadavg的前三個(gè)參數(shù)分別代表,最近1分鐘、5分鐘、15分鐘處于狀態(tài)R與狀態(tài)D進(jìn)程或線程平均值
狀態(tài)R:Running or runnable (on run queue)
狀態(tài)D:Uninterruptible sleep (usually IO)
即:處于運(yùn)行中、在運(yùn)行隊(duì)列中、處于不可中斷等待狀態(tài)中的線程進(jìn)程平均值
測(cè)試
環(huán)境說明:
1個(gè)物理CPU,6個(gè)核心,無超線程物理機(jī)進(jìn)行測(cè)試,運(yùn)行足夠長(zhǎng)時(shí)間
空載情況下
1進(jìn)程死循環(huán)
2進(jìn)程死循環(huán)
1進(jìn)程等待IO,1進(jìn)程死循環(huán)
10線程死循環(huán)
這里特別說明下:linux官網(wǎng)對(duì)/proc/loadavg第四個(gè)參數(shù)描述不正確,官網(wǎng)描述會(huì)小于CPU個(gè)數(shù),而實(shí)際上等于任務(wù)數(shù),超過CPU個(gè)數(shù)
結(jié)論
- 當(dāng)系統(tǒng)中不存在IO等待的情況下,load average等于CPU邏輯核心數(shù)時(shí),說明已經(jīng)滿載,超過時(shí)代表任務(wù)需要排隊(duì)
- 當(dāng)系統(tǒng)中出現(xiàn)大量等待IO的情況下,load average失去意義,此時(shí)無法判斷是CPU負(fù)載高還是IO設(shè)備出現(xiàn)瓶頸