kswapd를 종료하고 페이지를 교환할 수 있는 방법이 있습니까?

kswapd를 종료하고 페이지를 교환할 수 있는 방법이 있습니까?

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이 시작되거나 임의의 응용 프로그램이 실패하기 시작합니다.

관련 정보