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

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


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


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


導讀:本文翻譯自 Brendan Gregg 去年的一篇博客文章 “CPU Utilization is Wrong”,從標題就能想到這篇文章將會引起爭議 。文章一上來就說,我們“人人皆用、處處使用,每個性能監(jiān)控工具里都在用”的 top 命令里的 “%CPU” 指標,是不對的,其并非用于衡量 CPU 的繁忙程度的正確指標,作者譴責了一下眾人(或許也包括你我)的這一行為是具有很大的誤導性(deeply misleading)的,而且這種情況還在連年惡化 。對于這么大一頂帽子 , 讓我們暫且按下躁動的心,聽聽作者是怎么深入闡釋他的觀點的 。
1. 引言可能你認為的 90% CPU 利用率意味著這樣的情形:
電腦cpu負載過高怎么解決 cpu利用率多少正常


而實際卻可能是這樣的:
電腦cpu負載過高怎么解決 cpu利用率多少正常


CPU 并非 90% 的時間都在忙著,很大一部分時間在等待,或者說“停頓(Stalled)”了 。這種情況表示處理器流水線停頓,一般由資源競爭、數(shù)據(jù)依賴等原因造成 。多數(shù)情況下表現(xiàn)為等待訪存操作 , 其中又以讀操作為主 。在停頓周期內(nèi),不能執(zhí)行指令,這意味著你的程序不往前走 。
值得注意的是,圖中 “Stalled” 狀態(tài)所占的比例是作者依據(jù)生產(chǎn)環(huán)境中的典型場景計算而來,具有普遍現(xiàn)實意義 。因此,大多時候 CPU 處于停頓狀態(tài) , 而你卻不知道,因為 CPU 利用率這個指標沒有告訴你真相 。通過進一步分析 CPU 停頓的原因,可以指導代碼優(yōu)化,提高執(zhí)行效率,這是我們深入理解CPU微架構(gòu)的動力之一 。
2. CPU 利用率的真實含義是什么?我們通常所說的CPU利用率是指 “non-idle time”:即CPU不執(zhí)行 idle thread 的時間 。操作系統(tǒng)內(nèi)核會在上下文切換時記錄CPU的運行時間 。假設(shè)一個 non-idle thread 開始運行 , 100ms 后結(jié)束,內(nèi)核會認為這段時間內(nèi) CPU 利用率為 100% 。這種度量方式源于分時復用系統(tǒng) 。早在阿波羅登月艙的導航計算機中,idle thread 當時被叫做 “DUMMY JOB”,工程師通過比對運行 “DUMMY JOB” 和 “實際任務” 的時間來衡量導航系統(tǒng)的利用率 。那么這個所謂“利用率”的問題在哪兒呢?當今時代,CPU 執(zhí)行速度遠遠大于內(nèi)存訪問速度,等待訪存的時間成為占用 CPU 時間的主要部分 。當你在 top 中看到很高的 “%CPU”,你可能認為處理器是瓶頸,但實際上卻是內(nèi)存 。在過去很長一段時間內(nèi),CPU 頻率增長的速度大于 DRAM 訪存延時降低的速度(CPU DRAM gap),直到2005年前后,處理器廠商們才開始放棄“頻率路線”,轉(zhuǎn)向多核、超線程技術(shù) , 再加上多處理器架構(gòu),這些都導致訪存需求急劇上升 。盡管廠商通過增大 cache 容量、優(yōu)化 cache 策略、提升總線帶寬來試圖緩解訪存瓶頸,但我們的程序仍深受 CPU stall 困擾 。
3. 如何真正辨別 CPU 在做些什么?在 PMC(Performance Monitoring Counters) 的幫助下,我們能看到更多的 CPU 運行狀態(tài)信息 。下圖中,perf 采集了10秒內(nèi)全部 CPU 的運行狀態(tài) 。
電腦cpu負載過高怎么解決 cpu利用率多少正常


這里我們重點關(guān)注的核心度量指標是 IPC(instructions per cycle) , 它表示平均每個 CPU cycle 執(zhí)行的指令數(shù)量,很顯然該數(shù)值越大性能越好 。上圖中IPC 為 0.78 , 看起來還不錯,是不是 78% busy 呢?現(xiàn)代處理器一般有多條流水線,運行 perf 的那臺機器,IPC 的理論值可達到 4.0 。

推薦閱讀