Desativar o dynamic_pager do Mac?

Desativar o dynamic_pager do Mac?

Eu li esta postagem no blog sobre o gerenciamento de memória no Mac OS X:http://workstuff.tumblr.com/post/20464780085/something-is-deeply-broken-in-os-x-memory-management

Gostaria de sua opinião sobre o assunto.

Eu tenho "apenas" 4 GB de memória, então existe a possibilidade de um kernel panic.

Eu tenho um disco giratório (em oposição a um SSD) e vejo bolas de praia ocasionais, às vezes até girando meu HD externo antes de continuar.

tela do monitor de atividade

Diz que nenhuma troca é usada no momento, isso significa que desabilitar o dynamic_pager não fará nada? Ele tem algumas páginas.

Quão seguro é apenas experimentar? Talvez eu pudesse escrever um script que reative o pager quando a memória ficar fraca.

[atualização]: Fim do dia, troca de 26 MB, muito mais entradas e saídas de páginas e muita memória inativa.

Responder1

OS X tem três problemas que contribuem para isso:

  1. Por padrão, todos os dados gravados ou lidos no disco são armazenados em cache na RAM com uma prioridade mais alta do que os dados recentes do programa. Os aplicativos podem desabilitar isso por descritor com a F_NOCACHEopção fcntl(), mas poucos o fazem. Como resultado, grandes quantidades de atividade do disco fazem com que a memória que não está sendo usada naquele exato momento seja trocada. Isso cria mais atividade no disco tanto para a troca quanto para a leitura da memória momentos depois, além da atividade original do disco.

  2. O HFS+ não lida bem com o acesso simultâneo a arquivos. Em particular, abrir e fechar muitos arquivos diferentes ao mesmo tempo cria uma enorme contenção e praticamente apenas uma operação de abertura/fechamento pode acontecer por vez.

  3. Muitos aplicativos do OS X distribuem seu acesso ao disco por muitos arquivos pequenos.

Como resultado, quando dois ou mais aplicativos tentam acessar muitos arquivos ao mesmo tempo, a carga de E/S do disco aumenta exponencialmente à medida que a atividade de troca compete com os aplicativos por E/S.

Desativar o pager dinâmico pode impedir a parte inicial dessa curva exponencial, removendo a capacidade de enviar páginas de aplicativos privados/sujos para o disco. Em vez disso, o sistema provavelmente irá limpar páginas de arquivos mapeados públicos/limpos (executáveis, bibliotecas, etc.) e dos dados do arquivo em cache que provavelmente não deveriam ter sido armazenados em cache em primeiro lugar. Se isso realmente melhora ou não o desempenho depende muito de quais aplicativos você está usando. O Safari, por exemplo, é extremamente ruim no gerenciamento de E/S de disco, então imagino que isso ajudaria.

O problema ocorreria se a quantidade de RAM necessária realmente excedesse a quantidade disponível: uma crise de pânico é uma maneira muito abrupta de terminar o dia. Mas se você não estiver editando arquivos grandes ou fazendo coisas inerentemente intensivas em memória, isso pode ser raro o suficiente para considerar um risco.

A propósito, você pode usar o lsofcomando para ver quais arquivos são abertos por quais processos e o fs_usagecomando para ver um log em execução das operações do arquivo. Ambos funcionam melhor quando executados como root ou via sudo.

informação relacionada