20 votos

Indicar a MacOS que sólo utilice la memoria de intercambio y la memoria comprimida cuando sea realmente necesario (MacOS 10.14 Mojave)

Como deshabilitar el swap y/o comprimir la memoria no se recomienda y tampoco es una opción estable después de 10.9 Mavericks (a pesar de que existe la configuración vm), estoy condenado después de unos días de ejecutar mi Mac con mi memoria escribiendo en las páginas de memoria lejos de ser óptimas. Como todo llega a la memoria de intercambio o a la memoria comprimida tan fácilmente, necesito reiniciar mi sistema con relativa frecuencia (a pesar de mis 16GB de RAM).

Estoy buscando una solución que me salve de estas ralentizaciones.

Por ejemplo en Linux zramswap es opcional. También Linux tiene su valor de swappiness entre 0 y 100 variable como

vm.swappiness=5

También podría considerar una solución sobre la caché de archivos (que suele comer aleatoriamente toneladas de memoria sin ninguna razón válida y no consigue soltarla antes de que la RAM pase a los purgatorios menos óptimos de la memoria comprimida y la swap). Por ejemplo, aquí ZFS tiene una opción en FreeBSD para maximizar el tamaño de la caché de archivos en la memoria:

vfs.zfs.arc_max="1536M"

En MacOS la mejor solución conocida para el problema de la caché de archivos es ejecutar

# /usr/sbin/purge

Que incluso es "cronnable". Así que esto descarga la caché de archivos, pero es poco probable que sea óptimo. Se vacía demasiadas cosas. Además, si algo ya está en la memoria de intercambio y/o comprimida, a pesar de la purga se queda allí, por lo que los programas que los utilizan permanecen lentos (y yo siento esa lentitud, créame).

¿Existe alguna solución para que MacOS sea menos propenso a utilizar la caché de archivos, la memoria comprimida o la swap (pero manteniendo la primera para el rendimiento y las dos últimas para la emergencia)?

6 votos

El problema de la salvedad "cuando realmente se necesita" es que todos los cerebros de Cupertino ya han decidido cuándo debe ser. Lo que realmente quieres decir es "cuando I creo que debería" que es una cosa totalmente diferente.

1 votos

En Linux lo controlo yo y funciona mucho mucho mejor. Hay swap y sólo se usa en caso de emergencia. No es tan simple como "cuando creo que debería". Es más como "cuando experimenté que debería" y "cuando experimenté que no debería". La forma en que no se puede ajustar con precisión es una gran desventaja de MacOS.

5 votos

Vale, entonces dime cómo se añade más RAM a un Macbook Pro 15 pre2018 o cualquier otro Macbook (Pro, Air, etc). Los 16GB es el máximo desde aproximadamente 2010 en la mayoría de ellos (excepto Macbook Pro 15 pulgadas 2018). Y además el SO decide intercambiar y comprimir cuando la ram ni siquiera está llena. (Lo mismo con Linux a no ser que bajes el valor de swappiness, pero ahí al menos se puede). Por favor, dejad de intentar convencerme de que Apple tomó aquí buenas decisiones relacionadas con la gestión de memoria ya que no fue así, y también por favor, dejad de sugerir soluciones imposibles que no le funcionan a casi nadie prácticamente.

13voto

Andrew Hodgkinson Puntos 200

Tengo el mismo problema y lo comprendo perfectamente. El intercambio innecesario frente a otras opciones (por ejemplo, reducir el área de archivos en caché) ha sido un problema durante años. Es aún peor en Mojave, donde la memoria libre - ni siquiera caché de disco, pero completamente libre - está presente, pero el sistema decide utilizar swap de todos modos. En un SSD, cada escritura causa desgaste en el hardware, por lo que esto es en realidad (aunque en pequeña medida) un comportamiento físicamente perjudicial. Dado que las unidades SSD de los Mac modernos están soldadas a la placa base, la situación es desesperada.

