显示“免费”的Linux交换量不同于“smem”

我试图从交换量来自哪里来分析,并且看着smem显示,我得到了完全不同的交换使用量。

免费显示以下内容:

[root@server1 ~/smem-1.3]# free -k total used free shared buffers cached Mem: 24554040 24197360 356680 0 510200 14443128 -/+ buffers/cache: 9244032 15310008 Swap: 20980880 2473120 18507760 

而且smem显示:

  PID User Command Swap USS PSS RSS ... 18829 oracle oracle_1 (LOCAL=NO) 0 3.9M 98.3M 10.1G 18813 oracle oracle_1 (LOCAL=NO) 0 3.9M 98.6M 10.1G 18809 oracle oracle_1 (LOCAL=NO) 0 4.1M 99.2M 10.0G 28657 oracle ora_lms0_1 56.0K 54.1M 100.3M 4.2G 29589 oracle ora_lms1_1 964.0K 69.7M 118.9M 4.5G 29886 oracle ora_dbw1_1 5.7M 20.8M 130.9M 10.2G 29857 oracle ora_dbw0_1 4.2M 22.6M 133.0M 10.3G 11075 ccm_user /usr/java/jre1.6/bin/java - 197.8M 133.9M 135.9M 140.7M 21688 bsuser /usr/local/java/bin/java -c 30.7M 145.1M 147.2M 152.1M 29930 oracle ora_lck0_1 2.3M 58.6M 169.8M 1.0G 29901 oracle ora_smon_1 0 78.0M 195.6M 4.3G 15604 oracle /var/oragrid/jdk/jre//bin/j 65.4M 253.9M 254.3M 262.2M ------------------------------------------------------------------------------- 359 10 678.8M 2.5G 13.5G 1.2T 

为什么免费向我展示“2.4G”,而且只显示我679M? 其中之一是显示一些错误的结果。

我需要找出剩余的1.8G,或certificate自由是错误的结果。

最后但并非最不重要的是,内核是2.6.18。

那么,主要问题是RSS(驻留集大小)和PSS(比例集大小)。 从http://www.selenic.com/smem/中可以看出 – “PSS反而衡量每个应用程序在每个共享区域的”公平份额“,从而给出一个现实的衡量标准。” 另一方面,RSS通过计算多个应用程序的共享内存区域来高估自己。 这就是为什么,你看到了不同。 简而言之,smem可以区分应用程序共享内存,而不是像每个应用程序拥有的一样处理共享区域!