Como vm.memory_pressure
o valor do limite é / calculado no OS X 10.10.2 - Yosemite?
Eu pesquisei várias respostas para esta pergunta e estou tentando algumas coisas na linha de comando para obter valores exatos, em vez de olhar para os gráficos no Activity Monitor.
Com o sistema sob carga leve:
~ ❯❯❯ 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
O kern.memorystatus_vm_pressure_level parece correto e parece ser o que ele usa para colorir o gráfico (verde para 1-NORMAL, amarelo para 2-WARN, vermelho para 4-CRITICAL). No entanto, vm.memory_pressure é 0 e o gráfico possui uma certa quantidade de verde e é irregular, o que significa que o valor está claramente mudando ao longo do tempo, e não apenas sentado em 0.
Sob carga pesada, fica assim:
❯❯❯ 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
Ou isto...
~ ❯❯❯ 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
Ou isto...
~ ❯❯❯ 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
Aqui é onde estou confuso. Nenhum desses valores sozinho poderia ser o valor Y do gráfico por alguns motivos.
Primeiro, vm.memory_pressure fica em 0 quase o tempo todo sob carga normal e o gráfico não fica em 0.
Segundo, eles não são consistentes um com o outro. Observando o valor de memory_pressure, é mais baixo quando ele realmente tinha páginas desejadas (3220 desejadas e pressão de apenas 1) do que quando tinha 5431 livre e nenhuma desejada (a pressão era 277). E, de alguma forma, essa pressão é ainda mais baixa do que quando o 32572 estava livre (e o 1693 tinha pressão).
Então, quando ele plota esse gráfico, qual é o cálculo para o valor Y e como posso obter os dados necessários para calculá-los na linha de comando? Estou procurando criar uma ferramenta de linha de comando que cuspa uma porcentagem da altura da linha atual naquele gráfico, então preciso saber como calcular o valor a qualquer momento, bem como qual o intervalo de valores possíveis são.