真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

CPU利用率如何計(jì)算

這篇文章主要介紹了CPU利用率如何計(jì)算,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊(duì),在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕十載,專業(yè)且經(jīng)驗(yàn)豐富。十載網(wǎng)站優(yōu)化營(yíng)銷經(jīng)驗(yàn),我們已為上千多家中小企業(yè)提供了成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)解決方案,按需開(kāi)發(fā)網(wǎng)站,設(shè)計(jì)滿意,售后服務(wù)無(wú)憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!

我們平時(shí)使用的CPU利用率方法是極具誤導(dǎo)性的,并且一年更甚一年。那么什么是CPU利用率?是你的CPU到底有多忙,是像“% CPU”這樣到處在用的指標(biāo)所顯示的那樣嗎?

在top命令里,你看到90%的CPU利用率是這樣:

CPU利用率如何計(jì)算

然而它真正想表達(dá)的是這個(gè)意思:

CPU利用率如何計(jì)算

Stall(這里譯作“怠速”)是說(shuō)這個(gè)處理器沒(méi)有在跑指令,比如在等待內(nèi)存I/O的時(shí)候。我上圖所畫的比例(“忙”與“怠速”之間)是我在真實(shí)生產(chǎn)環(huán)境中遇到的,并且你的CPU也很可能是處于“怠速”狀態(tài)。

這些對(duì)你有什么意義呢?理解CPU怠速多少,會(huì)直接影響到你在減少代碼或者減少內(nèi)存I/O的調(diào)優(yōu)工作。

那么真正的CPU利用率怎么算呢?

平時(shí)的CPU利用都是非空閑時(shí)間,即CPU不運(yùn)行idle線程(比如Windows里的空閑進(jìn)程)的時(shí)間。你的操作系統(tǒng)那會(huì)平時(shí)會(huì)在上下文切換的時(shí)候跟蹤它,但是假如一個(gè)非idle線程開(kāi)始運(yùn)行100毫秒后停止,那內(nèi)核會(huì)認(rèn)為后面這段時(shí)間CPU也在這個(gè)非idle線程上。

在老舊的分時(shí)系統(tǒng)里,這么算沒(méi)毛病。阿波羅登月艙的導(dǎo)航系統(tǒng)計(jì)算機(jī)將這里的idle線程叫做“DUMMY JOB”,工程師用利用它來(lái)測(cè)算計(jì)算機(jī)的利用率,可以參考之前我寫過(guò)的這樣一篇文章(鏈接地址:http://www.brendangregg.com/usemethod.html#Apollo)。

那么它有什么毛病呢?

現(xiàn)在的CPU比內(nèi)存已經(jīng)快了很多倍,但等待內(nèi)存的時(shí)間仍然被算進(jìn)CPU時(shí)間中。當(dāng)你在top命令中看到較高的“%CPU”的時(shí)候,你可能認(rèn)為它到達(dá)了一個(gè)性能瓶頸,就是散熱片和風(fēng)扇下面的那個(gè)CPU,但實(shí)際上,這是那一根根內(nèi)存條的鍋。

如何分辨CPU到底在忙啥?

使用性能監(jiān)測(cè)計(jì)數(shù)器(PMC)——一種能夠用perf或者其他工具命令查看的硬件計(jì)數(shù)器。比如,觀測(cè)整個(gè)系統(tǒng)10秒鐘:

# perf  stat -a -- sleep 10

Performance  counter stats for 'system wide':

641398.723351      task-clock  (msec)         #   64.116  CPUs  utilized            (100.00%)

379,651      context-switches                  #    0.592  K/sec                    (100.00%)

51,546      cpu-migrations                      #    0.080  K/sec                    (100.00%)

13,423,039      page-faults                       #    0.021 M/sec                  

1,433,972,173,374      cycles                         #    2.236  GHz                      (75.02%)

          stalled-cycles-frontend  

          stalled-cycles-backend    

1,118,336,816,068      instructions              #    0.78  insns  per cycle          (75.01%)

249,644,142,804      branches                    #  389.218  M/sec                    (75.01%)

7,791,449,769      branch-misses               #    3.12% of all  branches          (75.01%)

 

      10.003794539  seconds time elapsed

這里的一個(gè)關(guān)鍵指標(biāo)就是instructions per cylce(IPC,每CPU周期執(zhí)行指令數(shù)),它能夠顯示每CPU周期內(nèi)每個(gè)CPU運(yùn)行了多少指令,越高說(shuō)明效率越高。上述示例中,這一值為0.78,但這并不說(shuō)明CPU利用率為78%,因?yàn)楝F(xiàn)代CPU的IPC最大值為4.0(新的已經(jīng)到了5.0),也就是4-wide。CPU在執(zhí)行指令時(shí),單個(gè)指令會(huì)被分割為多個(gè)步驟,比如取指令、解碼、執(zhí)行、內(nèi)存訪問(wèn)、寫寄存器等,這些命令如果在單個(gè)CPU周期內(nèi)最多執(zhí)行一個(gè),那么需要5個(gè)CPU周期來(lái)完成一條命令,IPC就是0.2,如果采用指令流水線,即3~5-wide的CPU,那么完美狀態(tài)下1個(gè)CPU周期就可以完成一條命令,IPC就是1。(譯者注:作者文中使用了CPU clock cycle表示通常所說(shuō)的CPU周期,為了避免與晶振時(shí)鐘周期混肴我并沒(méi)有將其譯為CPU時(shí)鐘周期。)

當(dāng)然,還有數(shù)百個(gè)其他你可以用來(lái)測(cè)量的性能計(jì)數(shù)器。

