CPU負(fù)載與CPU使用率之區(qū)別

1披粟、簡(jiǎn)介
存儲(chǔ)碧绞、內(nèi)存和 CPU(中央處理器)等系統(tǒng)資源不足會(huì)極大地影響應(yīng)用程序的性能祝钢。因此比规,監(jiān)控這些組件至關(guān)重要。

與磁盤和內(nèi)存不同拦英,監(jiān)控 Linux 系統(tǒng)上的 CPU 使用率并不那么簡(jiǎn)單蜒什。在本文中,我們將了解如何解釋 CPU 指標(biāo)并以人類可讀的格式顯示它們疤估。

  1. CPU 負(fù)載與 CPU 使用率
    盡管 CPU 負(fù)載和 CPU 使用率聽起來(lái)很相似吃谣,但它們是不可互換的。CPU 負(fù)載定義為在單個(gè)時(shí)間點(diǎn)使用或等待使用一個(gè)內(nèi)核的進(jìn)程數(shù)做裙。

假設(shè)我們有一個(gè)單核系統(tǒng)岗憋,我們的 CPU 平均負(fù)載始終低于 0.6。這表明每個(gè)需要使用 CPU 的進(jìn)程都可以立即使用它锚贱,而無(wú)需等待仔戈。如果 CPU 平均負(fù)載大于 1,則表示有進(jìn)程需要使用 CPU拧廊,但由于 CPU 不可用监徘,目前無(wú)法使用。

但是吧碾,多處理器系統(tǒng)中高于 1 的平均負(fù)載不會(huì)成為問題凰盔,因?yàn)橛懈鄡?nèi)核可用。

uptime命令為我們提供了以 1倦春、5 和 15 分鐘為間隔的平均負(fù)載視圖:

[root@localhost ~]# uptime
 12:40:05 up  2:29,  1 user,  load average: 0.37, 0.08, 0.03

如果不知道系統(tǒng)的核心數(shù)户敬,就無(wú)法解釋平均負(fù)載:

# cat /proc/cpuinfo |grep core
core id        : 0
cpu cores    : 1

# cat /proc/cpuinfo |grep core
core id     : 0
cpu cores   : 2
core id     : 0
cpu cores   : 2
core id     : 1
cpu cores   : 2
core id     : 1
cpu cores   : 2

另一方面,CPU 使用率是 CPU 處理非空閑任務(wù)所花費(fèi)的時(shí)間百分比睁本。CPU 使用率只能在指定的時(shí)間間隔內(nèi)測(cè)量尿庐。我們可以通過將空閑時(shí)間的百分比從 100 中減去來(lái)確定 CPU 使用率。

3.計(jì)算CPU使用率
3.1 使用vmstat獲取 CPU 使用率
vmstat命令近乎實(shí)時(shí)地顯示 CPU 活動(dòng):

# vmstat 3 4
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 4  0      0 1347080   6120 941464    0    0    68    11   72  137  1  2 97  0  0
 1  0      0 1347080   6120 941464    0    0     0     0   84  157  1  2 97  0  0
 1  0      0 1347080   6120 941464    0    0     0     0   59  107  1  1 98  0  0
 1  0      0 1347080   6120 941464    0    0     0     1   59  104  1  1 98  0  0

CPU 下的列提供了處理器時(shí)間花費(fèi)在哪里的概覽:

us –運(yùn)行非內(nèi)核代碼所花費(fèi)的時(shí)間
sy -運(yùn)行內(nèi)核代碼所花費(fèi)的時(shí)間
id –空閑時(shí)間
wa –等待 I/O 所花費(fèi)的時(shí)間
st -從虛擬機(jī)中竊取時(shí)間
id列是我們感興趣的呢堰。延遲一秒抄瑟,我們使用 vmstat 計(jì)算CPU使用率:

[root@localhost ~]# echo "CPU Usage: "$[100-$(vmstat 1 2|tail -1|awk '{print $15}')]"%"
CPU Usage: 2%

