¿Deshabilitar temporalmente la RAM para imitar una máquina de menor especificación?

30

Tengo dos Macbooks 2009. Uno tiene 4 gigas de RAM y ejecuta OS 10.10; uno tiene 2 conciertos y ejecuta os 10.5.

Estoy considerando actualizar la última máquina a Yosemite (10.10), pero me preocupa que funcione lentamente con tan poca RAM. Para tener una idea de cómo sería el rendimiento, me pregunto si hay alguna forma en que pueda "apagar" la mitad de la RAM en la máquina de mayor especificación. Si hiciera esto, podría tener una idea de cómo Yosemite se ejecutaría en la máquina de 2 conciertos antes de hacer la actualización.

¿Hay alguna forma de desactivar temporalmente la RAM sin quitar físicamente el chip?

dB '
fuente
¿Por qué no es necesario quitar el chip? ¿No podrías simplemente cambiar la RAM física de las dos MacBooks?
Saaru Lindestøkke
44
No tengo el destornillador adecuado a mano.
dB '
3
2009 MacBook Pro aceptará DDR3 1333 MHz ram (bajará la velocidad a 1066mhz). Puedes comprar por $ 30. Estas máquinas tomarán hasta 8 gb. Agregue un SSD y esta sigue siendo una máquina muy decente.
Jasper Blues
@dB 'Acepte la respuesta de OSdweeb. en lugar del mio Aunque tiene que reiniciar, es un método elegante y predeterminado y ofrece un resultado más confiable para 10.9 / 10.10 y probablemente más tarde. El disco RAM funciona bien para Mac OS X hasta 10.8 sin reiniciar y alterar los archivos del sistema.
klanomath

Respuestas:

25

No hay necesidad de sacar RAM, crear un disco RAM o usar una VM. Simplemente inicie el sistema operativo utilizando el maxmem=valor del indicador de inicio que se ha creado para este propósito y que ha existido durante décadas.

Simplemente abra Terminal como sudoer e ingrese

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

Después de ingresar su cambio de contraseña

<?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>

a

<?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>

y escriba los cambios en el disco con ctrloy salga de nano conctrlx

Reinicia tu Mac para aplicar los cambios.

Para revertir los cambios, elimine 'maxmem = 2048' con nano nuevamente.

OSdweeb
fuente
2
Mi cerebro es un viejo cubo de basura ... Ayer intenté encontrar esta solución fácil en el infierno o en el apogeo, y sabía que existía, pero simplemente no la recordaba.
klanomath
1
Por cierto: es mejor que complete el registro, de lo contrario, si pierde accidentalmente sus cookies, ya no podrá iniciar sesión en su cuenta.
nicael 05 de
Si bien esta respuesta, escrita el 4 de abril de 2015, puede haber funcionado en OS X a través de OS X 10.10 Yosemite; sin embargo, ya no funciona en OS X 10.11 El Capitan y versiones posteriores, a menos que se desactive primero la Protección de integridad del sistema. Consulte Cómo modificar la Protección de integridad del sistema en El Capitan , y aunque sus instrucciones son para El Capitan, las mismas instrucciones básicas se aplican a las versiones más nuevas de macOS.
user3439894
14

Simplemente cree un disco RAM con el tamaño 2 GiB para reducir la RAM disponible para el sistema y las aplicaciones en ejecución.

Para obtener la cantidad necesaria de bloques para crear dicho disco, multiplique (RAMdiskSize en MB) * 2048. En su ejemplo, eso es 2048 * 2048 = 4194304.

Luego abra la Terminal e ingrese:

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

Recibirá un mensaje similar a ese:

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  

luego use dd y la ruta al volumen y llene el disco con datos aleatorios:

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

El comando escribirá 1 trozos de MiB de datos aleatorios en el archivo random.dat en el volumen del disco RAM hasta que esté lleno.

Esto debería reducir artificialmente su RAM disponible en ~ 2 GiB hasta que desmonte el Disco RAM o reinicie su Mac.

Después de algunas pruebas, esto no parece funcionar de manera tan confiable como en un sistema anterior. La razón es la nueva administración de memoria en los últimos sistemas (10.9 y superior).
La memoria utilizada por el Disco RAM no debe cambiarse al disco, pero dependiendo de la calidad del archivo de datos aleatorios, podría comprimirse un poco. Puede aumentar el tamaño del disco RAM en un 5-10% a ~ 2.1 GB para obtener una imagen más realista.


Si desea hacer esto en 10.5-10.8, el siguiente comando parece suficiente para obtener un resultado confiable (para obtener el identificador de disco, verifique la salida del diskutil...comando):

