Linux
頂部未準確顯示記憶體使用情況
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,因為它顯示了這些差異。
這是之前回答得很好的一個問題。閱讀它,您應該對如何解釋“頂級”數據有更好的理解。