In che modo vm.memory_pressure
il valore è limitato / calcolato su OS X 10.10.2 - Yosemite?
Ho cercato diverse risposte 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 sotto 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 corretto e sembra essere quello che usa per colorare il grafico (verde per 1-NORMALE, giallo per 2-WARN, rosso per 4-CRITICO). Tuttavia, vm.memory_pressure è 0 e il grafico ha una certa quantità di verde, ed è frastagliato, il che significa che il valore sta cambiando chiaramente nel tempo, non solo seduto a 0.
Sotto carico pesante sembra così:
❯❯❯ 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 sempre 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 in realtà aveva desiderato 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 questa è anche una pressione inferiore rispetto a quando aveva 32572 libero (e aveva una pressione di 1693).
Quindi, quando traccia quel grafico, qual è il calcolo per il valore Y e come posso ottenere i dati necessari per calcolarli dalla riga di comando? Sto cercando di creare uno strumento da riga di comando che sputi una percentuale di quanto sarebbe alta la linea corrente su quel grafico, quindi ho bisogno di sapere come calcolare il valore in qualsiasi momento, nonché quale sia l'intervallo di i valori possibili sono.