沒有提供任何參數(shù)的vmstat命令將給出自引導(dǎo)以來(lái)的 CPU 時(shí)間。這不會(huì)提供準(zhǔn)確的 CPU 使用百分比枉疼。因此皮假,參數(shù)只能是 1 和 2鞋拟,我們采用一秒鐘后計(jì)算的指標(biāo):

# vmstat 1 2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 299948 439704 2817632    0    0    24    80    0    1  3  1 96  0  0
 0  0      0 299388 439716 2817624    0    0    52     0 12639 24736  1  1 98  0  0

3.2. 使用/proc/stat獲取 CPU 使用率
CPU 活動(dòng)也可以從/proc/stat文件中提取。該文件包含自啟動(dòng)以來(lái)有關(guān)系統(tǒng)的各種指標(biāo):

#cat /proc/stat 
cpu  65367628 953 22932463 2375856549 2197237 0 1946432 0 0 0
cpu0 17476419 247 6017418 592188525 448421 0 551235 0 0 0
cpu1 15205823 274 5377711 595458052 609782 0 460967 0 0 0
cpu2 17714818 235 6120189 592488511 582748 0 487777 0 0 0
cpu3 14970567 195 5417144 595721459 556284 0 446450 0 0 0
intr 19254483325 128 9 0 0 524 0 3 0 146 0 0 21 15 0 0 0 0 0 0 0 0 0 0 0 0 27 0 63657576 2 241449792 165587438 238303338 155312300 253683406 161946028 268992893 187313418 0 7268232 0 18751463 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 173337668793
btime 1648457167
processes 57320268
procs_running 2
procs_blocked 0
softirq 12000130905 1 1247219541 0 1075777327 82816139 0 5752561 2548585639 372991 2744639410

第一行惹资, 'cpu' 是系統(tǒng)所有核心指標(biāo)的聚合严卖。在具有 4 個(gè)內(nèi)核的系統(tǒng)上,將有 4條cpu線——cpu0布轿、cpu1哮笆、cpu2和cpu3。' cpu ' 行中的列表示處理不同任務(wù)所花費(fèi)的時(shí)間:

user – 在用戶模式下花費(fèi)的時(shí)間
nice – 在用戶模式下處理 nice 進(jìn)程所花費(fèi)的時(shí)間
system – 執(zhí)行內(nèi)核代碼所花費(fèi)的時(shí)間
idle - 空閑時(shí)間
iowait – 等待 I/O 所花費(fèi)的時(shí)間
irq - 服務(wù)中斷所花費(fèi)的時(shí)間
softirq – 服務(wù)軟件中斷所花費(fèi)的時(shí)間
steal —從虛擬機(jī)中竊取的時(shí)間
guest - 為來(lái)賓操作系統(tǒng)運(yùn)行虛擬 CPU 所花費(fèi)的時(shí)間
guest_nice – 為“不錯(cuò)的”客戶操作系統(tǒng)運(yùn)行虛擬 CPU 所花費(fèi)的時(shí)間
我們將使用這些指標(biāo)來(lái)計(jì)算平均空閑百分比汰扭。隨后稠肘,我們將使用計(jì)算值來(lái)計(jì)算 CPU 使用率。需要注意的是萝毛,較舊的 Linux 發(fā)行版不計(jì)算竊取项阴、來(lái)賓或來(lái)賓_nice指標(biāo)。如果我們使用的是舊系統(tǒng)笆包,我們會(huì)在計(jì)算中忽略這些指標(biāo):

平均空閑時(shí)間 (%) = (idle * 100) / (user + nice + system + idle + iowait + irq + softirq +steal + guest + guest_nice)

cat /proc/stat |grep cpu |tail -1|awk '{print ($5*100)/($2+$3+$4+$5+$6+$7+$8+$9+$10)}'|awk '{print "CPU Usage: " 100-$1}'
CPU Usage: 2.4219

