在 RHEL 上将交换空间设置为 0 以进行测试

在 RHEL 上将交换空间设置为 0 以进行测试

我尝试将 swappiness 更改为 100,并使用 malloc() 代码在我的 rhel 系统上将 swappi 设置为 0 但这似乎没有帮助。系统内存分配如下所示:

-bash-4.1$ cat /proc/meminfo
 MemTotal:       15331636 kB
 MemFree:        14552168 kB
 SwapTotal:      15826924 kB
 SwapFree:       15657580 kB

malloc 程序在内核终止之前运行了数千次迭代。但我没有在内核日志文件中看到明确的“杀死进程”或任何其他信息。

dmesg我在执行此代码片段后使用以下命令查找状态:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

 int main(int argc, char** argv) {
int max = -1;
int mb = 0;
char* buffer;

if(argc > 1)
    max = atoi(argv[1]);

while((buffer=malloc(1024*1024*1024)) != NULL && mb != max) {
    memset(buffer, 0, 1024*1024);
    mb++;
    printf("Allocated %d MB\n", mb);
}
return 0;
}

有没有更好的方法将交换设置为非常低的值或 0 ?

答案1

以下命令(以 root 身份运行)将禁用所有交换空间,在禁用之前将交换空间中的所有内容移动到实际 RAM 中。但要小心,如果您最终需要比没有交换的内存更多的内存,您将遇到各种问题,从内核自行终止进程到全面的内核恐慌。

swapoff

相关内容