Linux

頂部未準確顯示記憶體使用情況

  • October 9, 2013

Top 沒有準確顯示我的記憶體使用情況,還是我的 VPS 提供商做了一些奇怪的事情?正如您在下圖中看到的,它使用了 90% 以上的記憶體,但是當您查看實際使用記憶體的程序時,它甚至不超過 30%。我知道當程序具有共享記憶體時,top 無法正確顯示,但例如,使用共享記憶體的 httpd 程序幾乎不會佔用所有可用記憶體的任何百分比,即使在加起來時也是如此。

圖中top命令是按照記憶體使用情況排序的,所以沒有大的程序隱藏。

http://i.imgur.com/GGBXCN9.png (顯然我沒有足夠的聲譽來發布圖片是問題。)

將頂部輸出更新為文本:

Tasks:  49 total,   1 running,  48 sleeping,   0 stopped,   0 zombie
Cpu(s): 17.7%us,  1.1%sy,  0.0%ni, 81.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.3%st
Mem:   2097152k total,  1858988k used,   238164k free,        0k buffers
Swap:  2097152k total,   140740k used,  1956412k free,  1089504k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                           
 812 mysql     20   0  513m 241m 5104 S  4.7 11.8 108:32.39 mysqld                                                                                                                                            
 882 root      20   0  344m 219m 6116 S  0.0 10.7   1:08.81 clamd                                                                                                                                             
26111 root      20   0  851m  34m 9720 S  0.0  1.7   1:30.03 java                                                                                                                                              
22155 cpanelro  20   0 94272  10m 2392 S  0.0  0.5   0:00.04 cpsrvd-ssl                                                                                                                                        
22260 cpanelro  20   0 94092 9792 2272 S  0.0  0.5   0:00.02 cpsrvd-ssl                                                                                                                                        
21175 cpanelro  20   0 94092 9704 2276 S  0.0  0.5   0:00.03 cpsrvd-ssl                                                                                                                                        
7491 root      20   0 47732 8520 2176 S  0.0  0.4   0:00.10 leechprotect                                                                                                                                      
 623 named     20   0  245m 5256 1940 S  0.3  0.3  11:58.59 named                                                                                                                                             
1639 root      20   0 46644 5172 1408 S  0.0  0.2   1:46.64 tailwatchd                                                                                                                                        
1472 root      20   0 93828 4972 1352 S  0.0  0.2   0:17.42 cpsrvd-ssl                                                                                                                                        
23781 root      20   0 38800 4928 2160 S  0.0  0.2   0:00.57 zsh                                                                                                                                               
17788 nobody    20   0 69072 4336 2488 S  0.0  0.2   0:00.21 httpd                                                                                                                                             
 917 root      20   0 68588 4288 3000 S  0.0  0.2   0:28.16 httpd                                                                                                                                             
21152 nobody    20   0 69124 4224 2456 S  0.0  0.2   0:00.05 httpd                                                                                                                                             
20549 nobody    20   0 68992 3716 1996 S  0.0  0.2   0:00.07 httpd                                                                                                                                             
20550 nobody    20   0 68992 3536 1792 S  0.0  0.2   0:00.06 httpd                                                                                                                                             
21996 nobody    20   0 68992 3508 1788 S  0.0  0.2   0:00.02 httpd                                                                                                                                             
20544 nobody    20   0 68992 3484 1804 S  0.0  0.2   0:00.05 httpd                                                                                                                                             
21995 nobody    20   0 68992 3432 1704 S  0.3  0.2   0:00.02 httpd                                                                                                                                             
22228 nobody    20   0 68992 3396 1704 S  0.0  0.2   0:00.00 httpd                                                                                                                                             
22226 nobody    20   0 68588 3300 1924 S  0.0  0.2   0:00.00 httpd                                                                                                                                             
21154 nobody    20   0 68720 3172 1716 S  0.0  0.2   0:00.03 httpd

使用免費 -m 更新:

free -m
            total       used       free     shared    buffers     cached
Mem:          2048       1864        183          0          0       1063
-/+ buffers/cache:        800       1247
Swap:         2048        137       1910

請記住,“活動”和“消耗”記憶體之間存在區別。Linux 傾向於將大量數據儲存在記憶體中,以備將來需要。但是程序可能不會主動使用此記憶體——在這種情況下,它們報告的“已用”記憶體量較低。

如果一個程序突然需要更多記憶體,那麼核心將釋放一些記憶體數據,並允許程序使用它。

所以從技術上講,記憶體同時“使用”和“空閒”。

您應該熟悉“ free ”命令。我也喜歡使用htop而不是 top,因為它顯示了這些差異。

這是之前回答得很好的一個問題。閱讀它,您應該對如何解釋“頂級”數據有更好的理解。

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