¿Cómo puedo usar ps
, o alguna variación del mismo... para obtener un valor que corresponda aproximadamente al valor de "Memoria comprimida" que informa Apple en Activity Monitor.app
?
username 52036 100.1 24.1 8026832 3035512 ?? Rs ...com.apple.WebKit.WebContent
Ok, lo que aparece ps aux
nos dice...
3035512
, alias 2.83 Gb
, que corresponde a "Memoria Privada"8026832
, alias 7.48 Gb
que no parece corresponder a nada . (Aunque posiblemente podría ser ("Memoria" 3.89
+ "Memoria privada" 2.84
+ "Memoria comprimida" 1.05
)?¿Hay alguna forma "normal" de acceder a esta métrica, o es solo un valor "mágico" que se le ocurrió a Apple?
No hay nada mágico en la memoria comprimida. Es algo que se agregó a 10.9 como un último paso antes de que el sistema cambie la RAM al almacenamiento. Según John Siracusa , esto cumple tres funciones principales:
La compresión de memoria es un juego triple para Mavericks. Es una victoria de rendimiento; comprimir y descomprimir datos en la RAM es mucho más rápido que leer y escribir en el disco, incluso en un SSD. Es una ganancia de energía; cuanto menos tiempo pase moviendo datos entre la RAM y el disco, más tiempo podrá pasar el sistema en su estado inactivo. Y finalmente, es una ganancia de capacidad; Mavericks puede manejar cargas de trabajo mucho más exigentes que las versiones anteriores de OS X antes de llorar.
En cuanto a obtener los detalles desde la línea de comando, eso puede ser difícil de alcanzar. Los números generales de compresión son fáciles con un par de herramientas:
memory_pressure
vm_stat
No creo que ninguna invocación de ps
haga el truco, pero tal vez alguien pueda corregir eso. Puede ver los detalles de implementación en este hilo: valores de vm_compressor_mode (vm.compressor_mode) para la memoria comprimida habilitada en OS X
Lo mejor que puedo conseguirte es mirar toda la memoria "intercambiada y/o comprimida" usando el vmmap
comando. Básicamente, antes del intercambio, las regiones de memoria marcadas para el intercambio se comprimen. Si eso ahorra suficiente espacio para aliviar el algoritmo de intercambio, no ocurre ningún intercambio. De lo contrario, las regiones comprimidas se intercambian al almacenamiento.
vmmap -swapped [PID]
Tendría que manejar la adición de las regiones y no estoy seguro de si el monitor de actividad informa que todo se intercambió y comprimió en la columna que mencionó, pero eso es algo que podría descubrir mediante la inspección y/o el uso de instrumentos de Xcode para correlacionar lo que ve desde la línea de comando con el monitor de actividad para algunos procesos.
Esto funciona para mi :
VAR=`top -l 1 | awk '/processName/ {print $10 }'`
Para obtener memoria comprimida + normal
VAR=`top -l 1 | awk '/processName/ {print $8 + $10 }'`
Monitor de actividad: haga clic en el botón Memoria y, a continuación, seleccione la columna Memoria comprimida.
sin ladera