由于我們正在開發(fā)單核系統(tǒng)环揽,因此“cpu”行將與“cpu1 ”相同。因此庵佣,tail -1 的使用是 只檢索其中一行歉胶。然而,我們會(huì)在多處理器系統(tǒng)上使用“ cpu ”行巴粪,因?yàn)樗撬袃?nèi)核上的指標(biāo)的集合通今。

3.3. 使用top獲取 CPU 使用率
通常,top命令通常用于顯示系統(tǒng)上的活動(dòng)進(jìn)程以及這些進(jìn)程消耗了多少資源肛根。不過辫塌,我們可以使用這個(gè)命令來(lái)測(cè)量 CPU 的狀態(tài):

# top

top - 07:08:31 up  2:41,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 322 total,   2 running, 320 sleeping,   0 stopped,   0 zombie
%Cpu(s): 10.0 us, 15.0 sy,  0.0 ni, 97.8 id,  0.0 wa,  5.0 hi,  0.0 si,  0.0 st
MiB Mem :   3709.4 total,   1483.1 free,   1402.0 used,    824.4 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   2053.4 avail Mem 

-n選項(xiàng)是top命令在結(jié)束前應(yīng)該使用的迭代次數(shù)。我們避免使用第一個(gè)循環(huán)派哲,因?yàn)槲覀儥z索的指標(biāo)將是自啟動(dòng)以來(lái)的值臼氨。因此,我們進(jìn)行了第二次迭代芭届。

或者储矩,在多處理器系統(tǒng)中,我們必須將給定的“ id”值除以內(nèi)核數(shù)喉脖,然后從 100 中減去該值椰苟。例如抑月,如果我們?cè)谒暮讼到y(tǒng)上運(yùn)行树叽,并且“ id ”值為 304%,我們將 CPU 使用率計(jì)算為:

CPU 使用率 % = 100 – (304/4)
[root@localhost ~]# top -bn2 | grep '%Cpu' | tail -1 | grep -P '(....|...) id,'|awk '{print "CPU Usage: " 100-($8/4) "%"}'

4.結(jié)論
在本文中谦絮,我們討論了 CPU 使用率和 CPU 負(fù)載之間的區(qū)別题诵。許多人交替使用這兩個(gè)概念洁仗,這是不正確的。之后性锭,我們深入研究了用于檢索 CPU 利用率指標(biāo)的各種方法赠潦。

原文:https://www.baeldung.com/linux/get-cpu-usage

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市草冈,隨后出現(xiàn)的幾起案子她奥,更是在濱河造成了極大的恐慌,老刑警劉巖怎棱,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哩俭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拳恋,警方通過查閱死者的電腦和手機(jī)凡资,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谬运,“玉大人隙赁,你說(shuō)我怎么就攤上這事“鹋” “怎么了伞访?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)轰驳。 經(jīng)常有香客問我咐扭,道長(zhǎng),這世上最難降的妖魔是什么滑废? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任蝗肪,我火速辦了婚禮,結(jié)果婚禮上蠕趁,老公的妹妹穿的比我還像新娘薛闪。我一直安慰自己,他們只是感情好俺陋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布豁延。 她就那樣靜靜地躺著,像睡著了一般腊状。 火紅的嫁衣襯著肌膚如雪诱咏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天缴挖,我揣著相機(jī)與錄音袋狞,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛苟鸯,可吹牛的內(nèi)容都是我干的同蜻。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼早处,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼湾蔓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起砌梆,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤默责,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后咸包,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傻丝,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年诉儒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了葡缰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忱反,死狀恐怖泛释,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情温算,我是刑警寧澤怜校,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站注竿,受9級(jí)特大地震影響茄茁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巩割,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一裙顽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宣谈,春花似錦愈犹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至嗦嗡,卻和暖如春勋锤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侥祭。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工叁执, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茄厘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓徒恋,卻偏偏與公主長(zhǎng)得像蚕断,于是被迫代替她去往敵國(guó)和親欢伏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子入挣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容