Desativar temporariamente a RAM para imitar uma máquina com especificações mais baixas?

30

Eu tenho dois Macbooks de 2009. Um deles possui 4 GB de RAM e roda o 10.10; um tem 2 shows e roda o 10.5.

Estou pensando em atualizar a última máquina para Yosemite (10.10), mas estou preocupada que ela funcione lentamente com tão pouca RAM. Para ter uma ideia de como seria o desempenho, pergunto-me se há alguma maneira de "desligar" metade da RAM na máquina com especificações mais altas. Se eu fizesse isso, conseguia entender como o Yosemite seria executado na máquina de 2 GB antes de realmente fazer a atualização.

Existe alguma maneira de desativar temporariamente a RAM sem remover fisicamente o chip?

dB '
fonte
Por que não é necessário remover o chip? Você não poderia simplesmente trocar a RAM física dos dois MacBooks?
Saaru Lindestøkke 03/04
4
Não tenho a chave de fenda certa à mão.
dB '03/
3
O MacBook Pro de 2009 aceitará a RAM DDR3 de 1333 MHz (a velocidade será reduzida para 1066 mhz). Você pode comprar por US $ 30. Essas máquinas levarão até 8GB. Adicione um SSD e essa ainda é uma máquina decente.
Jasper azuis
@dB 'Por favor, aceite a resposta de OSdweeb. em vez do meu. Embora você precise reiniciar, é um método elegante e padrão e oferece um resultado mais confiável para 10.9 / 10.10 e provavelmente mais tarde. O disco RAM funciona bem no Mac OS X até 10.8 sem reiniciar e violar os arquivos do sistema.
precisa saber é o seguinte

Respostas:

25

Não é necessário remover a RAM, criar um disco RAM ou usar uma VM. Basta inicializar o sistema operacional usando o maxmem=valor do sinalizador de inicialização criado para esse fim e que existe há décadas.

Simplesmente abra o Terminal como um sudoer e entre

sudo nano /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

Após digitar sua senha, altere

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
        <key>Kernel Flags</key>
        <string></string>
</dict>
</plist>

para

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
        <key>Kernel Flags</key>
        <string>maxmem=2048</string>
</dict>
</plist>

e escreva as alterações no disco ctrloe saia do nano comctrlx

Reinicie o seu Mac para aplicar as alterações.

Para reverter as alterações, remova 'maxmem = 2048' com nano novamente.

OSdweeb
fonte
2
Meu cérebro é uma lata de lixo velha ... Ontem eu tentei encontrar essa solução fácil, venha para o inferno ou para o mar - e eu sabia que ela existe - mas simplesmente não me lembrava.
klanomath
11
A propósito: é melhor concluir o registro; caso contrário, se você perder acidentalmente seus cookies, não poderá mais fazer login na sua conta.
Nicael 5/04
Embora esta resposta, conforme escrita em 4 de abril de 15, possa ter funcionado no OS X através do OS X 10.10 Yosemite; no entanto, ele não funciona mais no OS X 10.11 El Capitan e posterior, a menos que se desative o System Integrity Protection. Consulte Como modificar a proteção de integridade do sistema no El Capitan e, embora suas instruções sejam para o El Capitan, as mesmas instruções básicas se aplicam às versões mais recentes do macOS.
User3439894
14

Basta criar um disco de RAM com o tamanho 2 GiB para reduzir a RAM disponível para o sistema e aplicativos em execução.

Para obter o número necessário de blocos para criar esse disco, multiplique (RAMdiskSize em MB) * 2048. No seu exemplo, isso é 2048 * 2048 = 4194304.

Em seguida, abra o Terminal e digite:

diskutil erasevolume HFS+ 'RAM Disk' `hdiutil attach -nomount ram://4194304`

Você receberá uma mensagem semelhante a essa:

Started erase on disk9  
Unmounting disk  
Erasing  
Initialized /dev/rdisk9 as a 2 GB HFS Plus volume  
Mounting disk  
Finished erase on disk9 RAM Disk  

use dd e o caminho para o volume e preencha o disco com dados aleatórios:

dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k

O comando gravará 1 bloco MiB de dados aleatórios no arquivo random.dat no volume do disco RAM até que esteja cheio.

Isso deve reduzir artificialmente a RAM disponível em ~ 2 GiB até você desmontar o disco RAM ou reiniciar o Mac.

Após alguns testes, isso não parece funcionar com tanta confiabilidade quanto no sistema mais antigo. O motivo é o novo gerenciamento de memória nos sistemas mais recentes (10.9 e superior).
A memória usada pelo disco RAM não deve ser trocada para o disco, mas, dependendo da qualidade do arquivo de dados aleatórios, pode ser compactado um pouco. Você pode aumentar o tamanho do disco RAM em 5-10% para ~ 2.1 GB para obter uma imagem mais realista.


Se você deseja fazer isso em 10.5-10.8, o comando a seguir parece suficiente para obter um resultado confiável (para obter o Identificador de Disco, verifique a saída do diskutil...comando):

