Existe uma maneira de fazer com que o OSX use mais RAM e menos swap?

12

O problema que estou tendo está em um servidor (e em outras caixas OSX também) nós temos 4GB de RAM, mas estamos descobrindo que o OSX usa apenas 40-60% da RAM disponível enquanto também tem um 6-7GB troca. O servidor está executando o Apache e o MySQL, enquanto as outras máquinas são desktops.

Eu venho comparando seu uso com caixas Linux similares (hardware e software) e descobrindo que o Linux está tipicamente usando 80-90% da RAM e tem um arquivo de swap muito menor (2-3GB). Os servidores Linux também costumam ser executados muito mais rapidamente.

Existe uma maneira de forçar o OSX a usar mais ou a maior parte da RAM antes de usar um arquivo de troca de disco?

No Windows, você pode realmente desativar a troca completamente. Existe algo semelhante para o OSX?

    
por Darryl Hein 13.05.2009 / 01:31

1 resposta

17

O mais básico de resposta? Não. O sistema operacional lida com o gerenciamento de memória para o usuário - dando a um processo a quantidade de memória necessária, já que a solicita, e não fornece muito em termos de poder modificar a forma como o sistema executa. Não ajuda muito tentar descobrir se a utilização da memória faz parte da equação de por que os servidores Linux estão superando os servidores Mac.

Devido à falta de "hackability" no sistema de memória virtual, suas melhores opções são avaliar o desempenho da memória virtual para ver se é realmente a razão pela qual você está tendo problemas de desempenho - o mais básico é usar vm_stat ou use siga ao vivo usando vm_stat [number of seconds] para ver quantas páginas estão ocorrendo. Mover páginas não utilizadas da RAM para o disco rígido tem um custo muito menor do que recuperar as páginas do disco rígido para a sua RAM. Uma página nos termos do OS X refere-se a 4kb de dados.

Além disso, os processos de 32 bits (por exemplo, Illustrator) não podem acessar mais de 4 GB, portanto, é possível ter 2 GB livres e um processo ficar sem memória se você tiver 6 GB instalados.

Em sua área de trabalho e nos servidores, eu executaria vm_stat 2 e verificaria a última coluna - especialmente quando você experimenta o atraso de vários segundos ao alternar para o Illustrator.

Para descobrir o tamanho real da troca, você pode verificar o tamanho da troca no Activity Monitor ou executar du -shc /var/vm/swap* | tail -n 1 .

Usar du -sh /var/vm tem uma ressalva: em laptops que têm o modo de hibernação (qualquer coisa nos últimos 4 anos ou mais recentes), pode haver um sleepimage do tamanho da quantidade de memória instalada.

Jargão de memória do Mac OS X:

Wired : refere-se ao código do kernel e tal. Memória que nunca deve ser removida da RAM. Também conhecido como memória residente.

Compartilhada : memória compartilhada entre dois ou mais processos. Ambos os processos mostrariam essa quantidade de memória, de modo que pode ser um pouco enganador quanto à quantidade de memória que está realmente em uso.

Real : Este é o uso de memória "real" para um aplicativo, conforme relatado por task_info () - uma contagem aproximada do número de páginas físicas que o processo atual possui. (RSIZE)

Privado : Esta é a memória que um processo está usando somente por si próprio e que é usado na memória de residentes. (RPRVT)

Virtual : A quantidade total de espaço de endereço no processo mapeado para qualquer coisa - seja um espaço arbitrariamente grande para variáveis ou qualquer coisa - não equivale ao uso real da VM. (VSIZE)

Ativo : memória atualmente rotulada como ativa e usada na RAM.

Inativo : "A memória inativa não está mais sendo usada e armazenada em cache no disco. Ela permanecerá na RAM até que outro aplicativo precise de espaço. A saída dessas informações na RAM é vantajosa se você (ou um cliente do seu computador) voltar a ele mais tarde ". - Ajuda do Mac OS X

Grátis : A quantidade de RAM realmente disponível sem nenhum dado.

A melhor documentação que conheço (e que pude encontrar em pesquisas de acompanhamento) é a própria da Apple Gerenciando a memória no site do desenvolvedor.

Outras fontes válidas: lista de discussão do Darwin-dev: [ 1 ] , [ 2 ] e um artigo antigo em MacOSXHints . Além disso, Mike Ash postou uma boa introdução de leigos em sua blog

Pode ser possível (eu não tentei) desativar o sistema de memória virtual executando sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist e, em seguida, reiniciando para que o dynamic_pager (o programa que realmente faz a alocação de memória virtual) não inicialize. No entanto, como o sistema operacional pressupõe que tenha memória virtual, você pode se deparar com problemas muito rapidamente. Para carregá-lo, execute sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist (se necessário, no modo de usuário único)

    
por 13.05.2009 / 09:14