天天看點

性能測試之cpu 分析

作者:lT點工小橙子

cpu 架構 --中央處理器

  • 運算器: 真正進行計算的單元
  • 控制器: leader
  • 寄存器: 存儲 指令、資料、位址
  • 時鐘 控制程式運作時長

記憶體

程式代碼、網絡資料,外部資料進入cpu的橋梁,記憶體的速度,要比cpu的速度

cpu 檢視

top

lscpu

性能測試之cpu 分析

cat/proc /proc 虛拟檔案,作業系統啟動時,讀取的資訊,這些資訊放記憶體中

`cat /proc/cpuinfo |grep "physical id" |sort |uniq |wc -l ` 檢視實體cpu數量

sort 排序 uniq 去重 wc-l 統計行數 
`cat /proc/cpuinfo | grep "cpu cores" |uniq `檢視CPU的core數,即核數
`cat /proc/cpuinfo | grep "processor" |wc -l` 檢視邏輯CPU數量           
性能測試之cpu 分析

cpu狀态分析

us  使用者程序空間中未改變過優先級的程序占用CPU百分比  -使用者程序
sy:  核心空間占用CPU百分比  -系統程序 
ni:  使用者程序空間内改變過優先級的程序占用CPU百分比 -由核心進入非核心的狀态切換的耗時
id: 空閑時間百分比
wa:空閑&等待I/O的時間百分比  -資源不夠時導緻cpu處于等待時間
hi:  硬中斷時間百分比  -程式切換
si:   軟中斷時間百分比  -管理者自願切換
st:虛拟化時被其餘VM竊取時間百分比           
性能測試之cpu 分析

load average值 =cpu(cpuload )+ (disk+網絡+外設 的負載 ==ioload)

CPU的使用:使用者程序使用時間us、系統核心運作時間Sy、空閑時間idle、管理被搶占時間st

繁忙時: us+ys+st+si+hi+ni 等于cpu使用率的時間

空閑時: idle+wa 的時間

常見cpu耗時分析:

  • sy: 主要應用于上下文切換 (寄存器中的資源進行切換), 可能會有上下文切換的問題,上下文切換分為自願和非自願切換

自願上下文切換: 可能是因為 記憶體瓶頸

非自願上下文切換: 可能是因為 cpu瓶頸, 搶占資源所導緻的 (被迫執行優先級更高的指令或指令執行的時間已經到了 被迫中止目前的指令,去執行其他指令)

  • us&ni: 使用者運作計算 可能是 cpu密集計算 或 死循環 或 FGC ( full gc,即對整個堆的垃圾回收 耗時長)
  • si: 軟中斷 可能是 資源不足或者io問題 導緻的cpu搶占資源
  • wa :io 磁盤問題導緻的 等待
  • st:主控端搶占資源

load 和cpu 高時分析方法

場景1:sy 系統程序高 -------排查cpu的上下文切換

原因:

1 如果,非自願上下文切換’多,說明cpu不夠用,程序時間片到,被迫切換

2 如果 自願上下文切換 多,說明計算用的資源不夠用,可能存在I/0、記憶體瓶頸

場景2:si 軟中斷高 -------排查cpu搶占資源 結合sy 系統程序檢視

1 sys高+si高 推導出===>記憶體 or 網絡I/o問題----解決辦法:排查記憶體 和 I/o

2 sys高 +si不高 推導出===>CPU瓶頸---解決辦法之一:加CPU

場景3:us 使用者程序态高 -------使用者程式計算

密集計算 或 死循環 或 FGC,線程池 逐漸排查