查看我们服务器上的 top 输出时,我的一位同事告诉我,某些进程的“%CPU”低于 100 是因为我运行了太多进程。他补充说,根据他的经验,如果我运行的进程少于 6 个,那么所有进程的“%CPU”可能都会达到 100。
我不想给其他用户添麻烦,但我怀疑他说的是否正确。该服务器有 16 个核心,当前负载平均值在 10 到 11 之间。据我了解,它没有超载。但我不知道为什么有些进程的“%CPU”低于 100?真的是因为我吗?
感谢致敬!
以下是 top 的输出:
top - 16:34:13 up 32 days, 1:36, 12 users, load average: 10.61, 10.39, 10.22
Tasks: 380 total, 10 running, 370 sleeping, 0 stopped, 0 zombie
Cpu(s): 55.0%us, 1.7%sy, 0.0%ni, 42.2%id, 0.5%wa, 0.1%hi, 0.4%si, 0.0%st
Mem: 130766620k total, 39859784k used, 90906836k free, 849412k buffers
Swap: 47351548k total, 279456k used, 47072092k free, 19792956k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17197 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4510:11 MLtest
28762 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4633:01 MLtest
29249 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4623:03 MLtest
29560 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4626:59 MLtest
4904 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4757:12 MLtest
5143 tim 18 -2 1315m 1.3g 1504 R 100 1.0 4759:40 MLtest
29389 tim 18 -2 1315m 1.3g 1504 R 99 1.0 4622:11 MLtest
5285 tim 18 -2 1315m 1.3g 1504 R 97 1.0 4758:49 MLtest
4763 tim 18 -2 1315m 1.3g 1504 R 93 1.0 4754:22 MLtest
9456 zma 18 -2 206m 85m 11m S 48 0.1 60:46.78 dropbox
7527 vals 18 -2 1266m 436m 42m S 4 0.3 613:57.10 MATLAB
2903 root 15 -5 0 0 0 S 1 0.0 19:00.01 rpciod/0
19133 vals 18 -2 1380m 503m 42m S 1 0.4 798:47.99 MATLAB
12454 tim 18 -2 19248 1588 1024 R 1 0.0 0:48.88 top
12 root RT -5 0 0 0 S 1 0.0 35:01.05 migration/3
2924 root 15 -5 0 0 0 S 1 0.0 27:20.92 nfsiod
12690 jun 18 -2 913m 84m 2684 S 1 0.1 121:55.65 MATLAB
19650 jun 18 -2 19244 1600 1028 S 1 0.0 6:5
答案1
答案2
从我在您发布的输出中看到的情况来看top
,我认为它mltest
不能消耗比这更多的周期。它消耗了近 8 倍的 100%。我不是 CPU 架构专家,但我认为您已经达到了多核技术的极限。您的服务器每个 CPU 有多少个内核?
顺便说一句,你有一个加载您的“四核四线程机器”上是否有 10 或 11 个进程?或者您看到的是平均“%CPU”?这load
是等待 CPU 周期的进程数,因此 10 相当高。
更新评论后:
感谢您重新格式化top
输出并澄清有关值的问题load
。我有点不同意我同事的观点 - 无论您有多少个核心,10 的负载都相当高。但您正在运行基准测试或 CPU 老化测试,不是吗?
欲了解更多答案,请参阅 ServerFault 上的交叉帖子:https://serverfault.com/questions/71510/cpu-for-a-process。