-
當(dāng)我們使用top命令查看系統(tǒng)的資源使用情況時(shí)會(huì)看到load average棵譬,如下圖所示葫隙,它表示系統(tǒng)在1,5,15分鐘的平均工作負(fù)載洞辣。
-
1.那么什么是負(fù)載(load)呢仑荐?它和CPU的利用率又有什么關(guān)系呢阎曹?
- load average:系統(tǒng)平均負(fù)載是CPU的Load伪阶,它所包含的信息不是CPU的使用率狀況,而是在一段時(shí)間內(nèi)CPU正在處理以及等待CPU處理的進(jìn)程數(shù)之和的統(tǒng)計(jì)信息处嫌,也就是CPU使用隊(duì)列的長(zhǎng)度的統(tǒng)計(jì)信息栅贴,這個(gè)數(shù)字越小越好。
-
1熏迹、CPU負(fù)載和CPU使用率的區(qū)別
- CPU使用率:顯示的是程序在運(yùn)行期間實(shí)時(shí)占用的CPU百分比
- CPU負(fù)載:顯示的是一段時(shí)間內(nèi)正在使用和等待使用CPU的平均任務(wù)數(shù)檐薯。
- CPU使用率高,并不意味著負(fù)載就一定大注暗。
舉例來(lái)說(shuō):如果我有一個(gè)程序它需要一直使用CPU的運(yùn)算功能坛缕,那么此時(shí)CPU的使用率可能達(dá)到100%,但是CPU的工作負(fù)載則是趨近于“1”捆昏,因?yàn)镃PU僅負(fù)責(zé)一個(gè)工作嘛赚楚!如果同時(shí)執(zhí)行這樣的程序兩個(gè)呢?CPU的使用率還是100%骗卜,但是工作負(fù)載則變成2了宠页。所以也就是說(shuō),當(dāng)CPU的工作負(fù)載越大膨俐,代表CPU必須要在不同的工作之間進(jìn)行頻繁的工作切換勇皇。
舉例說(shuō)明:
網(wǎng)上有篇文章舉了一個(gè)有趣比喻,拿打電話來(lái)說(shuō)明兩者的區(qū)別焚刺,我按自己的理解闡述一下敛摘。
某公用電話亭,有一個(gè)人在打電話乳愉,四個(gè)人在等待兄淫,每人限定使用電話一分鐘,若有人一分鐘之內(nèi)沒(méi)有打完電話蔓姚,只能掛掉電話去排隊(duì)捕虽,等待下一輪。電話在這里就相當(dāng)于CPU坡脐,而正在或等待打電話的人就相當(dāng)于任務(wù)數(shù)泄私。
在電話亭使用過(guò)程中,肯定會(huì)有人打完電話走掉,有人沒(méi)有打完電話而選擇重新排隊(duì)晌端,更會(huì)有新增的人在這兒排隊(duì)捅暴,這個(gè)人數(shù)的變化就相當(dāng)于任務(wù)數(shù)的增減。為了統(tǒng)計(jì)平均負(fù)載情況咧纠,我們5分鐘統(tǒng)計(jì)一次人數(shù)蓬痒,并在第1、5漆羔、15分鐘的時(shí)候?qū)y(tǒng)計(jì)情況取平均值梧奢,從而形成第1、5演痒、15分鐘的平均負(fù)載亲轨。
有的人拿起電話就打,一直打完1分鐘鸟顺,而有的人可能前三十秒在找電話號(hào)碼瓶埋,或者在猶豫要不要打,后三十秒才真正在打電話诊沪。如果把電話看作CPU,人數(shù)看作任務(wù)曾撤,我們就說(shuō)前一個(gè)人(任務(wù))的CPU利用率高端姚,后一個(gè)人(任務(wù))的CPU利用率低。
當(dāng)然挤悉, CPU并不會(huì)在前三十秒工作渐裸,后三十秒歇著,只是說(shuō)装悲,有的程序涉及到大量的計(jì)算昏鹃,所以CPU利用率就高,而有的程序牽涉到計(jì)算的部分很少诀诊,CPU利用率自然就低洞渤。
結(jié)論:無(wú)論CPU的利用率是高是低,跟后面有多少任務(wù)在排隊(duì)沒(méi)有必然關(guān)系属瓣。
- 2载迄、負(fù)載為多少才算比較理想?
- 這個(gè)有爭(zhēng)議抡蛙,各有各的說(shuō)法护昧,個(gè)人比較贊同CPU負(fù)載小于等于0.5算是一種理想狀態(tài)。
- 不管某個(gè)CPU的性能有多好粗截,1秒鐘能處理多少任務(wù)惋耙,我們可以認(rèn)為它無(wú)關(guān)緊要,雖然事實(shí)并非如此。在評(píng)估CPU負(fù)載時(shí)绽榛,我們只以5分鐘為單位為統(tǒng)計(jì)任務(wù)隊(duì)列長(zhǎng)度湿酸。如果每隔5分鐘統(tǒng)計(jì)的時(shí)候,發(fā)現(xiàn)任務(wù)隊(duì)列長(zhǎng)度都是1蒜田,那么CPU負(fù)載就為1稿械。假如我們只有一個(gè)單核的CPU,負(fù)載一直為1冲粤,意味著沒(méi)有任務(wù)在排隊(duì)美莫,還不錯(cuò)。
但是我那臺(tái)服務(wù)器梯捕,是雙核雙CPU厢呵,等于是有4個(gè)內(nèi)核,每個(gè)內(nèi)核的負(fù)載為1的話傀顾,總負(fù)載為4襟铭。這就是說(shuō),如果我那臺(tái)服務(wù)器的CPU負(fù)載長(zhǎng)期保持在4左右短曾,還可以接受寒砖。
但是每個(gè)內(nèi)核的負(fù)載為1,并不能算是一種理想狀態(tài)嫉拐!這意味著我們的CPU一直很忙哩都,不得清閑。網(wǎng)上有說(shuō)理想的狀態(tài)是每個(gè)內(nèi)核的負(fù)載為0.7左右婉徘,我比較贊同漠嵌,0.7乘以?xún)?nèi)核數(shù),得出服務(wù)器理想的CPU負(fù)載盖呼,比如我這臺(tái)服務(wù)器儒鹿,負(fù)載在3.0以下就可以。 -
3几晤、如何來(lái)降低服務(wù)器的CPU負(fù)載约炎?
最簡(jiǎn)單辦法的是更換性能更好的服務(wù)器,不要想著僅僅提高CPU的性能锌仅,那沒(méi)有用章钾,CPU要發(fā)揮出它最好的性能還需要其它軟硬件的配合。
在服務(wù)器其它方面配置合理的情況下热芹,CPU數(shù)量和CPU核心數(shù)(即內(nèi)核數(shù))都會(huì)影響到CPU負(fù)載贱傀,因?yàn)槿蝿?wù)最終是要分配到CPU核心去處理的。兩塊CPU要比一塊CPU好伊脓,雙核要比單核好府寒。
因此魁衙,我們需要記住,除去CPU性能上的差異株搔,CPU負(fù)載是基于內(nèi)核數(shù)來(lái)計(jì)算的剖淀!有一個(gè)說(shuō)法,“有多少內(nèi)核纤房,即有多少負(fù)載”纵隔。 -
4、CPU使用率到多少才算比較理想炮姨?
CPU使用率長(zhǎng)時(shí)間60-80%就認(rèn)為機(jī)器有瓶頸出現(xiàn)捌刮。 -
2.load average多少是正常?
既然load是cpu計(jì)算的隊(duì)列舒岸,那就應(yīng)該和cpu個(gè)處理方式和cpu的個(gè)數(shù)有關(guān)系绅作。所以我個(gè)人認(rèn)為應(yīng)該按系統(tǒng)識(shí)別的cpu個(gè)數(shù)來(lái)確定load的臨界值,系統(tǒng)識(shí)別為8個(gè)cpu蛾派,那么load為8就是臨界點(diǎn)俄认,高于8就屬于over load了。
-
3. 什么叫系統(tǒng)識(shí)別CPU個(gè)數(shù)洪乍?
這里涉及到cpu物理個(gè)數(shù)和超線程技術(shù)的問(wèn)題眯杏。對(duì)于單處理器在滿(mǎn)負(fù)載的情況下1.00,則雙處理器的負(fù)載滿(mǎn)額的情況是 2.00壳澳,它還有一倍的資源可以利用役拴。從性能的角度上理解,一臺(tái)主機(jī)擁有多核心的處理器與另臺(tái)擁有同樣數(shù)目的處理性能基本上可以認(rèn)為是相差無(wú)幾钾埂。當(dāng)然實(shí)際 情況會(huì)復(fù)雜得多,不同數(shù)量的緩存科平、處理器的頻率等因素都可能造成性能的差異褥紫。但即便這些因素造成的實(shí)際性能稍有不同,其實(shí)系統(tǒng)還是以處理器的核心數(shù)量計(jì)算負(fù)載均值 瞪慧。這使我們有了兩個(gè)新的法則:
- “有多少核心即為有多少負(fù)荷”法則: 在多核處理中髓考,你的系統(tǒng)均值不應(yīng)該高于處理器核心的總數(shù)量。
- “核心的核心”法則: 核心分布在分別幾個(gè)單個(gè)物理處理中并不重要弃酌,其實(shí)兩顆四核的處理器 等于 四個(gè)雙核處理器 等于 八個(gè)單處理器氨菇。所以,它應(yīng)該有八個(gè)處理器內(nèi)核妓湘。
-
4. 如何查看系統(tǒng)的CPU個(gè)數(shù)查蓉?
在 Linux 下,可以使用下面的命令獲取你系統(tǒng)上的邏輯處理器的數(shù)量:
grep ‘model name’ /proc/cpuinfo | wc -l
-# 總結(jié):
- CPU高不等同于load高榜贴,load高也不能于cpu高豌研。二者不能同等看待,可以說(shuō)是2個(gè)不同維度的數(shù)值
@霧霾-2016-10-13 09:49:13