trustfundbaby Asked: 2010-04-14 11:29:14 +0800 CST2010-04-14 11:29:14 +0800 CST 2010-04-14 11:29:14 +0800 CST 系统交换...我如何找出问题所在 772 我有一个 ubuntu vps 正在运行,它有大约 300MB 的内存,其中只有 20% 或更少的内存是免费的…… 我的问题是,我怎样才能弄清楚我正在运行的特定程序导致它交换所以很多? linux swap 4 个回答 Voted Best Answer minaev 2010-04-14T22:34:12+08:002010-04-14T22:34:12+08:00 要找出每个进程使用的交换空间量,运行top(不是htop),按“f”选择要显示的列(f 表示字段),按“p”将交换添加到显示,按“o”对表(o 表示 order by)并再次按“p”以按交换使用排序。 pQd 2010-04-14T11:37:04+08:002010-04-14T11:37:04+08:00 从跑步开始 top 并按 M [ shift+m ]。 您将获得按内存消耗排序的进程列表。 miki 2010-04-14T23:46:10+08:002010-04-14T23:46:10+08:00 smem比 top 更难使用,但提供了很好的信息。您可以从sudo smem -s uss -r -kwhich 将输出: 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 之间的区别。 The Unix Janitor 2010-04-14T11:54:02+08:002010-04-14T11:54:02+08:00 另一种选择是htop,在某些情况下具有更好的输出。
要找出每个进程使用的交换空间量,运行
top
(不是htop
),按“f”选择要显示的列(f 表示字段),按“p”将交换添加到显示,按“o”对表(o 表示 order by)并再次按“p”以按交换使用排序。从跑步开始
并按 M [ shift+m ]。
您将获得按内存消耗排序的进程列表。
smem比 top 更难使用,但提供了很好的信息。您可以从
sudo smem -s uss -r -k
which 将输出:您可能还想查看这篇 lwn.net 文章,它解释了 RSS、PSS 和 USS 之间的区别。
另一种选择是
htop
,在某些情况下具有更好的输出。