Linux

程序的 %CPU

  • October 5, 2009

在我們的伺服器上查看 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 限制。

引用自:https://serverfault.com/questions/71510