2010-11-23 55 views
5

更具体地说:我想从程序内部找到这些信息,最好是在它开始交换之前找到这个信息,以便我能够做出反应。到目前为止,我发现:如何获得有关linux的信息我的程序是否正在交换?

  • 信息里面/proc,这是不是很实用

  • mincore系统调用这似乎是可在Linux和BSD,但要求我在所有我的页面通过感兴趣(可能够了,但有点繁琐)

有没有更多的想法?

+0

除了监测(其中你可以设置警报),你也可以看看/ proc/sys/vm/swappiness,但这取决于你的应用程序以及你的机器有什么其他用途。也许你也可以完全禁用swap(如果你的应用可以处理OOM的情况)。 – Zlatko 2010-11-23 18:07:29

+0

这没有意义。我正在谈论PyPy(这是一个python解释器),它可以交换内存以提高速度。不太可能拥有设置交换的权限。 – fijal 2010-11-24 08:10:04

回答

2

的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 ...

相关问题