尽管我已经将交换设置为100并启用了交换,但没有任何东西被交换掉。这可能是因为我目前没有很高的记忆压力。不过,出于测试目的,我想迫使kswapd尽可能多地交换。即使没有很高的记忆压力,有什么方法可以让它发挥作用呢?
发布于 2011-08-07 19:33:06
据我所知,并不是这样,但是您可以通过分配(并使用)一些ram来强制它交换。
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char **argv)
{
if (argc < 2)
return 1;
int megs = atoi(argv[1]);
if (megs <= 0)
return 2;
int i;
for (i=0; i<megs; i++) {
void *data = malloc(1024*1024);
memset(data, 1, 1024*1024);
}
getchar();
return 0;
}将其保存到eater.c和gcc -o eater eater.c编译器中。(或者不管您最喜欢的编译器的命令行是什么。)然后简单地使用一些兆字节作为参数来运行它。按回车来释放它。
警告:这将运行得很快,直到您真正达到了交换的需要。然后你的整个系统会停止/开始得到OOMs/随机应用程序将开始失败,如果你消耗太多的内存。
https://unix.stackexchange.com/questions/18273
复制相似问题