Pensei entender como o MacOSX gerencia a memória, mas recentemente fiquei perplexo com o desempenho. Aqui está a situação:
- 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.
- Eu preciso executar três processos de 64 bits em paralelo, cada um deles usando cerca de 2000M de memória real.
- 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.
- 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?
macos
memory
virtual-memory
Ventzi Zhechev
fonte
fonte
Respostas:
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.
fonte
purge
comando é exatamente o que eu estava procurando. Eu havia encontrado os artigos de suporte no KB da Apple, mas eles não eram particularmente úteis.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,purge
não é muito útil (e causará degradação temporária no desempenho).fonte