性能測試-CPU瓶頸分析的思路


CPU(中央處理器),是電子計算機的主要設備之一,電腦中的核心配件。CPU作為計算機系統的運算和控制核心,是信息處理、程序運行的最終執行單元。CPU的功效主要為處理指令、執行操作、控制時間、處理數據。

CPU性能相關指標

image

只看us那是不正確,不全面的。已圖上top命令為例,需要關注的CPU性能相關指標:

load average[系統平均負載]
us[用戶空間占用CPU百分比]
sy[內核空間占用CPU百分比]
ni[用戶進程空間內改變過優先級的進程占用CPU百分比]
id[空閑CPU百分比]
wa[等待輸入輸出的CPU時間百分比]
hi[硬中斷]
si[軟中斷]

平均負載

平均負載最理想的情況是等於CPU個數。

查詢CPU個數命令:lscpu

當平均負載高於 CPU 數量 70% 的時候,你就應該分析排查負載高的問題了。一旦負載過高,就可能導致進程響應變慢,進而影響服務的正常功能。最推薦的方法是持續觀察,判斷負載的變化趨勢,當發現負載有明顯升高趨勢時,進行分析判斷。

CPU利用率

在系統CPU分析過程中,(us,sy)當CPU利用率大於50%時,需要注意。當CPU利用率大於70%的時候,需要密切關注。當CPU利用率大約90%,情況就比較嚴重。當然每種情況下的CPU都有按需分析的可能。

以Java應用為例定位CPU瓶頸

1、jps 確定Java進程ID
2、top -Hp <pid> 確定進程內最耗費CPU的線程
3、printf “%x\n” <pid> 確定線程十六進制值
4、jstack <pid> | grep <線程十六進制值>  確定瓶頸代碼
注:當然也可以選用strace、perf這類linux的性能分析工具。還有類似arthas這類二次封裝的工具。

等待輸入輸出的CPU時間

wa指標升高時,需要關注分析判斷系統是否在做IO操作,是否有IO瓶頸。

io情況查詢命令:iostat

掃一掃,關注我


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM