Linux

sar 和 top 顯示高 cpu 使用率,但 vmstat 和 ps 顯示低 cpu 使用率。為什麼?

  • July 27, 2020

我正在診斷一個高 CPU 使用率事件,我發現 中的數字之間存在奇怪的差異ps/vmstat,顯示幾乎為 0%,sar/top而 顯示幾乎為 100%(使用者 + 系統):

sar 1 5
Linux 2.6.9-67.ELsmp (uxdfl712)         07/25/2020

01:48:31 PM       CPU     %user     %nice   %system   %iowait     %idle
01:48:32 PM       all     43.83      0.00     56.17      0.00      0.00
01:48:33 PM       all     42.68      0.00     57.32      0.00      0.00
01:48:34 PM       all     42.57      0.00     57.43      0.00      0.00
01:48:35 PM       all     43.18      0.00     56.82      0.00      0.00
Average:          all     43.14      0.00     56.86      0.00      0.00

vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
32  0      0 10493612 233320 4485160    0    0     0    14    0     1  0  0 100  0

ps -e hao %cpu | awk '{ sum += $1 } END { print sum }'
0.2

top -bn 1 |
sed '1,/PID USER      PR  NI %CPU/d' |
awk '{ sum += $5 } END { print sum }'
398

我在 StackExchange 和其他地方進行了很多搜尋,但我只能找到有關虛擬化內容(這是一台物理機器)和 CPU 負載的參考資料,這不是我的問題。我也檢查了/proc/<PID>/stat,但沒有發現任何提示。

為什麼這些命令顯示不同的數字?他們實際上是在查詢不同的東西嗎?或者執行檔可能太舊和錯誤(請參閱下面的伺服器數據 - 我確實對它的過時程度感到恐懼)。

謝謝!

uname -r
2.6.9-67.ELsmp

cat /etc/redhat-release
Red Hat Enterprise Linux ES release 4 (Nahant Update 6)

yum provides `which sar` | grep installed
sysstat.i386                             5.0.5-16.rhel4         installed       

yum provides `which vmstat` | grep installed
procps.i386                              3.2.3-8.9              installed       

yum provides `which ps`
<Too many providers>
ps -V
procps version 3.2.3

yum provides `which top` | grep installed
procps.i386                              3.2.3-8.9              installed       

grep -c processor /proc/cpuinfo 
4

這是一個間歇性的、偶爾的負載。vmstat 的第一行gives averages since the last reboot,顯然在這台主機上大部分時間都是空閒的。隨後的行顯示採樣週期的數據,這將更接近 sar 報告的數據。

0% 長時間閒置一般不好。但是 CPU 耗盡的嚴重程度實際上取決於系統和應用程序。

評估應用程序在此框上的執行情況。對使用者請求的響應時間如何?是否及時進行批處理?如果您的績效預期沒有得到滿足,那就是改進的理由。

除了硬體時代,這是較舊的軟體;RHEL 4 於 8 年前進入擴展支持階段。在現代 Linux 上,準確查找 CPU 上的內容很容易。安裝調試符號,然後執行perf top. 任何東西都可以被詳細檢測。但是,我不記得 RHEL 4 上的性能工具有多好。

真的,如果這台主機要繼續提供價值,就應該升級。再次獲得安全更新,如果沒有別的。

引用自:https://serverfault.com/questions/1026721