平均負(fù)載是指單位時(shí)間內(nèi)系統(tǒng)可運(yùn)行或者不可中斷狀態(tài)的平均進(jìn)程數(shù),平均活躍進(jìn)程數(shù)癣蟋。和CPU使用率沒(méi)有直接關(guān)系。
可運(yùn)行狀態(tài)是指正在使用CPU或者正在等待CPU的進(jìn)程,用ps命令看到的處于R狀態(tài)的進(jìn)程五垮。
不可中斷狀態(tài)是指正處于內(nèi)核態(tài)關(guān)鍵流程中的進(jìn)程,并且是不可打斷的杜秸,最常見(jiàn)的是等待IO響應(yīng)放仗,ps狀態(tài)下的D (Disk sleep)狀態(tài)。
磁盤(pán)讀寫(xiě)時(shí)撬碟,保證數(shù)據(jù)一致性诞挨。
不可中斷狀態(tài)其實(shí)是系統(tǒng)對(duì)硬件和進(jìn)程的保護(hù)機(jī)制莉撇。
平均負(fù)載最理想是等于CPU核數(shù)。
平均負(fù)載高不一定是cpu使用率高惶傻。
cpu密集型:負(fù)載高棍郎,cpu使用高,io不高银室。
io密集型:負(fù)載高涂佃,cpu使用不高,io高蜈敢。
工具:
stress linux壓力測(cè)試工具
sysstat包中 包含常用linux性能分析工具mpstat,pidstat.
mpstat是多核cpu性能分析工具辜荠,查看每個(gè)cpu性能指標(biāo),以及cpu所有平均指標(biāo)
pidstat進(jìn)程性能分析工具抓狭,查看進(jìn)程指標(biāo)
# -P ALL 表示監(jiān)控所有 CPU伯病,后面數(shù)字 5 表示間隔 5 秒后輸出一組數(shù)據(jù)
$ mpstat -P ALL 5
Linux 4.15.0 (ubuntu) 09/22/18 _x86_64_ (2 CPU)
13:30:06 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
13:30:11 all 50.05 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 49.95
13:30:11 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
13:30:11 1 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
# 間隔 5 秒后輸出一組數(shù)據(jù),-u 表示 CPU 指標(biāo)
$ pidstat -u 5 1
Linux 4.15.0 (ubuntu) 09/22/18 _x86_64_ (2 CPU)
13:42:08 UID PID %usr %system %guest %wait %CPU CPU Command
13:42:13 0 104 0.00 3.39 0.00 0.00 3.39 1 kworker/1:1H
13:42:13 0 109 0.00 0.40 0.00 0.00 0.40 0 kworker/0:1H
13:42:13 0 2997 2.00 35.53 0.00 3.99 37.52 1 stress
13:42:13 0 3057 0.00 0.40 0.00 0.00 0.40 0 pidstat
總結(jié)
1.top 或者update 了解系統(tǒng)的負(fù)載情況否过,因?yàn)槠骄?fù)載是整個(gè)系統(tǒng)的一個(gè)整體情況午笛,cpu,內(nèi)存,磁盤(pán)性能的一個(gè)綜合
若負(fù)載大于核數(shù)叠纹,機(jī)器資源緊張季研。
2.如果負(fù)載很高,top看看cpu的使用占比誉察,如果占比過(guò)高与涡,那瓶頸應(yīng)該是cpu,接下來(lái)看看是哪個(gè)具體進(jìn)程導(dǎo)致持偏。
3.cpu如果沒(méi)問(wèn)題驼卖,free看看內(nèi)存情況,不是直接看剩余多少鸿秆,而是要結(jié)合看看cache和buffer,再看具體進(jìn)程占用了過(guò)高內(nèi)存酌畜,top可以排序
4.內(nèi)存如果沒(méi)問(wèn)題,就iostat看看磁盤(pán)問(wèn)題
5.其他iftop看流量情況卿叽,看看流量是否超過(guò)給定的帶寬桥胞。
6.涉及具體應(yīng)用查看下具體設(shè)定值,比如連接數(shù)...
7.考慮外部系統(tǒng)