Indique a macOS que solo use la memoria comprimida y de intercambio cuando sea realmente necesario (macOS 10.14 Mojave)

4

Como no se recomienda deshabilitar la memoria de intercambio y / o la compresión y tampoco es una opción estable después de los 10.9 Mavericks (a pesar de que la configuración de vm existe), estoy condenado después de unos días de ejecutar mi Mac con mi memoria escribiendo en el extremo Desde las páginas óptimas de memoria. Como todo se puede intercambiar o comprimir la memoria con tanta facilidad, necesito reiniciar mi sistema con relativa frecuencia (a pesar de mi RAM de 16 GB).

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

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

vm.swappiness=5

También puedo considerar una solución sobre el almacenamiento en caché de archivos (que por lo general consume de manera aleatoria toneladas de memoria sin una razón válida y no puede eliminarlo antes de que la RAM recurra a los purgatorios menos óptimos de la memoria comprimida y el intercambio). Por ejemplo, aquí ZFS tiene una opción en FreeBSD para maximizar el tamaño de la memoria caché de archivos en la memoria:

vfs.zfs.arc_max="1536M"

En macOS, se está ejecutando la solución alternativa más conocida para el problema de la caché de archivos

# /usr/sbin/purge

Que es incluso "cronnable". Así que esto vacía el caché de archivos, pero es poco probable que sea óptimo. Se ruboriza demasiadas cosas. Además, si hay algo en la memoria de intercambio y / o comprimido, a pesar de la purga, permanece allí, por lo que los softwares que los usan se mantienen lentos (y siento esa lentitud, confía en mí).

¿Existe alguna solución para hacer que macOS sea menos probable que use el caché de archivos, la memoria comprimida o el intercambio (pero aún así conserva la primera para el rendimiento y las dos últimas para la emergencia)?

    
pregunta dszakal 22.10.2018 - 18:16

2 respuestas

3

La primera y mejor línea de defensa sería eliminar procesos o servicios que no sean necesarios.

Entonces podrías controlar la compresión vm:

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

Establezca estas variables mediante un comando nvram:

  

El modo 0x1, VM_PAGER_DEFAULT, apaga el compresor de memoria y el intercambio, lo que se ha demostrado que es perjudicial para la estabilidad del sistema. Los modos 0x8, 0x10 y 0x20 son los llamados modos “congeladores”, que “congelan” el sistema operativo al instante cuando la memoria está bajo presión. No quieres probarlos.

     

El modo 0x2, VM_PAGER_COMPRESSOR_NO_SWAP, es la mejor opción aquí. Proporciona compresor de memoria con cambio deshabilitado. En otras palabras, cuando la memoria está bajo presión, macOS intentará comprimir la memoria activa pero no cableada, liberando así parte de la memoria al sistema. macOS utiliza el algoritmo WKdm para comprimir y descomprimir la memoria, que es rápida y eficiente con la batería. Sin embargo, el pánico del núcleo aún es posible si no hay más memoria comprimible.   Para cambiar del modo 0x4 a 0x2, use este comando y reinicie:

     

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

     

Cuando se usa el modo 0x2, la presión de la memoria debe controlarse de cerca para evitar el pánico del kernel. Una vez que la memoria comprimida crezca cerca del 50% de la capacidad total de la memoria, le gustaría cerrar algunas de las aplicaciones en ejecución o simplemente reiniciar el sistema.

     

Evita 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 solo se puede lograr cuando no se comprime ninguna de las memorias. Use el Monitor de actividad o el siguiente comando para vigilar el uso de la memoria:

     

$ top -o CMPRS

     

Desde mi experiencia, macOS comienza a comprimir la memoria cuando la utilización de la memoria está cerca del 80%. Intente limitar el número de aplicaciones en ejecución a un número bajo y reinicie o elimine las aplicaciones que consumen demasiada memoria. Entonces tu Mac debería funcionar tan rápido como debería. Use 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 se puede acceder a ellas de manera similar, pero todas parecen que realmente no valen la pena

    
respondido por el LangLangC 22.10.2018 - 18:33
1

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

No modifique el diseño y el proceso fundamentales de la administración de la memoria virtual de macOS porque tiene un sistema o una carga de trabajo que se filtra tanto que se está acumulando el intercambio y el algoritmo se descompone. Cualquier cambio que realice en el algoritmo se interrumpirá si tiene un software que no asigna la memoria correctamente, por lo que es probable que este problema deba volver a aislarse e identificar qué está causando la presión de la memoria para que la compresión y el intercambio se conviertan en un síntoma del problema subyacente.

Ahora, puede que tengas una buena razón por la que estás pidiendo que modifiques la memoria virtual, pero el micro kernel de macOS no está diseñado para el nivel de ajuste de Linux y si realmente necesitas administrar la VM con tanta fuerza. Le animo a ubicar ese código en un servidor separado a través de ponerlo en la nube, en un segundo dispositivo local o incluso virtualizar el sistema operativo invitado de Linux sobre macOS.

Luego tendrá la mejor memoria para el sistema operativo real y el software virtual (VMWare Fusion es mi primera recomendación general, pero eche un vistazo a Parallels o incluso a algunas opciones gratuitas si tiene tiempo e inclinación) para que pueda poner el código que necesita un puño de hierro que gobierne la memoria virtual en Linux y permita que las aplicaciones mac sean aplicaciones mac.

Y solo para arriesgarme, en los diecisiete años transcurridos desde el lanzamiento de OS X, he trabajado con docenas de personas que tomaron el camino que usted propuso: busque un caso en el que la memoria virtual señale un problema y luego cambie de VM. para superar esas necesidades de software, en todos los casos, terminamos arreglando las aplicaciones o arreglando dónde ejecutamos las cosas en lugar de encontrar un entorno mágico o una mortificación que no causara más daño que bien.

Aliento a todos a probar estas cosas, especialmente si desea conocer los aspectos internos de un sistema operativo, pero la premisa aquí de que VM debe cambiar no parece ser cierta según los detalles proporcionados o la larga experiencia de intentar esto en el pasado. Háganos saber si encuentra un entorno que funcione para usted y no desapruebe a otras personas si sugieren cosas: así es como todos aprendemos a través de los desafíos de ingeniería y software, incluso contra las probabilidades de que no funcionen al final. .

    
respondido por el bmike 03.11.2018 - 17:19

Lea otras preguntas en las etiquetas