Como recuperar o controle do meu computador?

3

Estou executando um servidor de banco de dados no meu computador. Às vezes, é preciso muito de recursos de memória para que o sistema pare de responder às entradas do teclado e do mouse. Embora eu possa mover o ponteiro do mouse e ligar e desligar o Caps Lock , não posso fazer mais nada além disso.

Surpreendentemente, posso SSH para o computador, executar o comando top , matar alguns processos e encerrar o servidor de banco de dados para recuperar espaço de memória. Mas mesmo tendo feito essas coisas, o display permanece em estado semi-congelado (mouse ainda animado).

Tendo recuperado a maior parte da minha memória, é possível recuperar o uso do sistema sem ter que reiniciar?

    
por Question Overflow 08.03.2014 / 06:07

1 resposta

3
Libertar recursos deve geralmente devolver o sistema a um estado normal de funcionamento, de modo que me parece que o sistema ainda está lutando para liberar recursos ou não cumpriu completamente a tarefa de eliminar esses processos. Eu investigaria mais para descobrir se isso é realmente o caso. Você pode ver, por exemplo, se algo ainda está gravando dados no disco rígido. Existem várias ferramentas que podem ajudar com isso, eu começaria com fatrace para ver se você pode identificar um processo que está tentando terminar de gravar dados no disco.

Exemplo

$ sudo fatrace | head -10
chrome(29486): W /home/saml/.config/google-chrome/Default/Extension State/017912.log
chrome(29486): CW /home/saml/.config/google-chrome/Default/File System/000/p/.usage
chrome(29486): W /home/saml/.config/google-chrome/Default/Extension State/017912.log
chrome(29486): W /home/saml/.config/google-chrome/Default/Extension State/017912.log
chrome(29486): W /home/saml/.config/google-chrome/Default/History-journal
chrome(29486): W /home/saml/.config/google-chrome/Default/History
chrome(29486): W /home/saml/.config/google-chrome/Default/History
chrome(29486): W /home/saml/.config/google-chrome/Default/History
chrome(29486): W /home/saml/.config/google-chrome/Default/History-journal
chrome(29486): W /home/saml/.config/google-chrome/Default/Extension State/017912.log

Você desejará executar esse comando sem o | head -10 , só para mostrar o exemplo aqui.

Então, o que há de errado?

Se você já olhou para a saída de free , provavelmente notou os buffers e o cache das colunas.

$ free 
             total       used       free     shared    buffers     cached
Mem:       7969084    6673652    1295432          0     118588     893916
-/+ buffers/cache:    5661148    2307936
Swap:      8011772    3104804    4906968

São arquivos que o sistema carrega agressivamente na memória para maximizar o desempenho usando o máximo de RAM possível para essa tarefa. Quando o processo de banco de dados (ou que já está consumindo RAM), esses arquivos foram empurrados para swap (estou assumindo) e agora não podem voltar, já que essa outra tarefa está ocupando a E / S do disco rígido.

O que pode ser feito para mitigar isso?

Um truque é ajustar a taxa de sujeira da VM & VM dirty background ratio, que força o sistema a começar a escrever páginas sujas de memória no disco. Esta atividade é muitas vezes o que está causando um sistema aparentemente travar, especialmente na interface do usuário. Existem outras razões, mas esta é uma das mais frequentes.

trecho

By default the VM dirty ratio is set to 20% and the background dirty ratio is set to 10%. This means that when 10% of memory is filled with dirty pages (cached data which has to be flushed to disk), the kernel will start writing out the data to disk into the background, without interrupting processes. If the amount of dirty pages raises up to 20%, processes will be forced to write out data to disk and cannot continue other work before they have done so.

Veja como você pode verificar as configurações atuais do seu sistema:

$ sudo sysctl -a | grep 'dirty.*ratio'
vm.dirty_background_ratio = 10
vm.dirty_ratio = 20

Para substituir essas configurações, você pode criar o seguinte arquivo, /etc/sysctl.d/dirty_ratio.conf com o seguinte conteúdo:

vm.dirty_ratio = 10
vm.dirty_background_ratio = 5

Isso fará com que seu sistema seja mais agressivo ao escrever alterações à medida que elas ocorrem. Você pode ativar essas alterações imediatamente assim:

$ sudo sysctl -p /etc/sysctl.d/dirty_ratio.conf

Isso resolverá o problema?

Na minha experiência, você pode ajustar esses valores, mas o verdadeiro problema é que seu sistema provavelmente não atende as tarefas que você está solicitando que ele realize.

Referências

por 08.03.2014 / 06:44