Linux
sar 和 top 顯示高 cpu 使用率,但 vmstat 和 ps 顯示低 cpu 使用率。為什麼?
我正在診斷一個高 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 上的性能工具有多好。真的,如果這台主機要繼續提供價值,就應該升級。再次獲得安全更新,如果沒有別的。