Troca desativada, o sistema ainda se torna lento na falta de memória

0

No meu laptop Fedora, eu desativei a partição de swap porque parece muito inútil para mim. O sistema irá parar quando começar a escrever no SSD. As aplicações que consomem esta quantidade de memória normalmente não param, então, uma vez alocadas, elas alocarão mais e mais (gitk com diff de linha de 1M, programa defeituoso com vazamento de memória,…).

Ainda assim, encontro o sistema gravando no SSD quando a memória se esgota. Parece que não há swap ativado:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           7,7G        2,2G        455M        685M        5,1G        4,8G
Swap:            0B          0B          0B

Onde está a configuração que eu tenho que habilitar para deixar o kernel matar programas ao invés de trocar para o SSD?

    
por Martin Ueding 17.03.2018 / 13:35

1 resposta

0

Acho que você está procurando /proc/sys/vm/overcommit_memory , que deve definir como 2 para impor verificações de alocação de memória (os programas não poderão alocar mais memória do que realmente disponível). Você provavelmente precisará ajustar /proc/sys/vm/overcommit_ratio também, pelo menos, se algum dos seus programas precisar alocar mais da metade da memória instalada. A procfs manpage documenta tudo isso.

Eu recomendaria reconsiderar sua decisão de desativar todo o seu swap; consulte Por que o Linux precisa de espaço de troca em uma VM? para obter detalhes.

Vale notar que o kernel não pode trocar se a troca estiver desativada. Tudo o que ele pode fazer é usar arquivos mapeados como armazenamento de apoio, mas isso geralmente não envolve gravação (em particular para executáveis e bibliotecas). Se você está vendo gravações sob estresse, provavelmente é porque o kernel está liberando páginas sujas (principalmente seus buffers) para tentar recuperá-las.

    
por 17.03.2018 / 15:18

Tags