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.