当没有明显的进程时如何解决高负载问题

当没有明显的进程时如何解决高负载问题

我在笔记本电脑上运行 Ubuntu 13.10。最近,从睡梦中醒来后,我发现电脑很热,检查top发现平均负载为1.00。我关闭了 Chrome,各种守护进程,没有效果。

我重新启动并启动终端并再次检查 top,发现负载迅速飙升至 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 文件系统检查器?根工具包?有什么想法如何找到有问题的进程吗?

答案1

平均负载并不代表您所认为的意思。这与即时 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流程可能特别令人感兴趣。

相关内容