Como tenho 128 GB de RAM, queria minimizar o uso de swap definindo vm.swappiness
como 10.
Executei um banho ( snakemake -j 1
) de operações com uso intenso de memória em Python: subtraindo dois arrays de até 15 GB cada e depois calculando as normas da diferença. Surpreendentemente, meu sistema começou a se comportar mal: o Thunderbird travou, e meu ambiente gráfico (XFCE com lightdm) também, matando efetivamente minha sessão de tela com o banho em execução. Agora me pergunto: por quê?
Além disso, meus scripts tendem a falhar com falhas de segmentação ao processar arrays maiores. Além disso, depois que o ambiente gráfico reapareceu, ele trocou meus monitores (trocadilho intencional) e não me permitiu trocá-los novamente com as configurações de vídeo. service lightdm restart
depois sysctl vm.swappiness=60
foi necessário.
Eu tinha bastante (932 GB) de swap disponível, então não é que meu sistema tenha ficado sem memória repentinamente. Os chips de RAM também parecem funcionar (17 passagens do Memtest86+ não revelaram nenhum erro).
Pergunto sobre o motivo dos travamentos de outros programas (Thunderbird, sessão de tela, ambiente gráfico). Mesmo que meus programas fossem mal escritos, eu esperaria que seu impacto fosse uma troca extensa e limitada. Uma reinicialização total da sessão XFCE é algo que definitivamente não deveria acontecer. E por reiniciar quero dizer reiniciar, não congelar ou desacelerar devido à troca.
DR: Parece que não.
O problema estava com badblocks na partição swap , que podem ou não estar relacionados à redução da troca. Alguém mais experiente pode dizer se a troca afeta o desgaste do disco.
Eu preparei meu banho com sucesso
vm.swappiness=0
. Há 4h comecei outro banho comvm.swappiness=10
- até agora está tudo funcionando bem. Se o sistema começar a se comportar mal (e nenhum badblock for encontrado), atualizarei a resposta.