Mudança de trocas resulta em problemas

0

Alguns dias atrás eu mudei o swappiness do kernel de 60 para 30.

Estou com problemas. No boot, estou vendo erros (apenas no Windows; Unity e X.org ainda funcionam bem, tanto quanto eu sei) que dizem que os programas falharam e para denunciá-lo, e que um "problema do sistema detectado" ou algo semelhante, ou "O Ubuntu 14.04 sofreu um erro interno".

Como faço para corrigir isso sem ter que trazer meu swappiness para 60 ou não posso resolvê-lo de outra maneira? Esses problemas são bugs ou é isso que acontece quando você muda o swappiness?

    
por John Scott 23.07.2014 / 17:31

1 resposta

0

Eu vou adivinhar aqui, levando em consideração a observação do OP de que o problema pode ser revertido alterando swappiness de volta para 60.

O kernel do Linux geralmente compromete a disponibilidade da memória. Se você reduzir swappiness , você diz para usar o espaço de troca em menor grau para a RAM que os programas precisam, como balanceado contra o uso da RAM para dados de arquivos armazenados em cache. Se você definir swappiness para 0, você solicitará que seu espaço de troca não seja usado.

No entanto, mesmo com swappiness de 0, o kernel do Linux alterará seu comportamento, uma vez que estima que está próximo de uma condição de "falta de memória". Antes disso, simplesmente não armazenará em cache nenhum dado de arquivo na RAM. Mas, uma vez que ele esteja ficando sem memória, ele mudará sua estratégia e usará qualquer área de troca disponível, apesar da configuração swappiness (a menos que certas condições especiais sejam aplicadas).

Você relata que vê esse fenômeno durante a inicialização. Esta é uma situação em que muitos processos são iniciados em paralelo, começam a analisar suas configurações, alocam memória sob demanda, etc.

Embora a alteração de swappiness de 60 tp 30 não altere o espaço total para execução, talvez isso mude a quantidade de memória que o kernel relata para estar disponível. Ou pode mudar o comportamento em relação ao momento em que a condição da OOM é determinada.

Então, se você tiver apenas memória RAM suficiente e swap para tudo o que vai começar, o efeito que você vê pode ser um comportamento infeliz quando o kernel transiciona de sobrescrever para realmente fornecer memeory, ou quando ele começa a acreditar que uma condição de falta de memória está se tornando mais provável. O código em vmscan.c por exemplo (responsável por liberar memória na RAM) abruptamente mude seu comportamento dependendo de tal mudança drástica de condições.

    
por Run CMD 30.07.2014 / 11:35