5
更具体地说:我想从程序内部找到这些信息,最好是在它开始交换之前找到这个信息,以便我能够做出反应。到目前为止,我发现:如何获得有关linux的信息我的程序是否正在交换?
信息里面
/proc
,这是不是很实用mincore
系统调用这似乎是可在Linux和BSD,但要求我在所有我的页面通过感兴趣(可能够了,但有点繁琐)
有没有更多的想法?
更具体地说:我想从程序内部找到这些信息,最好是在它开始交换之前找到这个信息,以便我能够做出反应。到目前为止,我发现:如何获得有关linux的信息我的程序是否正在交换?
信息里面/proc
,这是不是很实用
mincore
系统调用这似乎是可在Linux和BSD,但要求我在所有我的页面通过感兴趣(可能够了,但有点繁琐)
有没有更多的想法?
的vmstat
运行每2秒,你说 “的vmstat 2”。它给你如下输出:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 16124 431352 439000 0 0 4 2 37 18 0 0 100 0 0
“si”和“so”列是“换入”和“换出”。 Swapd是交换设备中有多少内存。交换应该是稳定的,并且si等于零。
记住:
你真的不应该问“是我的程序交换” - 而不是“是系统交换”。你的程序可能会导致别人交换 - 其他人可能会导致你的交换等。无论哪种方式,当发生这种情况 - 性能d ... i..e ... s ...
除了监测(其中你可以设置警报),你也可以看看/ proc/sys/vm/swappiness,但这取决于你的应用程序以及你的机器有什么其他用途。也许你也可以完全禁用swap(如果你的应用可以处理OOM的情况)。 – Zlatko 2010-11-23 18:07:29
这没有意义。我正在谈论PyPy(这是一个python解释器),它可以交换内存以提高速度。不太可能拥有设置交换的权限。 – fijal 2010-11-24 08:10:04