Me han dicho muchas veces personas muy seguras de sí mismas en sitios como éste que la memoria libre es una mala idea, porque está ahí consumiendo energía y no tiene ninguna otra utilidad. La caché de disco (al menos) debería consumirla. Estoy de acuerdo con esto; Mojave no lo hace, comprimiendo datos e intercambiándolos al disco incluso cuando hay gigabytes de memoria libre. En mi portátil de casa, los ciclos de sueño lo empeoran aún más. Ahora mismo, después de despertarme, la máquina tiene 11 GB libres, 5 GB en uso y 6 GB intercambiados. El color del galimatías "presión de memoria" es verde, lo que sea que significa. Es totalmente absurdo y está indefendiblemente roto.

Solía pensar que debía haber algo que estaba instalando o haciendo mal, pero en los Macs nuevos del trabajo sin nada extra instalado, el consumo de RAM mediante la apertura de muchas pestañas en Safari pronto mostrará el uso del espacio de intercambio a pesar de la gran cantidad de RAM libre.

Y sí, a veces se retrasa mucho. Esto sin duda afecta al rendimiento.

No conozco ninguna solución. Los ingenieros de Apple afirman que "funciona como está diseñado".

6 votos

La gente sigue afirmando aquí, que "arreglar la aplicación que pierde memoria lo arreglará". Pero si se enciende un Macbook Air con 8 GB de ram y dejar sólo el escritorio allí durante 3 días que ya comenzó a intercambiar. Ni siquiera has abierto nada todavía. Se lo que afirman ya no es cierto. La gestión de memoria de macOS no funciona tan impecablemente como hace 10-15 años.

0 votos

No lo hagas en Catalina. Catalina ya hace esta gestión de memoria "tan soñada" de la que todos habláis.

0 votos

Me encuentro con el mismo problema y del mismo modo estoy frustrado con la mayoría de las fuentes en línea. Tengo la configuración exacta que @dszakal describe, donde tengo un Air de 8gb y veo un intercambio pesado con un uso increíblemente ligero. Y las únicas aplicaciones que se ejecutan son Chrome con algunas pestañas, Discord y Slack.

9voto

Oskar Puntos 1242

Lo digo con amabilidad, pero no, no, no.

No cambies el diseño fundamental y el proceso de gestión de la memoria virtual de macOS porque tengas un sistema o una carga de trabajo con tantas fugas que se te acumule la swap y se rompa el algoritmo. Cualquier cambio que hagas en el algoritmo seguirá rompiéndose si tienes un software que no está asignando memoria correctamente, por lo que este problema probablemente necesita volver para aislar e identificar lo que está causando la presión de memoria para que la compresión y el swap se conviertan en un síntoma del problema subyacente.

Ahora - usted podría tener una muy buena razón por la que usted está pidiendo para alterar la memoria virtual, pero MacOS micro kernel no está diseñado para el nivel de ajuste que Linux es y si realmente necesita para gestionar VM tan estrechamente, yo le animo a cualquiera de localizar ese código en un servidor independiente a través de ponerlo en la nube, en un segundo dispositivo local o incluso virtualizar Linux guest OS en la parte superior de MacOS.

Entonces tendrás la mejor memoria girando para el sistema operativo real y el software virtual (VMWare Fusion es mi primera recomendación general, pero echa un vistazo a Parallels o incluso algunas opciones gratuitas si tienes tiempo e inclinación) para que puedas poner el código que necesita un puño de hierro gobernando la memoria virtual en Linux y dejar que las aplicaciones mac sean aplicaciones mac.

Y sólo por aventurarme, en los diecisiete años desde que OS X se lanzó, he trabajado con docenas de personas que siguieron el camino que propones - encontrar un caso en el que la memoria virtual señala un problema y luego cambiar la VM para superar esas necesidades de software, en todos los casos, terminamos arreglando las aplicaciones o arreglando donde ejecutamos las cosas en lugar de encontrar una configuración mágica o mortificación que no causara más daño que bien.

Animo a todo el mundo a probar estas cosas - especialmente si usted tiene el deseo de conocer los entresijos de un sistema operativo, pero la premisa aquí que VM tiene que cambiar no parece sonar cierto sobre la base de los detalles proporcionados o la larga experiencia de intentar esto en el pasado. Por favor, háganos saber si usted encuentra una configuración que funcione para usted y no votar a los demás si sugieren cosas - esta es la forma en que todos aprendemos resolviendo problemas de ingeniería y software - incluso en contra de las probabilidades de que no funcione al final.

