Cómo deshabilitar el caché de disco en Yosemite

Mi MacBook se congela constantemente debido al uso de toda la RAM (8 GB). El caché de disco parece ser la causa. El comando sudo purgesolo ayuda un poco. En algunas versiones anteriores de OS X, mi MacBook funcionaba bien porque tenía (solo) suficiente RAM para ejecutar Xcode (con un gran proyecto) sin tener que cambiar constantemente.

Este es el uso de memoria después de compilar mi proyecto una vez. El uso de memoria de Xcode puede aumentar unos cientos de MB más después de unas pocas horas de uso.

ingrese la descripción de la imagen aquí

La memoria nos presiona bajo y 0 intercambio, así que no creo que te estés quedando sin memoria
El uso de la CPU era bajo cuando el sistema estaba colgado. El bloqueo estaba altamente correlacionado con el uso de la memoria.
El uso de memoria que se muestra aquí es mínimo y no es un problema
@keithyip Experimentó un poco en el pasado , entonces, ¿cuál es su configuración actual de vm_compressor? ¿Su "proyecto" está disponible gratuitamente (por ejemplo, github) para ejecutar una prueba con él?
@klanomath Lo cambié al valor predeterminado, 4. Traté de deshabilitar el compresor porque OS X no pudo mantener FPS constante en los juegos. El único inconveniente era que OS X fallaba si no había suficiente RAM. El proyecto es la aplicación de mi empresa. Es de código cerrado. Una forma alternativa fácil de ocupar su RAM usando Chrome sin matarlo durante unos días o intente usar memory_pression.

Respuestas (2)

Esto no responde directamente a su pregunta, ya que no conozco una forma de desactivar el mecanismo de caché de archivos en OSX. Habiendo dicho eso, no puedo pensar en una buena razón POR QUÉ querrías hacerlo en primer lugar. ¿Qué te hace estar tan seguro de que se debe al caché de archivos?

La memoria caché de archivos es algo dinámico en el sentido de que aumenta de tamaño a medida que realiza más operaciones de E/S con el disco, pero se purga y se reduce tan pronto como una aplicación necesita RAM para hacer algo. Lo que vive en el caché de archivos son copias de archivos usados ​​recientemente con la idea de que si los necesita nuevamente poco después, la E/S será mucho más rápida ya que ya está en la RAM. Si bien esto es similar a la función de caché de RAM del MacOS anterior, la gran diferencia aquí es que es completamente dinámico y crece para hacer uso de la RAM no utilizada en su sistema y se reducirá tan pronto como ALGO necesite RAM. En otras palabras, no está bloqueando su memoria y no debería ser la causa de ninguna ralentización en su Mac.

Dicho todo esto, existe un cierto equilibrio entre cómo OSX administra su RAM. He visto que hay pequeños retrasos a medida que las cosas entran o salen del estado "comprimido" y, en general, la idea es que una vez que algo se comprime, permanecerá allí hasta que haya una necesidad real de lo contrario. La mayor causa de un retraso sería si estuviera usando el intercambio, ya que esa es la forma de memoria más lenta, pero su captura de pantalla incluso indica 0 bytes dedicados al intercambio. Dejando a un lado la compresión y el intercambio, no me sorprendería si hay algunos gastos generales y demoras como resultado de mezclar todo esto cuando se está utilizando toda su RAM. Sin embargo, la pregunta podría ser más sobre qué aplicaciones se congelan cuando se encuentra en esta situación. Tal vez incluso su disco esté cerca de su capacidad y usted

En general, es posible que tenga algún beneficio a corto plazo al purgar o deshabilitar el caché de archivos, pero me arriesgaría a suponer que en realidad degradaría su rendimiento, ya que no obtendría el beneficio de un caché del sistema de archivos.

