Problemas al comprender la memoria inactiva en MacOSX

8

Pensé que entendía cómo MacOSX administra la memoria, pero recientemente me he quedado desconcertado por su rendimiento. Aquí está la situación:

  1. Tengo un nuevo sistema Core i7 con 8 GB de memoria física que ejecuta MacOSX 10.6.7. Hay algunas aplicaciones que se ejecutan regularmente y ocupan parte de la memoria: Safari, Mail, Xcode, Terminal, etc.
  2. Necesito ejecutar tres procesos de 64 bits en paralelo, cada uno de los cuales usa aproximadamente 2000M de memoria real.
  3. Aunque la memoria cableada se mantiene por debajo de 1000M (es decir, tengo más de 7000M disponibles para los procesos), veo una gran actividad de paginación que conduce a un rendimiento muy malo de los tres procesos con uso intensivo de memoria que inicié.
  4. Aparentemente, no me estoy quedando sin la memoria RAM disponible, ya que la memoria inactiva informada se mantiene en torno a los 2500M y la memoria activa no supera los 5000M.

¿Puede alguien darme una pista de por qué MacOSX no libera la memoria inactiva para los procesos que la necesitan, en lugar de recurrir a la paginación? Además, ¿existe alguna forma adecuada de influir en la gestión de la memoria por parte del sistema?

    
pregunta Ventzi Zhechev 05.04.2011 - 08:39

2 respuestas

5

He encontrado, en mi máquina, que Mac OS X es un poco lento para calcular las cosas correctas.

Cada vez que hago algo particularmente con hambre de memoria, a menudo abandonaré algunas aplicaciones para ayudarlo. Safari es un gran problema de memoria si se ha estado ejecutando durante un tiempo y es el primero de la lista de aplicaciones para salir. En mi caso, esto fue cuando intenté ejecutar VMWare Fusion sin suficiente memoria RAM real.

Probablemente lo sepa, pero aquí hay un par de enlaces a la documentación de Apple que describen el uso de la memoria y la memoria virtual en OS X:

enlace

enlace

Aquí está la explicación que se proporciona: La lista inactiva contiene páginas que actualmente se encuentran en la memoria física pero que no se ha accedido recientemente. Es difícil obtener una definición exacta de lo que esto significa, pero parece incluir un caché del sistema de archivos así como una memoria inactiva real.

La memoria inactiva es probablemente una cosa difícil de manejar en un sistema operativo interactivo con GUI donde el usuario puede optar por cambiar a cualquier aplicación en ejecución en cualquier momento y proporcionar capacidad de respuesta en este tipo de situaciones es importante ... pero la otra cara de Es decir, en una situación como la suya, el sistema operativo no sabe muy bien qué es lo correcto.

Es posible purgar (parte de) la memoria inactiva utilizando purge comando. Es posible que esto deba instalarse instalando las herramientas de CHUD, pero es posible que ya lo tenga instalado. No he intentado usar el comando de purga así que YMMV ...

He divagado un poco y puedo o no haber respondido tu pregunta. Después de escribir todo esto, encontré otra pregunta en este sitio que en gran parte de la misma información también podría ayuda.

    
respondido por el Mike Meyers 05.04.2011 - 17:30
1

MacOS sí libera la memoria inactiva, pero solo si realmente lo necesita. Esa "memoria inactiva" puede ser en realidad una memoria que el kernel cree que es un candidato para la paginación, pero aún no se ha decidido, a la espera de que pase más tiempo sin que se haga referencia a la memoria inactiva (en cambio, se está enfocando en la paginación de la memoria). que realmente es menos probable que se vuelva a utilizar pronto). En tal caso, "purgar" la memoria inactiva causará que su rendimiento se vea afectado (ya que las páginas que se usan con frecuencia tendrían que leerse desde el disco antes de que su programa pueda continuar su ejecución).

purge es útil para que los desarrolladores simulen las condiciones de inicio de una aplicación, por ejemplo, para ver cuánto tiempo se tarda en ejecutar una aplicación la primera vez después de un arranque o una pausa prolongada. Para el usuario típico, purge no es muy útil (y en realidad causará una degradación temporal del rendimiento).

    
respondido por el jhfrontz 07.12.2012 - 17:01

Lea otras preguntas en las etiquetas