如何获取有关Linux程序是否交换的信息?

fij*_*jal 5 linux bsd posix

更具体地说:我想从程序内部找到这些信息,最好是在它开始交换之前,以便我能做出反应.到目前为止,我发现:

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

  • mincore 系统调用似乎可以在linux和bsd上使用,但要求我传入我感兴趣的所有页面(可能已经足够了,但它有点乏味)

还有什么想法吗?

Bra*_*rad 2

虚拟机状态

要每 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
Run Code Online (Sandbox Code Playgroud)

“si”和“so”列是“换入”和“换出”。Swapd 是交换设备中有多少内存。Swapd应该是稳定的,并且si等为零。

记住:

你不应该真正问“我的程序是否正在交换”,而不是“系统是否正在交换”。你的程序可能会导致其他人交换 - 其他人可能会导致你的交换,等等。无论哪种方式,当这种情况发生时 - 性能...