日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

電腦cpu負(fù)載過高怎么解決 cpu利用率多少正常( 二 )


如果我們從 IPC的角度來看,這臺(tái)機(jī)器只運(yùn)行到其處理器最高速度的 19.5%(0.78 / 4.0) 。幸運(yùn)的是 , 在處理器內(nèi)部 , 有很多 PMU event,可用來幫助我們分析造成 CPU stall 的原因 。用好 PMU 需要我們熟悉處理器微架構(gòu),可以參考 Intel SDM 。
4. 最佳實(shí)踐是什么?如果 IPC < 1.0, 很可能是 Memory stall 占主導(dǎo),可從軟件和硬件兩個(gè)方面考慮這個(gè)問題 。軟件方面:減少不必要的訪存操作,提升 cache 命中率,盡量訪問本地節(jié)點(diǎn)內(nèi)存;硬件方面:增加 cache 容量,加快訪存速度,提升總線帶寬 。如果IPC > 1.0, 很可能是計(jì)算密集型的程序 ??梢栽噲D減少執(zhí)行指令的數(shù)量:消除不必要的工作 ?;鹧鎴DCPU flame graphs,非常適用于分析這類問題 。硬件方面:嘗試超頻、使用更多的 core 或 hyperthread 。作者根據(jù)PMU相關(guān)的工作經(jīng)驗(yàn),設(shè)定了1.0這個(gè)閾值,用于區(qū)分訪存密集型(memory-bound)和計(jì)算密集型(cpu-bound)程序 。讀者可以根據(jù)自己的實(shí)際工作平臺(tái),合理調(diào)整這個(gè)閾值 。
5. 性能工具應(yīng)該告訴我們什么?作者認(rèn)為,性能工具中使用 %CPU 時(shí)都應(yīng)該附帶上 IPC,或者將 %CPU 拆分為指令執(zhí)行消耗 cycle(%INS) 和 stalled 的 cycle(%STL) 。對應(yīng)到 top,在 Linux 系統(tǒng)有一個(gè)能夠顯示每個(gè)處理器 IPC 的工具 tiptop:

電腦cpu負(fù)載過高怎么解決 cpu利用率多少正常


6. 其他可能讓 CPU 利用率引起誤解的因素除了訪存導(dǎo)致的 stall 容易讓人誤解 CPU 利用率外,還有其他一些因素:
  • 溫度原因?qū)е绿幚砥?stall;
  • Turboboost 干擾了時(shí)鐘速率;
  • 內(nèi)核使得時(shí)鐘速率加快;
  • 平均帶來的問題:1分鐘利用率平均 80%,掩蓋了中間 100% 部分;
  • 自旋鎖: CPU 一直在被使用,同時(shí) IPC 也很高 , 但是應(yīng)用邏輯上并沒有任何進(jìn)展 。
7. 更新:CPU 利用率真的錯(cuò)了嗎?這篇文章引起了大量留言:
  • http://www.brendangregg.com/blog/2017-05-09/cpu-utilization-is-wrong.html 的留言欄;
  • https://news.ycombinator.com/item?id=14301739
  • CPU Utilization is Wrong fromprogramming

總結(jié)下作者的回答是:這里討論的并不是 iowait (那是磁盤IO),而且如果你已經(jīng)確認(rèn)是訪存密集型 , 是有些處理辦法(參考上面) 。
那么 CPU 利用率指標(biāo)是確確實(shí)實(shí)錯(cuò)誤的,還是只是容易誤導(dǎo)?如作者前面所說 , 他認(rèn)為許多人把高 CPU 利用率理解為瓶頸在 CPU 上,這一行為才是錯(cuò)誤的;
其實(shí)單看 CPU 利用率并不清楚瓶頸在何處,很多時(shí)候瓶頸是在外部 。這個(gè)指標(biāo)技術(shù)上看是否正確?如果 CPU stall 的周期并不能被其他地方使用,它們是不是也就因此是“忙于等待“(聽起來有點(diǎn)矛盾)?在有些情況,確實(shí)如此,你可以說 CPU 利用率作為操作系統(tǒng)級(jí)別的指標(biāo)技術(shù)上看是對的,但是容易產(chǎn)生誤導(dǎo) 。
從另一個(gè)角度來說 , 有超線程的情況下,那些 stalled 的周期是可以被其他線程使用的,這時(shí) “%CPU” 可能會(huì)將可用的周期統(tǒng)計(jì)為正在使用 , 這種情況是錯(cuò)誤的 。這篇文章作者想關(guān)注的是解釋清楚這個(gè)問題,并給出解決方法建議,但沒錯(cuò) , CPU 利用率這個(gè)指標(biāo)本身也是存在一些問題的 。
當(dāng)你可能會(huì)說利用率作為一個(gè)指標(biāo)已經(jīng)不對,Andrian Cockcroft之前討論已經(jīng)指出過 (http://www.hpts.ws/papers/2007/Cockcroft_HPTS-Useless.pdf ) 。
8. 結(jié)論【電腦cpu負(fù)載過高怎么解決 cpu利用率多少正?!?/strong>CPU 利用率已經(jīng)開始成為一個(gè)容易誤導(dǎo)的指標(biāo):它包含訪存導(dǎo)致的等待周期 , 這樣會(huì)影響一些新應(yīng)用 。也許 “%CPU” 應(yīng)該重命名為 “%CYC”(cycles的縮寫) 。要清楚知道 “%CPU” 的含義,需要使用其他指標(biāo)進(jìn)行輔助,其中就包括每周期指令數(shù)(IPC) 。IPC < 1.0 多半意味著訪存密集型 , IPC > 1.0 多半意味著計(jì)算密集型 。作者之前的文章中涵蓋有 IPC 說明,以及用于測量 IPC 的 Performance Monitoring Counters(PMCs)的介紹 。所有的性能監(jiān)控產(chǎn)品如果展示 “%CPU”,都應(yīng)該同時(shí)展示 PMC 指標(biāo)用于解釋其真實(shí)意義 , 不要誤導(dǎo)用戶 。比如,可以把 “%CPU” 和 “IPC” 一起放,或者說指令執(zhí)行消耗周期和 stalled 周期 。有這些指標(biāo)之后 , 開發(fā)者和操作者就能夠知道該如何更好地對應(yīng)用和系統(tǒng)進(jìn)行調(diào)優(yōu) 。

推薦閱讀