Linux
程序的 %CPU
在我們的伺服器上查看 top 的輸出時,我的一位同事告訴我,某些程序的“%CPU”低於 100 是因為我執行了太多程序。他補充說,根據他的經驗,如果我執行的程序少於 6 個,那麼可能所有程序都有 100“%CPU”。
我不想成為其他使用者的煩惱,但我懷疑他所說的是否正確。伺服器有 16 個核心,目前平均負載在 10 到 11 之間。據我了解,它並沒有過載。但我不知道為什麼有些程序只得到少於 100“%CPU”?真的是因為我嗎?
感謝致敬!
這是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:58.41 top 6 root RT -5 0 0 0 S 0 0.0 129:49.45 migration/1 9 root RT -5 0 0 0 S 0 0.0 104:34.66 migration/2 2870 daemon 20 0 8180 404 308 S 0 0.0 5:18.91 portmap 8985 root 20 0 28484 344 264 S 0 0.0 6:24.77 hald-addon-stor 9293 root 20 0 369m 4208 2316 S 0 0.0 83:36.35 kdm_greet 24028 tim 18 -2 871m 140m 45m S 0 0.1 7:50.56 MATLAB 1 root 20 0 4104 304 224 S 0 0.0 0:03.59 init 2 root 15 -5 0 0 0 S 0 0.0 0:00.26 kthreadd 3 root RT -5 0 0 0 S 0 0.0 0:00.31 migration/0 4 root 15 -5 0 0 0 S 0 0.0 1:08.91 ksoftirqd/0
不知道你的朋友在說什麼,但這聽起來很武斷,而且……嗯,大錯特錯。
CPU 度量的百分比有些誤導。事實上,任何目前“開啟”CPU 的程序都在那個時刻獲得了 100% 的 CPU。百分比是指這些程序在上次採樣期間收到的 CPU 時間。
因此,它們顯示的 CPU 使用率低於 100% 並不表示存在問題。
在你的最高輸出中一個更相關的測量是這一行: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
它顯示了 42% 的 CPU 空閒時間。因此,您的其他程序,無論它們是什麼,都不受 CPU 限制。