dd if=/dev/zero of=/dev/rdisk9 bs=1m
klanomath
fuente
¡Solución genial! Si entiendo correctamente, me he encargado de 2 gigas de ram para un disco de ram. Se asignan esos 2 gigas de RAM, pero, dado que no estoy usando el disco RAM para nada, en realidad no está siendo accedido por ningún procesado. Si tengo memoria virtual activada, ¿el sistema operativo no escribiría este bloque de ram no utilizado en mi archivo de intercambio, liberando efectivamente los 2 conciertos de nuevo?
dB '
@dB 'Tienes razón con tu primer comentario sobre la RAM no utilizada. De hecho, probablemente se comprimirá mucho y dejará mucha RAM libre. Así que modifiqué mi respuesta para llenar el disco con datos aleatorios para evitar eso.
klanomath
Probablemente pueda volcar todos los cálculos del tamaño del disco y dejar que dd llene todo el disco:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
Josh
@Josh Intentaré eso nuevamente y modificaré mi respuesta si funciona. Ayer tuve problemas para ejecutar el comando en una máquina virtual. Acabo de recibir un error de 'recurso ocupado' y no se escribió nada en el volumen.
klanomath
Si está escribiendo en un archivo of=/Volumes/RAM\ Disk/random.dat, entonces debería estar bien. si está escribiendo en el disco, of=/dev/rdisk9entonces debe ser root, y es posible que deba desmontarse. (debe desmontarse, de lo contrario el sistema se confundirá)
Josh
8

Sí, use la memory_pressureherramienta para aplicar presión de memoria real al sistema.

No es una analogía perfecta para eliminar el chip de memoria, ya que el ajuste de la memoria virtual aún sabe que hay 4 GB o RAM y el argumento -p percent_free no asignará una cantidad constante de RAM, pero mantendrá el sistema cerca del X por ciento libre.

Debería permitirle ver muy rápidamente si su carga de trabajo es adecuada para un sistema con 2 GB de RAM, incluso con la analogía imperfecta.

Si puede eliminar físicamente el chip, primero puede simular cosas y obtener un punto de referencia y luego hacer el cambio de hardware si necesita verificar que sea preciso.

bmike
fuente
El principal problema que veo al eliminar el chip físico es que el modo de doble canal también se elimina de la imagen. La primera opción en esta respuesta parece ser la mejor manera de hacerlo, ya que los problemas de rendimiento reales simplemente provienen del aumento del uso.
Thebluefish
3

Agregando a la respuesta de OSdweeb:

Dado que El Capitan edita el com.apple.Boot.plistarchivo solo es posible al deshabilitar el Protocolo de integridad del sistema (SIP) (consulte este hilo ).

Sin embargo, puede establecer los indicadores de arranque con el siguiente comando:

sudo nvram boot-args="maxmem=2048"

Elwin
fuente
2

Otra solución sería utilizar una máquina virtual para simular la Mac con menos RAM. Instale VMWare Fusion, Parallels o VirtualBox (si es aventurero) e instale OS X en eso. Luego, puede manipular la cantidad de núcleos, la cantidad de espacio en disco y (como estaba solicitando) la cantidad de RAM disponible para OS X. VirtualBox es gratuito, pero actualmente está limitado a 3Gb para OS X hasta que los desarrolladores permitan las operaciones de kernel de 64 bits . Los otros dos productos tienen pruebas de 30 días y 14 días, respectivamente.

ktappe
fuente
-1, lo siento ... esta no es una buena comparación. Ahora, tiene controladores de video virtualizados, E / S virtualizadas y un pequeño éxito en el rendimiento de la CPU. Me encanta la virtualización, pero si todo lo que quiere hacer es ver cómo funcionaría el sistema con menos RAM disponible, esta no es una buena solución.
Josh
@ Josh La pequeña penalización de rendimiento para la virtualización debería ser insignificante: las CPU modernas tienen soporte de hardware para tal tarea, por lo que el rendimiento estará muy cerca del metal desnudo a excepción de algunos casos marginales esotéricos. Además de eso, no solo puede controlar directamente la cantidad de memoria disponible, sino que también puede ajustar la frecuencia de la CPU, los núcleos disponibles, la memoria de video disponible y otros parámetros. Para simular verdaderamente máquinas antiguas, tener estas opciones disponibles puede resultar útil. El rendimiento de un sistema operativo es más que solo RAM disponible.
phyrfox
Si habla de virtualización de grado empresarial como VMWare ESXi, entonces tiene razón @phyrfox, sobre la velocidad de la CPU . Hay un impacto en el rendimiento en el procesamiento de gráficos y video que se notará si se ejecuta Mac OS X. Estoy de acuerdo, la virtualización es la solución correcta cuando se desea ajustar la frecuencia de la CPU, los núcleos disponibles, el hardware, etc. Pero esta pregunta se trataba únicamente de limitar RAM disponible, y para ese caso de uso, creo que la virtualización no es la solución correcta.
Josh
-1

Para sacar RAM, puedes:

Si su macbook es de aluminio, quite todo el fondo y la RAM debería estar justo en el medio.

Si es blanco, toma el pequeño compartimento en la esquina y accede al carnero de esa manera.

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

Kachamenus
fuente
1
Tenga en cuenta que pide deshabilitarlo sin quitar físicamente el carnero.
Spotlight
Todavía podría resolver su problema con esto, es lo que quise decir ...
Kachamenus
2
Pero la pregunta era: "¿Hay alguna forma de desactivar temporalmente la RAM sin quitar físicamente el chip?", Por lo que esto no responde a la pregunta
Josh
Lo siento por eso. Solo decía que hay una manera de sacar el carnero.
Kachamenus