42 votos

¿Cómo se calcula el valor Y del gráfico de presión de la memoria en el Monitor de Actividad?

¿Cómo es vm.memory_pressure ¿el valor de la tarjeta está limitado/calculado en OS X 10.10.2 - Yosemite?

He investigado varios respuestas a esta pregunta y estoy probando algunas cosas en la línea de comandos para obtener valores exactos en lugar de mirar los gráficos en el Monitor de Actividad.

Con el sistema bajo carga ligera:

~  sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 2683717
vm.memory_pressure: 0
kern.memorystatus_vm_pressure_level: 1

El kern.memorystatus_vm_pressure_level parece correcto, y parece ser lo que utiliza para colorear el gráfico (verde para 1-NORMAL, amarillo para 2-WARN, rojo para 4-CRITICAL). Sin embargo, vm.memory_pressure es 0 y el gráfico tiene una cierta cantidad de verde, y es irregular, lo que significa que el valor está cambiando claramente con el tiempo, no sólo en 0.

Bajo carga pesada se ve así:

 sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 32572
vm.memory_pressure: 1693
kern.memorystatus_vm_pressure_level: 4

O esto...

~  sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 0
vm.page_free_count: 5431
vm.memory_pressure: 277
kern.memorystatus_vm_pressure_level: 4

O esto...

~  sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
vm.vm_page_free_target: 4000
vm.page_free_wanted: 3220
vm.page_free_count: 805
vm.memory_pressure: 1
kern.memorystatus_vm_pressure_level: 4

Aquí es donde estoy confundido. Ninguno de estos valores por sí solo podría ser el valor Y del gráfico por un par de razones.

En primer lugar, vm.memory_pressure se queda en 0 casi todo el tiempo bajo carga normal, y el gráfico no se queda en 0.

En segundo lugar, no son coherentes entre sí. Mirando el valor de memory_pressure, es más bajo cuando tenía realmente páginas deseadas (3220 deseadas y presión de sólo 1) que cuando tenía 5431 libres y ninguna deseada (la presión era de 277). Y de alguna manera esa es una presión aún más baja que cuando tenía 32572 libres (y tenía 1693 de presión).

Entonces, cuando traza ese gráfico, ¿cuál es el cálculo del valor Y, y cómo puedo obtener los datos que necesito para calcularlo desde la línea de comandos? Estoy tratando de hacer una herramienta de línea de comandos que escupe un porcentaje de lo alto que la línea actual sería en ese gráfico, así que necesito saber cómo calcular el valor en un momento dado, así como lo que el rango de valores posibles son.

2voto

Monomeeth Puntos 139

En la actualidad, esta es sólo una respuesta parcial. Esta respuesta no está completa hasta que se elimine esta frase.

La cuestión de esta pregunta es que, a primera vista, el gráfico de la presión de la memoria no tiene mucho sentido al compararlo con lo que se informa en el Terminal cuando se utiliza el comando descrito por el OP:

sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level

Sin embargo, el problema aquí es que este comando limita los valores vm que reporta. De hecho, en realidad hay 105 valores en total, pero este comando sólo informa de los siguientes cinco valores:

vm.vm_page_free_target:
vm.page_free_wanted:
vm.page_free_count:
vm.memory_pressure:
kern.memorystatus_vm_pressure_level:

NOTA: Los valores numéricos suelen aparecer después de los dos puntos (:), pero no los he incluido.

Obviamente, la inmensa mayoría de los 105 valores vm no forman parte del cálculo real que determina la presión de la memoria, pero el problema aquí es que los cinco valores anteriores no son los únicos que se utilizan para calcular la presión de la memoria .

Por ejemplo, mientras que la salida anterior proporciona algunos de los diversos gratis valores, no está proporcionando ninguno de los inactivo valores, etc.

Estos valores son importantes porque el algoritmo de presión de la memoria calcula una relación entre esos valores, y la relación entre esos valores no es evidente en la salida producida por el comando en la pregunta del OP.

I piense en Puede que tenga alguna información técnica que pueda arrojar más luz sobre esto. Actualizaré esta respuesta de cualquier manera dentro de la semana.

[ACTUALIZACIÓN DE ESTADO]

No he podido encontrar la información técnica que buscaba. Sin embargo, estoy bastante seguro de que todavía lo tengo - probablemente en algunas copias de seguridad de CDR/DVDR antiguas. Actualizaré esta respuesta una vez que la haya encontrado, o cuando esté seguro de que no la encontraré.

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