"sudo purge" fue muy lento (orden de minutos), así que supongo que el problema fue el bajo rendimiento en la gestión de la memoria caché del disco. Todos los problemas de bloqueo aparecieron después de la actualización de OS X con una nueva administración de memoria. Cuando ocurrieron, estaban altamente correlacionados con el uso de memoria de 7,99 GB. La congelación fue en todo el sistema. Xcode y Safari seguían sin responder. El pequeño estrangulador también era malo pero menos problemático y era otra historia. Para su referencia, mi espacio libre en disco es de 80 GB. Los datos derivados de mi proyecto son 6GB. La antigua gestión de la memoria fue muy buena para trabajar con eso. Sin estrangulamiento pequeño, sin congelación grande.
Eso sería útil si alguien pudiera proporcionar comandos para deshabilitar el caché de disco para la prueba. La nueva gestión de la memoria es una broma (¿o una estrategia empresarial?) para los dispositivos Mac antiguos.
@keithyip, en realidad preferí el rendimiento de RAM por debajo de 10.8 en comparación con lo que ahora está sucediendo bajo el capó en 10.9 (no se puede actualizar a 10.10 debido a que Apple borró el manejo de la tarjeta inteligente). Definitivamente noto pausas aquí y allá que imagino que son análisis y liberación de porciones de aplicaciones en memoria que se consideran válidas para descargar. ¿Quizás en algún lugar aquí es por qué la nueva dirección de codificación de Apple está tratando de evitar confiar en el recolector de basura de ObjC?
@keithyip & bjb: estoy de acuerdo, la gestión de la memoria fue excelente en Mavericks... hasta que te acercaste a tu RAM real, luego fue abismal. Mi solución fue poner otros 16 GB, así que no tengo idea de cómo Yosemite lo maneja, ya que nunca llego allí :(
Estoy usando un Macbook pro 2011. Lamentablemente, tengo que seguir actualizando OS X porque Xcode necesita el OS X más nuevo. No vale la pena actualizar la RAM, así que estoy buscando soluciones de software.

Si sudo purgeno ayudó, intente deshabilitar el buscapersonas dinámico, por ejemplo

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

Advertencia: Esto deshabilita por completo la capacidad de paginación de Mac OS X, así que utilícelo solo cuando tenga una gran cantidad de RAM, pero su Mac todavía usa archivos de intercambio. Si su sistema tiene protección SIP, primero deberá desactivarla (no recomendado).

También puede eliminar manualmente los archivos de intercambio de /private/var/vm/, por ejemplo,

sudo rm -f /private/var/vm/swapfile*

luego reinicie la computadora.

Fuente: Memoria virtual de Mac: qué es, la ubicación de intercambio y cómo deshabilitar el intercambio


Para deshabilitar completamente el intercambio de memoria, configure vm_compressoren 1, por ejemplo

sudo nvram boot-args="vm_compressor=2"

o configúrelo como 4predeterminado, vea los otros valores (desde vm_pageout.h):

#define VM_PAGER_DEFAULT                0x1 /* Use default pager. */
#define VM_PAGER_COMPRESSOR_NO_SWAP         0x2 /* In-core compressor only. */
#define VM_PAGER_COMPRESSOR_WITH_SWAP           0x4 /* In-core compressor + swap backend. */
#define VM_PAGER_FREEZER_DEFAULT            0x8 /* Freezer backed by default pager.*/
#define VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP     0x10    /* Freezer backed by in-core compressor only i.e. frozen data remain in-core compressed.*/
#define VM_PAGER_FREEZER_COMPRESSOR_WITH_SWAP       0x20    /* Freezer backed by in-core compressor with swap support too.*/

Para verificar su valor actual, ejecute:

sysctl vm.compressor_mode

Para volver a la normalidad, elimine los argumentos de arranque mediante:

sudo nvram -d boot-args

reinicie y restablezca su NVRAM .

Ver: vm_compressor=VM_PAGER_DEFAULT en Yosemite causó congelación cuando la memoria física estaba llena