0 votos

Ya que comparamos enfoques: tanto MacOS como Linux incluyen algoritmos y configuraciones predeterminadas que se determinaron para que funcionaran con un determinado subconjunto de aplicaciones. Estos no pueden cubrir todos los escenarios igual de bien y ambos tienen supuestos para un determinado valor predeterminado. Esto significa que para que Linux funcione bien en ordenadores portátiles es necesario realmente beneficiarse de los ajustes de los valores por defecto de hierro más grandes elegidos. En el caso de MacOS, te beneficias principalmente de los pocos ajustes que puedes activar para utilizarlo como servidor. AFAIK sólo hay muy pocas opciones disponibles en mac y el punto principal que usted señala correctamente es que las ganancias son pequeñas.

8voto

Pickle Puntos 2099

La primera y mejor línea de defensa sería matar los procesos o servicios que no se necesitan.

Entonces podrías controlar la compresión vm:

$ sysctl -a vm.compressor_mode
vm.compressor_mode: 4 

Establezca estas variables a través de un comando nvram:

El modo 0x1, VM_PAGER_DEFAULT, desactiva el compresor de memoria y el swapping, lo que ha demostrado ser perjudicial para la estabilidad del sistema. Los modos 0x8, 0x10 y 0x20 son los llamados modos "congeladores", que "congelan" el SO instantáneamente cuando la memoria está bajo presión. No es conveniente que los pruebes.

El modo 0x2, VM_PAGER_COMPRESSOR_NO_SWAP, es la mejor opción aquí. Proporciona un compresor de memoria con el intercambio desactivado. En otras palabras, cuando la memoria está bajo presión, MacOS intentará comprimir la memoria activa pero no conectada, liberando así parte de la memoria de vuelta al sistema. MacOS utiliza el algoritmo WKdm para comprimir y descomprimir la memoria, que es rápido y ahorra batería. Sin embargo, el kernel panic sigue siendo posible si no hay más memoria comprimible. Para cambiar del modo 0x4 al 0x2, utilice este comando y reinicie:

$ sudo nvram boot-args="vm_compressor=2"

Cuando se utiliza el modo 0x2, la presión de la memoria debe ser monitoreada de cerca para evitar el pánico del kernel. Una vez que la memoria comprimida crezca cerca del 50% de la capacidad total de memoria, es conveniente cerrar algunas de las aplicaciones en ejecución, o simplemente reiniciar el sistema.

Evitar que la memoria se comprima
Aunque la compresión de la memoria es rápida y está diseñada para aliviar la presión de la memoria, el mejor rendimiento sólo se consigue cuando no se comprime nada de la memoria. Utiliza el Monitor de Actividad o el siguiente comando para vigilar el uso de la memoria:

$ top -o CMPRS

Según mi experiencia, MacOS comienza a comprimir la memoria cuando la utilización de la misma se acerca al 80%. Intenta limitar el número de aplicaciones en ejecución a un número bajo, y reinicia o elimina las aplicaciones que consumen demasiada memoria. Entonces tu Mac debería funcionar tan rápido como debería. Utiliza el Monitor de Actividad o el siguiente comando para ver qué aplicaciones están utilizando la mayor parte de la memoria:

$ top -o MEM

a través del medio

Hay más configuraciones con las que se puede jugar y que son accesibles de forma similar, pero todas parecen no merecer la pena

0 votos

Desactivar swap a través de vm.compressor_mode funcionó hasta 10.9, pero congeló 10.10 y versiones posteriores de OS X/MacOS. :(

1 votos

@dszakal Los ajustes compressor_mode sólo se introdujeron junto con vm-compression 10.9 y los ajustes están presentes en 10.12 también. No puedo arrancar la prueba de la máquina 10.14 ahora, pero la configuración está en 10.14, así ¿Qué no está funcionando con esto en su configuración?

0 votos

En 10.10 se congeló después de una hora y en 10.11 se congeló cuando se pulsa el botón de apagado. Así que no me atreví a probar después de 10.12 como nadie se atrevió a responder a esto: apple.stackexchange.com/questions/275303/

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X