Existe uma maneira de chutar o kswapd e fazer com que ele troque de página?

1

Mesmo que eu tenha configurado o swappiness para 100 e ativado o swap, nada está sendo trocado. Isto é provavelmente porque não tenho alta pressão de memória no momento. Para fins de teste, eu quero forçar o kswapd a trocar o máximo que puder. Existe uma maneira de entrar em ação mesmo que não haja muita pressão na memória?

    
por psusi 07.08.2011 / 21:03

1 resposta

3

Não que eu saiba, mas você pode forçá-lo a trocar apenas alocando (e usando) algum 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;
}

Salve isso em eater.c e compilador com gcc -o eater eater.c . (Ou qualquer que seja a linha de comando do seu compilador favorito.) Em seguida, simplesmente execute isso com um número de megabytes como argumentos. Pressione Enter para liberar tudo.

Aviso : isso será executado rápido até que você realmente acerte a necessidade de troca. Então todo o seu sistema irá parar / começar a receber OOMs / aplicativos aleatórios que começarão a falhar se você comer muita RAM.

    
por 07.08.2011 / 21:33