Linux:获取一段时间内交换的内存量

时间:2013-08-07 08:58:35

标签: linux memory monitoring swap

是否有一种(简单(?))方式来获取在特定时间内移入/移出的数据量?也许,要么在所有流程和时间上集成,要么在特定流程和时间上集成?

故事:我有一台易于交换的机器。但是,我不知道,如果交换“积极”使用。即,如果它经常交换,或者让我们说只是未使用的共享库在一段时间后被交换掉,并且最终在mem中发生'活动'内存使用。

因此,我正在寻找一种方法来安慰自己,交换使用可能不严重......

干杯并感谢您的想法,   托马斯

2 个答案:

答案 0 :(得分:0)

这可以通过SystemTap相对容易地(如果您知道内核MM子系统)完成。 您需要知道执行swapin / swapout的函数的名称,创建相应的探测器以及从探测器增加的两个计数器。最后,您需要一个每N秒触发一次的计时器,转储当前计数器并重置它们。

答案 1 :(得分:0)

这是我的临时解决方案,用于使用vmstat获取在调用之间交换的总页数

#!/bin/sh
OLDSWAPPEDIN=$SWAPPEDIN
OLDSWAPPEDOUT=$SWAPPEDOUT
PAGEINOUT=$(vmstat -s | grep swapped 2>&1)
SWAPPEDIN=`echo $PAGEINOUT | awk '{print $1}'`
SWAPPEDOUT=`echo $PAGEINOUT | awk '{print $5}'`
SWAPPEDINDIFF=`expr $SWAPPEDIN - $OLDSWAPPEDIN`
SWAPPEDOUTDIFF=`expr $SWAPPEDOUT - $OLDSWAPPEDOUT`

我试图避免存储变量的临时文件(因此需要在登录时获取或创建变量)