In che modo il valore di vm.memory_pressure
è limitato / calcolato su OS X 10.10.2 - Yosemite?
Ho studiato diversi risponde a questa domanda e sto provando alcune cose sulla riga di comando per ottenere valori esatti piuttosto che guardare i grafici in Activity Monitor.
Con il sistema in condizioni di carico leggero:
~ ❯❯❯ 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
Il kern.memorystatus_vm_pressure_level sembra giusto e sembra essere quello che usa per colorare il grafico (verde per 1-NORMAL, giallo per 2-WARN, rosso per 4-CRITICAL). Tuttavia, vm.memory_pressure è 0 e il grafico ha una certa quantità di verde, ed è frastagliato, il che significa che il valore cambia chiaramente nel tempo, non solo seduto a 0.
In condizioni di carico pesante, appare come segue:
❯❯❯ 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 questo ...
~ ❯❯❯ 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 questo ...
~ ❯❯❯ 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
Ecco dove sono confuso. Nessuno di questi valori da solo potrebbe essere il valore Y del grafico per un paio di motivi.
Innanzitutto, vm.memory_pressure si trova a 0 quasi tutto il tempo sotto carico normale e il grafico non si trova a 0.
In secondo luogo, non sono coerenti tra loro. Guardando il valore memory_pressure, è inferiore quando effettivamente voleva pagine (3220 voluto e pressione di solo 1) rispetto a quando aveva 5431 libero e nessuno voleva (la pressione era 277). E in qualche modo è anche una pressione inferiore rispetto a quando aveva 32572 gratis (e aveva una pressione di 1693).
Quindi, quando traccia questo grafico, qual è il calcolo per il valore Y e come posso ottenere i dati che mi servono per calcolarlo dalla riga di comando? Sto cercando di creare uno strumento a linea di comando che sputerà una percentuale di quanto alta sarà la linea corrente su quel grafico, quindi ho bisogno di sapere come calcolare il valore in un dato momento, così come quale intervallo di i valori possibili sono.