dd if=/dev/zero of=/dev/rdisk9 bs=1m
Klanomath
fonte
Solução legal! Se bem entendi, pedi 2 GB de RAM para um disco RAM. Esses 2 GB de RAM são alocados, mas, como não estou usando o disco ram para nada, ele não está sendo acessado por nenhum processado. Se eu tiver memória virtual ativada, os sistemas operacionais não gravariam esse bloco de RAM não utilizado no meu arquivo de troca, liberando efetivamente os 2 shows novamente?
dB '03/
@dB 'Você está certo com seu primeiro comentário sobre RAM não utilizada. De fato, provavelmente ficará altamente compactado, deixando muita RAM livre. Então eu modifiquei minha resposta para preencher o disco com dados aleatórios para contornar isso.
klanomath
Você provavelmente pode simplesmente despejar todos os cálculos do tamanho do disco e deixe preenchimento dd-se todo o disco:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
Josh
@ Josh vou tentar isso de novo e modificar minha resposta, se funcionar. Ontem tive problemas ao executar o comando em uma VM. Acabei de receber um erro de 'recurso ocupado' e nada foi gravado no volume.
klanomath
Se você estiver gravando em um arquivo, of=/Volumes/RAM\ Disk/random.datdeve ficar bem. se você estiver gravando no disco, of=/dev/rdisk9precisará ser root e talvez seja necessário desmontar. (ele deve ser desmontado, caso contrário, o sistema vai ficar confuso)
Josh
8

Sim - use a memory_pressureferramenta para aplicar pressão de memória real ao sistema.

Não é uma analogia perfeita para remover o chip de memória, pois o ajuste da memória virtual ainda sabe que há 4 GB ou RAM e o argumento -p percent_free não aloca uma quantidade constante de RAM, mas mantém o sistema quase X por cento livre.

Deve permitir que você veja rapidamente se sua carga de trabalho é passível de um sistema com 2 GB de RAM, mesmo com a analogia imperfeita.

Se você pode remover fisicamente o chip - você pode primeiro simular as coisas e obter uma referência e, em seguida, fazer a alteração do hardware se precisar verificar se é preciso.

bmike
fonte
O principal problema que vejo ao remover o chip físico é que o modo de canal duplo também é removido da imagem. A primeira opção nesta resposta parece ser a melhor maneira de fazer isso, uma vez que os problemas reais de desempenho simplesmente vêm do aumento do uso.
Thebluefish
3

Adicionando à resposta do OSdweeb:

Como a edição do El Capitan, o com.apple.Boot.plistarquivo só é possível ao desativar o SIP (System Integrity Protocol) (consulte este tópico ).

No entanto, você pode definir os sinalizadores de inicialização com o seguinte comando:

sudo nvram boot-args="maxmem=2048"

Elwin
fonte
2

Outra solução seria usar uma máquina virtual para simular o Mac com menor RAM. Instale o VMWare Fusion, Parallels ou VirtualBox (se você for aventureiro) e instale o OS X nisso. Em seguida, você pode manipular o número de núcleos, a quantidade de espaço em disco e (conforme solicitado) a quantidade de RAM disponível para o OS X. O VirtualBox é gratuito, mas atualmente limitado a 3Gb para o OS X até que os desenvolvedores permitam operações do kernel de 64 bits . Os outros dois produtos têm testes de 30 e 14 dias, respectivamente.

ktappe
fonte
-1, desculpe ... esta não é uma boa comparação. Agora, você possui drivers de vídeo virtualizados, E / S virtualizada e um pequeno impacto no desempenho da CPU. Eu amo a virtualização, mas se tudo o que você quer fazer é ver como o sistema funcionaria com menos RAM disponível, essa não é uma boa solução.
21420 Josh
@ Josh: A pequena penalidade de desempenho para virtualização deve ser insignificante: as CPUs modernas têm suporte de hardware para essa tarefa; portanto, o desempenho será muito próximo do bare metal, exceto em alguns casos esotéricos adicionais. Além disso, além de controlar diretamente a quantidade de memória disponível, você também pode ajustar a frequência da CPU, os núcleos disponíveis, a memória de vídeo disponível e outros parâmetros. Para simular verdadeiramente máquinas antigas, ter essas opções disponíveis pode ser útil. O desempenho de um sistema operacional é mais do que apenas a RAM disponível.
Phyrfox
Se você está falando sobre virtualização de nível empresarial, como o VMWare ESXi, então está certo, @phyrfox - sobre a velocidade da CPU . Há um impacto no desempenho nos gráficos e no processamento de vídeo que será perceptível se você estiver executando o Mac OS X. Concordo que a virtualização é a solução certa quando você deseja ajustar a frequência da CPU, núcleos, hardware disponíveis etc. Mas essa questão era puramente sobre limitar RAM disponível e, para esse caso de uso, acredito que a virtualização não é a solução certa.
21715 Josh
-1

Para retirar a RAM, você pode:

Se o seu macbook for Alumínio, você retira todo o fundo e a RAM deve estar bem no meio.

Se for branco, retire o pequeno compartimento no canto e acesse o carneiro dessa maneira.

Fonte: https://support.apple.com/en-ca/HT1651

Kachamenus
fonte
11
Observe que ele pede para desativá-lo sem remover fisicamente o aríete.
Spotlight
Ele ainda pode resolver o seu problema com isto é o que eu quis dizer ...
Kachamenus
2
Mas a pergunta era: "Existe alguma maneira de desativar temporariamente RAM sem remover fisicamente o chip?", Então isso não responder à pergunta
Josh
Desculpa aí. Eu estava apenas afirmando que há uma maneira de tirar carneiro.
Kachamenus 06/04