Як vm.memory_pressure
обмежується / обчислюється значення для OS X 10.10.2 - Yosemite?
Я дослідив декілька відповідей на це запитання і намагаюся зробити кілька речей у командному рядку, щоб отримати точні значення, а не дивитись на графіки в "Моніторі діяльності".
З системою під невеликим навантаженням:
~ ❯❯❯ 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
Kern.memorystatus_vm_pressure_level виглядає правильно і, здається, є тим, що він використовує для забарвлення графіка (зелений для 1-НОРМАЛЬНОГО, жовтий для 2-ТЕХНІЧНОГО, червоний для 4-КРИТИЧНИЙ). Однак vm.memory_pressure дорівнює 0, а в графіку є зелена кількість, і він зазубрин, тобто значення явно змінюється з часом, а не просто сидить на 0.
Під великим навантаженням це виглядає приблизно так:
❯❯❯ 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
Або це ...
~ ❯❯❯ 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
Або це ...
~ ❯❯❯ 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
Ось де я розгублений. Жодне з цих значень не може бути значенням Y графа з кількох причин.
По-перше, vm.memory_pressure просто сидить при 0 майже весь час при нормальному навантаженні, а графік не сидить при 0.
По-друге, вони не узгоджуються між собою. Якщо дивитися на значення пам'яті_тиск, воно нижче, коли воно насправді бажало сторінок (3220 розшуку та тиск лише 1), ніж тоді, коли було 5431 вільних і жодних не бажаних (тиск 277). І дещо це навіть нижчий тиск, ніж коли було 32572 вільних (і було 1693 тиску).
Отже, коли він побудує графік, що таке обчислення для значення Y, і як я можу отримати дані, необхідні для обчислення, з командного рядка? Я хочу створити інструмент командного рядка, який виплюне відсоток того, наскільки високим буде поточний рядок на цьому графіку, тому мені потрібно знати, як обчислити значення в будь-який момент часу, а також який діапазон можливі значення є.