欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

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

    1. 引言

    可能你認(rèn)為的 90% 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 利用率這個指標(biāo)沒有告訴你真相。通過進一步分析 CPU 停頓的原因,可以指導(dǎo)代碼優(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)核會認(rèn)為這段時間內(nèi) CPU 利用率為 100%。這種度量方式源于分時復(fù)用系統(tǒng)。早在阿波羅登月艙的導(dǎo)航計算機中,idle thread 當(dāng)時被叫做 “DUMMY JOB”,工程師通過比對運行 “DUMMY JOB” 和 “實際任務(wù)” 的時間來衡量導(dǎo)航系統(tǒng)的利用率。那么這個所謂“利用率”的問題在哪兒呢?當(dāng)今時代,CPU 執(zhí)行速度遠(yuǎn)遠(yuǎn)大于內(nèi)存訪問速度,等待訪存的時間成為占用 CPU 時間的主要部分。當(dāng)你在 top 中看到很高的 “%CPU”,你可能認(rèn)為處理器是瓶頸,但實際上卻是內(nèi)存。在過去很長一段時間內(nèi),CPU 頻率增長的速度大于 DRAM 訪存延時降低的速度(CPU DRAM gap),直到2005年前后,處理器廠商們才開始放棄“頻率路線”,轉(zhuǎn)向多核、超線程技術(shù),再加上多處理器架構(gòu),這些都導(dǎo)致訪存需求急劇上升。盡管廠商通過增大 cache 容量、優(yōu)化 cache 策略、提升總線帶寬來試圖緩解訪存瓶頸,但我們的程序仍深受 CPU stall 困擾。

    3. 如何真正辨別 CPU 在做些什么?

    在 PMC(Performance Monitoring Counters) 的幫助下,我們能看到更多的 CPU 運行狀態(tài)信息。下圖中,perf 采集了10秒內(nèi)全部 CPU 的運行狀態(tài)。

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

    如果我們從 IPC的角度來看,這臺機器只運行到其處理器最高速度的 19.5%(0.78 / 4.0)。幸運的是,在處理器內(nèi)部,有很多 PMU event,可用來幫助我們分析造成 CPU stall 的原因。用好 PMU 需要我們熟悉處理器微架構(gòu),可以參考 Intel SDM。

    4. 最佳實踐是什么?

    如果 IPC < 1.0, 很可能是 Memory stall 占主導(dǎo),可從軟件和硬件兩個方面考慮這個問題。軟件方面:減少不必要的訪存操作,提升 cache 命中率,盡量訪問本地節(jié)點內(nèi)存;硬件方面:增加 cache 容量,加快訪存速度,提升總線帶寬。如果IPC > 1.0, 很可能是計算密集型的程序。可以試圖減少執(zhí)行指令的數(shù)量:消除不必要的工作。火焰圖CPU flame graphs,非常適用于分析這類問題。硬件方面:嘗試超頻、使用更多的 core 或 hyperthread。作者根據(jù)PMU相關(guān)的工作經(jīng)驗,設(shè)定了1.0這個閾值,用于區(qū)分訪存密集型(memory-bound)和計算密集型(cpu-bound)程序。讀者可以根據(jù)自己的實際工作平臺,合理調(diào)整這個閾值。

    5. 性能工具應(yīng)該告訴我們什么?

    作者認(rèn)為,性能工具中使用 %CPU 時都應(yīng)該附帶上 IPC,或者將 %CPU 拆分為指令執(zhí)行消耗 cycle(%INS) 和 stalled 的 cycle(%STL)。對應(yīng)到 top,在 Linux 系統(tǒng)有一個能夠顯示每個處理器 IPC 的工具 tiptop:

    6. 其他可能讓 CPU 利用率引起誤解的因素

    除了訪存導(dǎo)致的 stall 容易讓人誤解 CPU 利用率外,還有其他一些因素:
    • 溫度原因?qū)е绿幚砥?stall;
    • Turboboost 干擾了時鐘速率;
    • 內(nèi)核使得時鐘速率加快;
    • 平均帶來的問題:1分鐘利用率平均 80%,掩蓋了中間 100% 部分;
    • 自旋鎖: CPU 一直在被使用,同時 IPC 也很高,但是應(yīng)用邏輯上并沒有任何進展。

    7. 更新:CPU 利用率真的錯了嗎?

    這篇文章引起了大量留言:

    • http://www.brendangregg.com/blog/2017-05-09/cpu-utilization-is-wrong.html 的留言欄;

    • https://news.ycombinator.com/item?id=14301739

    • https://www.reddit.com/r/programming/comments/6a6v8g/cpu_utilization_is_wrong/

    總結(jié)下作者的回答是:這里討論的并不是 iowait (那是磁盤IO),而且如果你已經(jīng)確認(rèn)是訪存密集型,是有些處理辦法(參考上面)。

    那么 CPU 利用率指標(biāo)是確確實實錯誤的,還是只是容易誤導(dǎo)?如作者前面所說,他認(rèn)為許多人把高 CPU 利用率理解為瓶頸在 CPU 上,這一行為才是錯誤的;

    其實單看 CPU 利用率并不清楚瓶頸在何處,很多時候瓶頸是在外部。這個指標(biāo)技術(shù)上看是否正確?如果 CPU stall 的周期并不能被其他地方使用,它們是不是也就因此是“忙于等待“(聽起來有點矛盾)?在有些情況,確實如此,你可以說 CPU 利用率作為操作系統(tǒng)級別的指標(biāo)技術(shù)上看是對的,但是容易產(chǎn)生誤導(dǎo)。

    從另一個角度來說,有超線程的情況下,那些 stalled 的周期是可以被其他線程使用的,這時 “%CPU” 可能會將可用的周期統(tǒng)計為正在使用,這種情況是錯誤的。這篇文章作者想關(guān)注的是解釋清楚這個問題,并給出解決方法建議,但沒錯,CPU 利用率這個指標(biāo)本身也是存在一些問題的。

    當(dāng)你可能會說利用率作為一個指標(biāo)已經(jīng)不對,Andrian Cockcroft之前討論已經(jīng)指出過 (http://www.hpts.ws/papers/2007/Cockcroft_HPTS-Useless.pdf )。

    8. 結(jié)論

    果您近期發(fā)現(xiàn)電腦的CPU占用率過高,別著急,這可能并不是你應(yīng)用程序的問題,而罪魁禍?zhǔn)卓赡芴幵谀愕南到y(tǒng)端。源于 Windows 10 2019 五月(Version 1903)發(fā)布的累積更新。

    根據(jù)微軟的說法,問題出在SearchUI.exe 這款應(yīng)用程序上。目前正在調(diào)查用戶在安裝了8月30日的可選更新(KB4512941)后,上報的與SeachUI.EXE相關(guān)的CPU使用率過高問題,將在即將發(fā)布的更新中修復(fù)。

    不過,微軟未透露遭遇性能問題的設(shè)備數(shù)量,但表示該問題僅影響Windows 10 1903,并不涉及其它Windows 10版本。需要指出的是,即便重啟了PC,似乎也無法解決這個性能問題。若你在啟動到桌面后遭遇高CPU使用率問題,請考慮卸載掉KB4512941,或等待官方的正式解決方案。

    編輯點評:

    如上文所述的問題其實不是個大問題,大家也不必驚慌, 如果中招暫時的解決方案就是避免耗費CPU資源的應(yīng)用,相信官方很快就會拿出解決方案。

    【ZOL客戶端下載】看最新科技資訊,APP市場搜索“中關(guān)村在線”,客戶端閱讀體驗更好。(7260447)

    服務(wù)器的運行中,關(guān)于內(nèi)存和 CPU 的合理占用率是一個關(guān)鍵問題。以下是一些通常的配置范圍建議:

    建議服務(wù)器的 CPU 使用率不高于 80%,內(nèi)存使用率也不高于 80%。但需要注意的是,具體的合理占用情況還需依據(jù)服務(wù)器的實際負(fù)載以及應(yīng)用場景來準(zhǔn)確判斷。

    內(nèi)存使用率方面:

    這里所指的內(nèi)存是物理內(nèi)存,而非頁面內(nèi)存。如果內(nèi)存使用率長期處于 80%以上,意味著服務(wù)器的內(nèi)存資源相當(dāng)緊張,在高峰時段可能會面臨系統(tǒng)崩潰的風(fēng)險。此時,可以考慮增加內(nèi)存容量,或者對應(yīng)用程序內(nèi)存使用進行優(yōu)化。更多配置網(wǎng)頁搜218.0.48.3:8802

    相反,如果內(nèi)存使用率長期低于 30%,則表明服務(wù)器的內(nèi)存資源未得到充分利用,存在一定的浪費現(xiàn)象。這種情況下,可以考慮降低內(nèi)存容量,或者部署更多的應(yīng)用來提升內(nèi)存的利用率。

    CPU 使用率方面:

    若 CPU 使用率長期高于 80%,說明服務(wù)器的 CPU 資源較為緊張,可能會導(dǎo)致性能下降,在高峰期甚至有系統(tǒng)崩潰的危險。此種狀況下,建議考慮升級 CPU ,或者對程序代碼進行優(yōu)化以改善 CPU 的使用情況。

    然而,如果 CPU 使用率長期低于 20%,則表示服務(wù)器的 CPU 資源沒有被充分利用,同樣存在浪費現(xiàn)象。這時,可以考慮降低 CPU 規(guī)格。

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有