如果在虛擬化環(huán)境中,guest一般不能直接訪問(wèn)PMC,這取決于hypervisor是否支持。我最近寫的一篇The PMCsof EC2: Measuring(鏈接地址:http://www.brendangregg.com/blog/2017-05-04/the-pmcs-of-ec2.html) IPC展示了AWS EC2中基于Xen的虛擬機(jī)如何使用PMC。

最佳實(shí)踐

如果你的IPC小于1.0,你可能遇到了內(nèi)存操作密集型,軟件調(diào)優(yōu)策略可以有減少內(nèi)存I/O,增強(qiáng)內(nèi)存本地訪問(wèn)性,尤其是在NUMA系統(tǒng)上。硬件調(diào)優(yōu)策略則是使用CPU cache較大以及更快的內(nèi)存、總線和內(nèi)聯(lián)技術(shù)。三門峽婦科醫(yī)院http://www.smxrlyy.com/

如果你的IPC > 1.0,你可能是指令密集型??梢栽噲D減少指令的執(zhí)行數(shù)量,比如消除不必要的工作和緩存操作等,可以用一下CPU火焰圖(鏈接地址:http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html)。硬件調(diào)優(yōu)方面,可以嘗試高主頻、多核、超線程的CPU。

性能檢測(cè)產(chǎn)品應(yīng)該告訴你什么呢?

性能檢測(cè)工具都應(yīng)該顯示出每個(gè)進(jìn)程的IPC,或者是按照指令周期與怠速周期,比如%INS和%STL,下圖為L(zhǎng)inux中的tiptop命令:

tiptop  -                  [root]

Tasks:  96  total,   3  displayed                                screen  0: default

 

  PID  [ %CPU] %SYS    P   Mcycle    Minstr   IPC  %MISS  %BMIS  %BUS  COMMAND

 3897    35.3  28.5    4   274.06    178.23  0.65   0.06   0.00   0.0 java

 1319+   5.5    2.6    6    87.32    125.55  1.44   0.34   0.26   0.0  nm-applet

  900    0.9    0.0    6    25.91    55.55  2.14    0.12   0.21   0.0 dbus-daemo

CPU利用率具有誤導(dǎo)性的其他理由

  1. 使得這個(gè)%CPU指標(biāo)錯(cuò)誤的理由除了CPU在內(nèi)存的怠速周期外,還有如下因素:

  2. 溫度也能使CPU進(jìn)入怠速;

  3. Turboboost(睿頻)引起時(shí)鐘頻率變化;

  4. SpeedStep引起時(shí)鐘頻率變化;

  5. 一分鐘內(nèi)的80%的平均利用率并不能表示100%的突發(fā)利用率(類似網(wǎng)絡(luò)QoS);

  6. 自旋鎖:CPU在很嚴(yán)肅地瞎忙;

Update: CPU利用率真的錯(cuò)了嗎?


自這篇文章發(fā)布以后,留言討論非常激烈,已經(jīng)有了上百條了。首先謝謝你們對(duì)這話題感興趣并花時(shí)間閱讀,但我在這里還是要統(tǒng)一回復(fù):我對(duì)disk的iowait并不關(guān)心(譯者注:PC CPU不能直接操作外部存儲(chǔ)),并且文中也已經(jīng)給出了內(nèi)存操作密集型的對(duì)應(yīng)調(diào)優(yōu)措施。

然而,CPU利用率到底是從本質(zhì)上錯(cuò)了還是僅僅是有誤導(dǎo)性了?我認(rèn)為需要人將高CPU利用率視為處理單元的瓶頸的事兒,是錯(cuò)的。那么這個(gè)指標(biāo)的計(jì)算方法從技術(shù)上講正確嗎?如果CPU在怠速期間不能被其他任何進(jìn)程使用,那么這不就是所謂的“使用等待”(聽(tīng)起來(lái)有點(diǎn)矛盾)。某些情況下,%CPU作為一個(gè)操作系統(tǒng)層面的指標(biāo)是技術(shù)正確但是容易誤導(dǎo)人的。在超線程中,怠速周期可以被其他線程使用,所以%CPU的算法也會(huì)將其算在內(nèi),而實(shí)際上并沒(méi)有利用。那樣是不對(duì)的,這篇文章中我強(qiáng)調(diào)的是解釋問(wèn)題并提出對(duì)策,并且,這個(gè)指標(biāo)也有技術(shù)上的問(wèn)題。

結(jié)論

CPU利用率已成為一個(gè)極具誤導(dǎo)性的指標(biāo):它算進(jìn)了等待主存的周期,而這類周期在現(xiàn)代的CPU負(fù)載中占據(jù)不少。如果使用額外指標(biāo),你就能搞清楚%CPU到底意味著什么,包括每CPU周期執(zhí)行指令數(shù)(IPC)。IPC < 1.0可能意味著你的應(yīng)用是內(nèi)存密集型,而IPC > 1.0則可能是指令密集型。我在之前的一篇文章,顯示%CPU的性能監(jiān)控產(chǎn)品也應(yīng)該顯示PMC測(cè)量指標(biāo),并給予充分解釋,這樣才不會(huì)誤導(dǎo)用戶。比如,它們可以一起顯示%CPU和IPC,或者指令周期與怠速周期。有了這些指標(biāo),開(kāi)發(fā)或管理人員才能在應(yīng)用和操作系統(tǒng)中選擇正確的調(diào)優(yōu)方式。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“CPU利用率如何計(jì)算”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


網(wǎng)頁(yè)題目:CPU利用率如何計(jì)算
鏈接分享:http://weahome.cn/article/gigcch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部