更具体地说:我想从程序内部找到这些信息,最好是在它开始交换之前,这样我就可以做出反应。到目前为止,我发现:
里面的资料
/proc
,用处不大mincore
syscall 似乎在 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”列是“swap-in”和“swap-out”。Swapd 是交换设备中有多少内存。Swapd 应该是稳定的,并且 si 等为零。
记住:
您不应该真正问“我的程序是否正在交换” - 而不是“系统是否正在交换”。您的程序可能会导致其他人交换 - 其他人可能会导致您的交换等。无论哪种方式,当这种情况发生时 - 性能 d...i..e....s....