swappiness를 100으로 설정하고 스와핑을 활성화했지만 아무 것도 스와핑되지 않습니다. 내가 현재 메모리 압박을 많이 받고 있지 않기 때문일 수 있습니다. 그러나 테스트 목적으로 kswapd가 가능한 한 많이 스왑하도록 강제하고 싶습니다. 높은 메모리 부족 없이도 작동하게 할 수 있는 방법이 있나요?
답변1
내가 아는 한, 일부 메모리를 할당(및 사용)하여 강제로 교체할 수 있습니다.
#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
. 그런 다음 메가바이트를 인수로 사용하여 실행하십시오. 모든 내용을 해제하려면 Enter를 누르세요.
경고하다: 실행됩니다빠르게실제로 교체해야 할 때까지. 그런 다음 너무 많은 RAM을 소비하면 전체 시스템이 정체되거나 OOM이 시작되거나 임의의 응용 프로그램이 실패하기 시작합니다.