Problemas para entender a memória inativa no MacOSX

8

Pensei entender como o MacOSX gerencia a memória, mas recentemente fiquei perplexo com o desempenho. Aqui está a situação:

  1. Eu tenho um novo sistema Core i7 com 8 GB de memória física executando o MacOSX 10.6.7. Existem alguns aplicativos sendo executados regularmente, ocupando parte da memória - Safari, Mail, Xcode, Terminal etc.
  2. Eu preciso executar três processos de 64 bits em paralelo, cada um deles usando cerca de 2000M de memória real.
  3. Embora a memória com fio permaneça abaixo de 1000M (ou seja, tenho mais de 7000M disponíveis para processos), vejo uma atividade de paginação pesada levando a um desempenho muito ruim dos três processos intensivos em memória que iniciei.
  4. Aparentemente, não estou ficando sem RAM disponível, pois a memória inativa relatada permanece em torno de 2500M e a memória ativa não excede os 5000M.

Alguém pode me dar uma idéia de por que o MacOSX não libera a memória inativa para os processos que precisam dela, ao invés de recorrer à paginação? Além disso, existe alguma maneira adequada de influenciar o gerenciamento de memória pelo sistema?

Ventzi Zhechev
fonte

Respostas:

5

Descobri, na minha máquina, que o Mac OS X é um pouco lento para identificar as coisas certas.

Sempre que faço alguma coisa particularmente com fome de memória, muitas vezes vou fechar alguns aplicativos para ajudá-lo. O Safari é um enorme problema de memória, se estiver em execução há algum tempo e estiver no topo da lista de aplicativos para sair. No meu caso, foi quando tentei executar o VMWare Fusion sem bastante RAM real.

Você provavelmente sabe disso, mas aqui estão alguns links para a documentação da Apple que descrevem o uso da memória e a memória virtual no OS X:

http://support.apple.com/kb/ht1342

http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html

A seguir, é apresentada a explicação: A lista inativa contém páginas que atualmente residem na memória física, mas que não foram acessadas recentemente. É difícil obter uma definição exata do que isso significa, mas parece incluir um cache do sistema de arquivos e também uma memória inativa real.

A memória inativa é provavelmente uma coisa difícil de manusear em um sistema operacional interativo orientado por GUI, em que um usuário pode optar por alternar para qualquer aplicativo em execução a qualquer momento e fornecer resposta nesse tipo de situação é importante ... mas o outro lado disso é que em uma situação como a sua, o sistema operacional não sabe exatamente o que é a coisa certa a fazer.

É possível limpar (parte da) memória inativa usando o comando purge . Pode ser necessário instalar a instalação das ferramentas CHUD, mas você já pode instalá-lo. Eu não tentei usar o comando purge, então YMMV ...

Eu divaguei um pouco e pode ou não ter respondido sua pergunta. Depois de escrever tudo isso, encontrei outra pergunta neste site, com as mesmas informações que também podem ajudar.

Mike Meyers
fonte
Obrigado! O purgecomando é exatamente o que eu estava procurando. Eu havia encontrado os artigos de suporte no KB da Apple, mas eles não eram particularmente úteis.
Ventzi Zhechev 06/04
1

MacOS faz liberar a memória inativa, mas somente se ele realmente precisa. Essa "memória inativa" pode realmente ser a memória que o kernel acredita ser candidato à paginação - mas ainda não decidiu, passando mais tempo sem que a memória inativa seja referenciada (em vez disso, está focada em paginar a memória é menos provável que seja usado novamente em breve). Nesse caso, "limpar" a memória inativa fará com que seu desempenho seja prejudicado (uma vez que as páginas usadas com frequência teriam que ser lidas novamente no disco antes que o programa possa continuar a execução).

purgeé útil para os desenvolvedores simularem as condições de inicialização de um aplicativo - por exemplo, para ver quanto tempo leva para que um aplicativo seja executado pela primeira vez após uma inicialização ou um longo hiato. Para o usuário típico, purgenão é muito útil (e causará degradação temporária no desempenho).

jhfrontz
fonte