Top

無明顯程序時如何排除高負載

  • March 23, 2018

我在筆記型電腦上執行 Ubuntu 13.10。最近,從睡眠中醒來後,我注意到電腦很熱,檢查頂部並發現平均負載為 1.00。我關閉了 Chrome,各種守護程序,沒有效果。

我重新啟動並啟動了一個終端並再次檢查頂部,並看到負載迅速飆升至 1.75,然後慢慢恢復到 1.0 - 1.2 左右:

top - 09:49:17 up 36 min,  2 users,  load average: 1.01, 1.10, 1.01
Tasks: 267 total,   1 running, 266 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.9 us,  0.4 sy,  0.0 ni, 98.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   8069288 total,  2885572 used,  5183716 free,   123652 buffers
KiB Swap:  7711332 total,        0 used,  7711332 free,  1661816 cached

 PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                                                                                                        
1420 root      20   0  589m 144m 131m S   3.4  1.8   0:36.49 Xorg                                                                                                                                           
6233 user1    20   0  986m  83m  31m S   2.7  1.1   0:19.89 chrome                                                                                                                                         
3708 user1    20   0  749m  19m  12m S   1.8  0.3   0:06.58 gnome-terminal                                                                                                                                 
3526 user1    20   0 1350m  67m  28m S   1.4  0.9   0:26.19 compiz                                                                                                                                         
4014 user1    20   0 1022m 126m  52m S   1.1  1.6   0:44.34 chrome                                                                                                                                         

我手動檢查了 /proc/loadavg,同樣的故事:

sudo cat /proc/loadavg
1.20 1.16 0.99 3/614 6254

ps auxwwwf 沒有顯示任何程序消耗超過 6.0% 的 CPU。

iostat:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          0.63    0.00    0.13    0.00    0.00   99.25

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

免費-m:

            total       used       free     shared    buffers     cached
Mem:          7880       2841       5039          0        120       1651
-/+ buffers/cache:       1068       6811
Swap:         7530          0       7530

顯然某些程序正在使 CPU 飽和,但它似乎沒有出現在程序列表中。某種隱藏的 Linux 文件系統檢查器?根包?任何想法如何找到有問題的過程?

平均負載並不意味著您認為它意味著什麼。這與即時 CPU 使用率無關,而是有多少程序正在等待執行。通常這是因為很多東西都需要 CPU,但並非總是如此。一個常見的罪魁禍首是等待 IO 的程序 - 磁碟或網路。

嘗試執行ps -e v並查找程序狀態標誌。

state    The state is given by a sequence of characters, for example, "RWNA". The      first character indicates the run state of the process:
D    Marks a process in disk (or other short term, uninterruptible) wait.
I    Marks a process that is idle (sleeping for longer than about 20 seconds).  
L    Marks a process that is waiting to acquire a lock.
R    Marks a runnable process.
S    Marks a process that is sleeping for less than about 20 seconds.
T    Marks a stopped process.
W    Marks an idle interrupt thread.
Z    Marks a dead process (a "zombie").

這來自ps聯機幫助頁,因此您可以在那裡找到更多詳細資訊 -R過程D可能特別令人感興趣。

引用自:https://unix.stackexchange.com/questions/130955