Top
無明顯程序時如何排除高負載
我在筆記型電腦上執行 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
可能特別令人感興趣。