我的 Ubuntu 10.04 Lucid 虚拟机显示 CPU 使用率为 100%...但我只运行 Thunderbird。根据top
,CPU 使用率应为 ~25.9%...我该如何解释 top 中这个相互矛盾的输出?
top - 13:55:26 up 3:35, 4 users, load average: 3.03, 2.59, 2.48
Tasks: 178 total, 1 running, 177 sleeping, 0 stopped, 0 zombie
Cpu(s): 16.0%us, 79.7%sy, 0.0%ni, 0.0%id, 0.0%wa, 1.3%hi, 3.0%si, 0.0%st
Mem: 509364k total, 479108k used, 30256k free, 3092k buffers
Swap: 2096440k total, 58380k used, 2038060k free, 225116k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7708 jnet 20 0 480m 109m 17m S 18.4 22.1 21:59.14 thunderbird-bin
4615 jnet 20 0 5488 1268 1040 S 2.3 0.2 5:00.03 nx-rootless-ses
7124 jnet 20 0 56688 27m 4812 S 2.0 5.5 6:35.09 nxagent
6724 nx 20 0 9628 1400 636 S 1.6 0.3 3:26.59 sshd
30106 root 20 0 2544 1236 908 R 0.7 0.2 0:00.33 top
19 root 20 0 0 0 0 S 0.3 0.0 0:22.45 ata/0
38 root 20 0 0 0 0 S 0.3 0.0 0:05.53 scsi_eh_1
345 root 20 0 0 0 0 S 0.3 0.0 0:04.72 kjournald
1719 root 20 0 3260 1192 944 S 0.3 0.2 0:17.36 vmware-guestd
1 root 20 0 2804 1356 940 S 0.0 0.3 0:01.99 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.15 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
...
具体来说,我指的是 CPU 使用率总计显示 0% 空闲时间:
Cpu(s): 16.0%us, 79.7%sy, 0.0%ni, 0.0%id, 0.0%wa, 1.3%hi, 3.0%si, 0.0%st
然而,当我将列中的百分比相加时,%CPU
我得到的结果是 25.9%,而不是 100%!
编辑top
:下面是主机上的输出,显示我的虚拟机消耗了 92.1% 的 CPU 时间:
top - 14:19:40 up 6 days, 23:17, 2 users, load average: 5.48, 4.62, 4.25
Tasks: 149 total, 1 running, 148 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.0%us, 89.4%sy, 0.0%ni, 0.0%id, 4.3%wa, 0.7%hi, 3.7%si, 0.0%st
Mem: 1286008k total, 1256240k used, 29768k free, 812k buffers
Swap: 1048568k total, 35908k used, 1012660k free, 1026048k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21057 jnet 10 -10 1048m 417m 389m S 92.1 33.2 259:15.70 vmware-vmx
20218 jnet 20 0 27264 4188 3032 S 0.7 0.3 3:19.37 multiload-apple
23 root 15 -5 0 0 0 S 0.3 0.0 7:39.02 kswapd0
59 root 15 -5 0 0 0 D 0.3 0.0 3:04.76 kjournald2
1156 root 15 -5 0 0 0 S 0.3 0.0 2:22.05 kondemand/0
18619 jnet 20 0 2544 956 712 R 0.3 0.1 5:56.40 top
19780 root 20 0 215m 22m 6760 S 0.3 1.8 2:23.78 Xorg
20039 jnet 20 0 56512 10m 4452 S 0.3 0.8 2:13.21 compiz
20285 jnet 20 0 93900 23m 5324 S 0.3 1.9 3:37.65 vmware
21016 jnet 20 0 63304 6644 3620 S 0.3 0.5 0:21.08 vmware-unity-he
1 root 20 0 2008 340 284 S 0.0 0.0 0:01.05 init
编辑2:一定是驱动程序出了问题,因为重启后就解决了。真奇怪……
答案1
我并不是 100% 确定,但看起来内核驱动程序或内核本身正在消耗其余部分。
在 CPU 行中您会看到“79.7%sy”。
也许其中一个虚拟机驱动程序正在疯狂运行?您可以在主机系统上检查这些值。如果有更多的空闲时间,也许这是预期的行为(虚拟机永远不会有空闲时间,因为只有主机显示它)。
答案2
si = 软件中断 sy = 系统/内核 us = 用户空间
奇怪的是,您的系统/内核似乎占用了大部分 CPU 功率。如果 IDLE 显示占用了大量 CPU 功率,那也没什么奇怪的,但这是系统问题。我最好的猜测是,这可能与虚拟机 CPU 的工作方式有关,也许它以不同的方式报告状态。如果您手边有另一台 ubuntu 虚拟机,请尝试在其上运行 top,看看是否得到相同的结果。
如果这不是问题,那么我能想到的唯一原因就是 rootkit。如果编码不当,rootkit 可能会导致大量内核活动以隐藏自身。祝你好运。