¿Cómo se limita / calcula el valor de vm.memory_pressure
en OS X 10.10.2 - Yosemite?
He investigado varias responde a esta pregunta y estoy intentando algunas cosas en la línea de comando 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 se ve bien y parece ser lo que usa 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 cierta cantidad de verde, y está irregular, lo que significa que el valor está cambiando claramente con el tiempo, no solo 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 solo podría ser el valor Y del gráfico por un par de razones.
Primero, vm.memory_pressure solo permanece en 0 casi todo el tiempo bajo carga normal, y el gráfico no se ubica en 0.
Segundo, no son consistentes entre sí. Mirando el valor de memory_pressure, es más bajo cuando en realidad tenía páginas con deseos (3220 buscados y una presión de solo 1) que cuando tenía 5431 libres y ninguno quería (la presión era de 277). Y de alguna manera, es una presión aún más baja que cuando tenía 32572 libres (y tenía una presión de 1693).
Entonces, cuando traza ese gráfico, ¿cuál es el cálculo para el valor de Y, y cómo puedo obtener los datos que necesito para calcularlos desde la línea de comandos? Estoy buscando hacer una herramienta de línea de comandos que arroje un porcentaje de cuán alta sería la línea actual en esa gráfica, así que necesito saber cómo calcular el valor en un momento dado, así como cuál es el rango de Los valores posibles son.