我有一台运行 Debian 的 mysql 服务器,内存为 2G。我想知道每个进程使用的内存量。
我以为 ps -aux 是它的命令和选项。但我只看到几个进程使用了 90 MO,而 free -m 告诉我使用了 1400 MO。
有没有办法可以更好地查看进程及其使用的内存?
srv-datax:~# free -m
total used free shared buffers cached
Mem: 2015 1476 539 0 0 70
-/+ buffers/cache: 1405 609
Swap: 486 0 486
答案1
你应该发布你的 free 输出,这样我们才知道你读得对。Linux 上进程的内存使用情况很难具体确定,如果你真的想要了解详细信息并获取最新内核,请查看cat /proc/<pid>/smaps
。
答案2
#top
是一个不错的选择
#top -H
让你监控所有线程
#top -U root
这种使用“-U”开关可以让你监视用户特定的列表
答案3
Top 做得很好,请查找以下标题:
VIRT RES SHR S %MEM
答案4
除了 Kyle Brandt 的建议外,您还可以使用工具pmap
,该工具可以很好地总结 /proc/<pid>/smap 中找到的信息。如果您使用该-d
选项,它将显示映射、共享和设置为私有的内存量。在我看来,这提供了一个很好的视图。
我也可以建议阅读这篇有趣的文章关于内存使用情况。