1朵你、uptime的三個參數(shù)
[root@server2 ~]# uptime
10:50:28 up 1 day, 12:41, 5 users, load average: 0.00, 0.01, 0.05
分別是當(dāng)前時間各聘,系統(tǒng)運(yùn)行時間,正在登錄用戶數(shù)
最后三個數(shù)字依次是過去1分鐘撬呢、5分鐘伦吠、15分鐘的平均負(fù)載(load average)
2妆兑、平均負(fù)載的定義魂拦?
平均負(fù)載指的是單位時間內(nèi)毛仪,系統(tǒng)處于可運(yùn)行狀態(tài)和不可中斷狀態(tài)的平均進(jìn)程數(shù),也就是平均活躍進(jìn)程數(shù)芯勘。
可運(yùn)行狀態(tài):ps -aux 顯示 進(jìn)程狀態(tài) 為R 的進(jìn)程
(表示:running或者runable)
不可中斷進(jìn)程: 正處于內(nèi)核態(tài)關(guān)鍵流程中的進(jìn)程箱靴,并且這些進(jìn)程是不可打斷的,比如常見的(進(jìn)程等待硬件設(shè)備I/O響應(yīng))荷愕,也就是ps -aux中狀態(tài)為D的進(jìn)程(Disk sleep)
平均負(fù)載衡怀,可以理解為平均活躍進(jìn)程數(shù),最理想的情況就是安疗,每個cpu上剛好有一個進(jìn)程抛杨,這樣每個進(jìn)程都得到了充分的利用
比如在2個cpu的機(jī)器上,平均負(fù)載為2荐类,那么cpu剛好完全被占用怖现,在4個cpu的機(jī)器上意味著cpu有50%的空閑,在一個cpu的機(jī)器上玉罐,意味著有一半的進(jìn)程競爭不到cpu屈嗤。
3、如何獲取一臺機(jī)器的cpu數(shù)吊输?
-
top 命令 然后按1
- 查看/proc/cpuinfo
[root@server2 ~]# grep 'model name' /proc/cpuinfo | wc -l
2
4饶号、在實(shí)際的生產(chǎn)環(huán)境中,當(dāng)平均負(fù)載高于cpu數(shù)量的70%的時候季蚂,就應(yīng)該注意分析排查負(fù)載高的問題了茫船。
但是這個數(shù)字不是絕對的,還是應(yīng)該把平均負(fù)載監(jiān)控起來扭屁,然后根據(jù)更多的歷史數(shù)據(jù)透硝,判斷負(fù)載的變化趨勢。
5疯搅、平均負(fù)載和cpu使用率
平均負(fù)載的含義是單位時間內(nèi)濒生,處于可運(yùn)行狀態(tài)和不可打斷狀態(tài)的進(jìn)程數(shù),所以幔欧,它不僅包括了正在使用CPU的進(jìn)程罪治,還包括等待CPU和等待I/O的進(jìn)程
CPU使用率,是單位時間內(nèi)CPU工作時間的統(tǒng)計(jì)礁蔗。
三種案例:
- cpu密集型進(jìn)程觉义, 使用大量CPU會導(dǎo)致平均負(fù)載升高,此時兩者一致
- I/O密集型進(jìn)程浴井,等待I/O導(dǎo)致平均負(fù)載升高晒骇,但是cpu使用率不一定升高
- 大量等待cpu調(diào)度的進(jìn)程也會導(dǎo)致平均負(fù)載升高,,此時洪囤,CPU使用率也會升高
6徒坡、使用性能分析工具,進(jìn)行分析
環(huán)境:centos7 2cpu 1g內(nèi)存(free 查看內(nèi)存 cat /proc/meminfo )
工具包: stress 瘤缩、sysstat 喇完、
stress 是linux1系統(tǒng)壓力測試工具,我們用來模擬平均負(fù)載升高的場景
sysstat 用來監(jiān)控和分析系統(tǒng)性能剥啤。
這個包有兩個命令:mpstat 锦溪、pidstat
mpstat 常用的多核cpu性能分析工具,用來實(shí)時查看每個cpu的性能指標(biāo)府怯,以及所有cpu的平均指標(biāo)
pidstat 是常用的進(jìn)程性能分析工具刻诊,用來實(shí)時查看進(jìn)程的CPU、內(nèi)存牺丙、I/O以及上下文切換等的性能指標(biāo)坏逢。
- 初始查看平均負(fù)載
[root@server2 ~]# uptime
11:28:25 up 1 day, 13:19, 5 users, load average: 0.00, 0.03, 0.05
- 場景一:模擬cpu密集型進(jìn)程
- I/O密集型進(jìn)程
- 大量進(jìn)程的場景
總結(jié):
首先羊异,平均負(fù)載事秀,提供了一個快速查看系統(tǒng)性能的手段,反映了整體的負(fù)載情況野舶。
但是僅僅看平均負(fù)載易迹,什么都得不到,無法發(fā)現(xiàn)系統(tǒng)的瓶頸
所以在理解平均負(fù)載的時候平道,要注意:
平均負(fù)載高可能是CPU密集型進(jìn)程導(dǎo)致的
平均負(fù)載高不一定代表cpu使用高睹欲,還可能是I/O繁忙
平均負(fù)載高還可能是有大量進(jìn)程在爭搶cpu
當(dāng)發(fā)現(xiàn)負(fù)載高的時候,可以使用一屋,mpstat窘疮、pidstat等工具來分析系統(tǒng)瓶頸的來源。