系统交换…我怎么知道问题是什么

我有一个ubuntu的vps运行,有大约300MB的内存,其中只有20%或更less是免费的,现在…
我的问题是,我怎么能找出我正在运行什么特定的程序,导致它交换这么多?

要找出每个进程使用的交换空间量,运行top (不是htop ),按'f'select要显示的列(f为字段),按'p'添加交换显示,按'o'对表格进行sorting(o按顺序排列),再按'p'按交换使用顺序sorting。

开始运行

 top 

并按M [shift + m]。

你会得到按mem消耗sorting的进程列表。

smem比top更难使用,但提供了很好的信息。 你可以用sudo smem -s uss -r -k开头,它会输出:

  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之间的区别。

另一个select是htop ,在某些情况下它有更好的输出。