OS X tem três problemas que contribuem para isso:
-
Por padrão, todos os dados gravados ou lidos do 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 em uma base por descritor com a opção
F_NOCACHE
parafcntl()
, mas poucos o fazem. Como resultado, grandes quantidades de atividade de disco causam a perda de memória que não está sendo usada naquele momento. Isso cria mais atividade de disco tanto para a troca quanto para a leitura da memória em momentos posteriores, além da atividade original do disco. -
O HFS + não manipula bem o acesso simultâneo a arquivos. Em particular, abrir e fechar muitos arquivos diferentes de uma só vez cria uma contenção tremenda e praticamente apenas uma operação de abertura / fechamento pode acontecer de cada vez.
-
Vários aplicativos do OS X distribuem o acesso ao disco em vários arquivos pequenos.
Como resultado, quando dois ou mais aplicativos estão tentando acessar vários arquivos de uma vez, a carga de E / S do disco aumenta exponencialmente à medida que a atividade de troca compete com os aplicativos de E / S.
Desativar o paginador dinâmico pode impedir a parte inicial dessa curva exponencial, removendo a capacidade de enviar páginas de aplicativos particulares / sujos para o disco. Em vez disso, o sistema provavelmente removerá 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. Se isso realmente melhora ou não o desempenho, dependerá muito de quais aplicativos você está usando. O Safari, por exemplo, é extremamente ruim em gerenciar seu disco de E / S, então imagino que isso ajudaria.
O problema ocorreria se a quantidade de memória RAM necessária realmente exceda a quantidade disponível: uma pane de pânico é uma maneira muito abrupta de encerrar o dia. Mas se você não estiver editando arquivos grandes ou fazendo coisas inerentemente de memória intensiva, isso pode ser raro o suficiente para considerar o risco.
A propósito, você pode usar o comando lsof
para ver quais arquivos são abertos por quais processos e o comando fs_usage
para ver um log em execução das operações de arquivo. Ambos funcionam melhor quando são executados como root ou via sudo
.