我在笔记本电脑上运行 Ubuntu 13.10。最近,从睡眠中醒来后,我发现计算机很热,检查顶部并发现平均负载为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
Run Code Online (Sandbox Code Playgroud)
我手动检查了 /proc/loadavg,同样的故事:
sudo cat /proc/loadavg
1.20 1.16 0.99 3/614 6254
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
免费-m:
total used free shared buffers cached
Mem: 7880 2841 5039 0 120 1651
-/+ buffers/cache: 1068 6811
Swap: 7530 0 7530
Run Code Online (Sandbox Code Playgroud)
显然,某些进程使 CPU 饱和,但它似乎没有出现在进程列表中。某种隐藏的 Linux 文件系统检查器?根工具包?任何想法如何找到有问题的过程?
Sob*_*que 26
平均负载并不意味着你认为它意味着什么。这不是关于即时 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").
Run Code Online (Sandbox Code Playgroud)
这是从ps
手册页,所以你可以找到更详细的有-R
和D
过程可能是特别感兴趣的。