![系统交换...我该如何找出问题所在](https://linux22.com/image/511028/%E7%B3%BB%E7%BB%9F%E4%BA%A4%E6%8D%A2...%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E6%89%BE%E5%87%BA%E9%97%AE%E9%A2%98%E6%89%80%E5%9C%A8.png)
我有一个正在运行的 ubuntu vps,它有大约 300MB 的内存,其中现在只有 20% 或更少的内存是可用的...
我的问题是,我如何找出我正在运行的哪个特定程序导致它交换这么多?
答案1
要找出每个进程使用的交换空间量,请运行top
(不是htop
),按“f”选择要显示的列(f 表示字段),按“p”添加要显示的交换,按“o”对表进行排序(o 表示排序依据)并再次按“p”按交换使用情况排序。
答案2
从跑步开始
top
并按下 M [ shift+m ]。
您将获得按内存消耗排序的进程列表。
答案3
微电子比 top 更难用,但提供了很好的信息。你可以先使用sudo smem -s uss -r -k
which 来输出:
PID User Command Swap USS PSS RSS
12345 spam /usr/lib/jvm/java-6-sun/bin 0 620.9M 0 626.5M
98765 eggs /usr/bin/java -Xmx1500m -XX 0 544.2M 0 549.9M
你可能还想看看这篇 lwn.net 文章,解释了RSS、PSS和USS之间的区别。
答案4
另一个选择是htop
,在某些情况下它具有更好的输出。