W jaki sposób vm.memory_pressure
wartość jest ograniczona / obliczana w systemie OS X 10.10.2 - Yosemite?
Przeszukałem kilka odpowiedzi na to pytanie i próbuję kilku rzeczy w wierszu polecenia, aby uzyskać dokładne wartości, zamiast patrzeć na wykresy w monitorze aktywności.
Przy niewielkim obciążeniu systemu:
~ ❯❯❯ 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
Poziom kern.memorystatus_vm_pressure_level wygląda dobrze i wydaje się być tym, czego używa do pokolorowania wykresu (zielony dla 1-NORMALNY, żółty dla 2-WARN, czerwony dla 4-KRYTYCZNY). Jednak vm.memory_pressure wynosi 0, a wykres ma trochę zieleni i jest postrzępiony, co oznacza, że wartość zmienia się wyraźnie w czasie, a nie tylko w pozycji 0.
Pod dużym obciążeniem wygląda to tak:
❯❯❯ 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
Albo to...
~ ❯❯❯ 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
Albo to...
~ ❯❯❯ 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
Tutaj jestem zdezorientowany. Żadna z tych wartości jako taka nie mogłaby być wartością Y wykresu z kilku powodów.
Po pierwsze, vm.memory_pressure po prostu prawie zawsze ma 0 przy normalnym obciążeniu, a wykres nie ma 0.
Po drugie, nie są ze sobą zgodne. Patrząc na wartość memory_pressure, jest on niższy, gdy rzeczywiście chciał stron (3220 chciał i nacisk tylko 1), niż gdy miał 5431 wolnego i żadnego nie chciał (ciśnienie 277). I w jakiś sposób jest to nawet niższe ciśnienie niż wtedy, gdy miało 32572 wolnego (i miało 1693 ciśnienia).
Kiedy więc rysuje ten wykres, jakie jest obliczenie wartości Y i jak mogę uzyskać dane potrzebne do obliczenia jej z wiersza poleceń? Chcę utworzyć narzędzie wiersza polecenia, które wypluje procent wysokości bieżącej linii na tym wykresie, więc muszę wiedzieć, jak obliczyć wartość w danym momencie, a także jaki zakres możliwe wartości to.