當前位置:
首頁 > 科技 > CPU使用率度量指標是扯淡!

CPU使用率度量指標是扯淡!

CPU使用率度量指標是扯淡!



作者簡介:Brendan D. Gregg目前在Netflix從事大規模雲計算性能方面的工作。


我們用來衡量CPU使用率(CPU utilization)的指標具有極大的誤導性,而且一年比一年來得誤人子弟。CPU使用率到底是什麼?你的處理器有多忙碌?不,那不是CPU使用率衡量的方面。沒錯,我在這裡所說的是每個人在到處使用的「%CPU」這個度量指標,用於每一款性能監控產品中。用top(1)命令來查看。


你可能認為90%的CPU使用率意味著:

而實際上它可能意味著:


停滯(stalled)意味著處理器在處理指令方面沒有進展,通常是由於處理器在等待內存輸入/輸出。我在上面劃分的比例(忙碌和停滯之間)是我在實際的生產環境中經常看到的情形。你很可能基本上處於停滯狀態,但渾然不知罷了。


這對你來說意味著什麼呢?了解你的多少CPU處於停滯狀態可以指導減少代碼或減少內存輸入/輸出之間的性能調優工作。誰要是在關注CPU性能,尤其是在根據CPU自動擴展資源的雲,如果知道%CPU中停滯的部分,那將大有益處。


CPU使用率其實是什麼東東?


我們稱為CPU使用率的衡量指標其實是「非閑置時間」(non-idle time):也就是CPU未運行閑置線程的時間。你的操作系統內核(無論它是什麼內核)通常在上下文切換過程中跟蹤這個指標。如果非閑置進程開始運行,然後停止100毫秒,內核還是認為該CPU在那整段時間都被使用。


這個度量指標的歷史與分時系統一樣久遠。Apollo Lunar Module制導計算機(一種開創性的分時系統)稱其閑置線程為「DUMMY JOB」,工程師們跟蹤了運行該閑置線程的周期和運行實際任務的周期,將這視作是一個衡量計算機使用率的重要指標。


那麼這個指標哪裡不對勁呢?


現如今,CPU的速度已變得比主內存快得多,等待內存在仍然所謂的「CPU使用率」中佔了大頭。如果你看到數值很高的%CPU,可能認為處理器是瓶頸(即散熱片和風扇下面的CPU封裝件),而實際上那些DRAM模組才是瓶頸。


這方面的情形一直變得越來越嚴峻。長期以來,處理器廠商提高時鐘速度的幅度超過DRAM提高訪問延遲的幅度,這就是所謂的「CPU DRAM缺口」( CPU DRAM gap)。這種情形在3 GHz處理器面世的2005年前後趨穩;自那以後,處理器使用更多的核心和超線程來提升性能,另外使用多插座配置,這一切給內存子系統提出了更高的要求。處理器廠商試圖採用更龐大、更智能的CPU緩存以及更快速的內存匯流排和互連技術來緩解這個內存瓶頸。但是我們仍然通常處於停滯狀態。


如何表明CPU到底在處理什麼?

# 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%)


這裡一個關鍵的度量指標是每個周期指令(即IPC),該度量指標顯示了我們在每個CPU時鐘周期平均完成了多少個指令。簡單來說,這個值越高越好。上面例子中的0.78聽起來不賴(78%的時間段處於忙碌狀態);但如果你意識到該處理器的最高速度下IPC是4.0,就不這麼認為了。這又叫4-wide,是指指令取出/解碼路徑。這意味著,CPU每個時鐘周期可以retire(完成)四個指令。所以,在4-wide系統上IPC為0.78,意味著CPU的運行速度是其最高速度的19.5%。新的英特爾Skylake處理器是5-wide。


你可以用來進一步鑽研的PMC要多數百個:可以按不同的類型,直接測量停滯的周期。


在雲端


