Por que o Linux não protege o SO da troca?

1

Eu entendo que quando a RAM enche e o kernel começa a mover páginas de um disco para outro, os programas se tornarão menos responsivos. No meu caso, no entanto, todo o sistema congela (ou fica horrivelmente, com o mouse se movendo a cada 10 segundos ou mais) toda vez que ele entra em swap. Eu suponho que isso é porque o sistema operacional está muito ocupado movendo coisas ou está movendo suas próprias partes para trocar.

Por que não podemos proteger os componentes principais do sistema operacional, incluindo a interface gráfica (X), de trocar (mantendo-os fixos na RAM) para que tenhamos pelo menos um sistema operacional responsivo enquanto sofremos atrasos no restante de nosso sistema operacional? aplicações? (Ou se o problema é que o kernel está muito ocupado, diminuindo a prioridade de troca?)

    
por Stefan 28.03.2017 / 12:34

2 respostas

2

Primeiro de tudo, você pode mudar "swappiness" - quão ansioso é o seu sistema operacional para usar swap - usando este one-liner:

sudo bash -c "echo 'vm.swappiness = 15' >> /etc/sysctl.conf"

Por que o sistema operacional não bloqueia o servidor X, a resposta é simples: é apenas o caso de uso. Veja, se eu estou computando algo com o meu script, eu quero que seja o mais rápido possível (e termine o mais rápido possível) - preservar programas desnecessários na memória significaria que é o meu programa que tem que usar swap, tornando muitos ordens de grandeza mais lentas.

Muitos usuários que executam esses scripts com muita memória não usam X ou não se importam com eles, porque deixam seus PCs em paz.

tl: dr: é uma decisão de design complexa e a solução atual é provavelmente a melhor.

    
por 28.03.2017 / 16:30
0

Se você está falando sobre proteger os principais componentes do sistema operacional mas desabilitando o swap neles, eu preferiria que você não o fizesse (de qualquer forma você não pode, há muito tempo, arquivos executáveis honrados bit +t que diria ao kernel para não trocar, mas hoje ele é ignorado). Se o kernel decidir que tem que trocar, com certeza tem um motivo válido. O Linux é muito agressivo no uso da memória, porque a RAM que está ociosa é um recurso desperdiçado.

Agora, se você decidir desativar o espaço de troca como um todo, você pode fazer isso por -

Para desabilitar uma área de troca: swapoff [-v] specialfile...

Para desabilitar toda a área de troca: swapoff -a

Veja também esta answer para mais informações.

    
por 28.03.2017 / 14:41

Tags