4

我正在尝试分析交换量的来源,并查看 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

为什么free给我显示“2.4G”而smem只给我显示679M?其中之一是显示一些错误的结果。

我需要找出剩余的1.8G在哪里,或者证明free显示错误的结果。

最后但同样重要的是,内核是 2.6.18。

4

1 回答 1

1

嗯,主要问题是 RSS(驻留集大小)和 PSS(比例集大小)。来自http://www.selenic.com/smem/正如它所说 - “PSS 改为测量每个应用程序在每个共享区域的“公平份额”以给出一个现实的衡量标准”。另一方面,RSS 通过将多个应用程序的共享内存区域计算为自己的内存区域来高估。这就是为什么,你看到了差异。简而言之,smem 可以区分应用程序共享内存,而不是将共享区域视为每个应用程序都拥有!

于 2013-05-08T05:57:53.760 回答