如果你在虛擬環境中,可能無法訪問PMC,這要看虛擬機管理程序是否為訪客(guest)支持PMC。我最近寫過一篇文章:《EC2的PMC:測量IPC》(http://www.brendangregg.com/blog/2017-05-04/the-pmcs-of-ec2.html),表明了如今PMC如何可用於基於Xen的AWS EC2雲上面的專用主機類型。


實際對策


如果你的IPC < 1.0,你可能遇到了內存停滯,軟體調優策略包括減少內存輸入/輸出,改進CPU緩存和內存局部性(memory locality),尤其是在NUMA系統上。硬體調優策略包括:使用CPU緩存比較大的處理器以及速度比較快的內存、匯流排和互連技術。


如果你的IPC > 1.0,你可能是指令密集型。想方設法減少代碼執行:消除不必要的工作和緩存操作等。CPU火焰圖(http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html)是一款很適合開展這項調查的工具。至於硬體調優,不妨試一試更快的時鐘頻率和數量更多的核心/超線程。


性能監測產品應該能告訴你什麼?

每一款性能工具應該顯示IPC以及%CPU。或者將%CPU分解成指令完成周期與停滯周期,比如%INS和%STL。


面向Linux的tiptop(1)可按進程顯示IPC:


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使用率具有誤導性的其他理由


讓CPU使用率具有誤導性的不僅僅是內存停滯周期。其他因素包括如下:

溫度過高導致處理器停滯。


睿頻加速(Turboboost)導致時鐘頻率不一。


內核因speedstep導致時鐘頻率不一。


平均值方面的問題:1分鐘內的使用率為80%,隱藏了100%的突發使用率。


自旋鎖:CPU被使用,有很高的IPC,但是應用程序在處理指令方面沒有合理的進展。


結束語


CPU使用率已成為一個極具誤導性的度量指標:它包括了等待主內存的周期,而這類周期在現代工作負載中佔了大頭。如果使用額外的度量指標,你就能搞清楚%CPU到底意味著什麼,包括每個周期指令(IPC)。IPC < 1.0可能意味著內存密集型,而IPC > 1.0可能意味著指令密集型。我在之前的一篇文章(http://www.brendangregg.com/blog/2017-05-04/the-pmcs-of-ec2.html)中介紹了IPC,包括介紹了衡量IPC所需要的性能監控計數器(PMC)。


顯示%CPU的性能監控產品還應該顯示PMC度量指標,解釋那個值意味著什麼,那樣才不會誤導最終用戶。比如說,它們可以一併顯示%CPU及IPC,以及/或指令完成周期與停滯周期。有了這些度量指標,開發人員和操作人員才能決定如何才能更好地調優應用程序和系統。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲頭條 的精彩文章:

真要上天?ofo擬一年內開始發射衛星,最終或部署60顆
中國工程師承認竊取了 IBM 的源代碼
博通出價 200 億美元競購東芝內存業務!
年薪最高的十大架構師認證!
第六屆OpenStack黑客松,挑戰社區最新Bug

TAG:雲頭條 |

您可能感興趣

用數據說話,BCH眾多指標已經碾壓LTC
GDP 是一個好的衡量經濟發展的指標么?
性能不是衡量手機的唯一指標,R17 Pro才是今年水桶機標準
衡量偶像公司最重要的指標是專輯銷量?JYP逆轉勝的方法是什麼
三季度經濟指標出爐 全球GDP增速「不好看」
線下廣告效果收費指標CPV和CPIV的優劣和作用
《BMJ》BMI是判斷肥胖的最好指標?建議不同人群用不同指標!
數據中心的冷卻度量指標
八大指標衡量經濟發展質量,GDP快馬跑得穩
HRBP三個核心指標——效能指標、隊伍指標、職能指標
想減脂,運動強度多大合適?心率是唯一指標
OpenAI打造特殊ML量化指標平台,修正過度學習AI難題
數據顯示:BTC市場活躍程度有所降低,各項數據指標均下降
心率,運動必看的指標,如何用心率指導你提高成績
全部一級指標的頭顯:HTC VIVE PRO專業版通過通用規範
PowerBI作圖技巧:創建度量值進行動態指標分析
為何BOD和COD盛行水處理行業而不是其他指標?
OPPO K3為低價高配代言,這些硬核指標了解一下
忘記BMI指數吧,科學家找到了更準確衡量肥胖的新指標
vivoNEX勢不可擋:各項指標遠超KPL官方測試,你還離五殺有多遠?