Как vm.memory_pressure
значение ограничено / рассчитано в OS X 10.10.2 - Yosemite?
Я исследовал несколько ответов на этот вопрос и пробую несколько вещей в командной строке, чтобы получить точные значения, а не смотреть графики в Activity Monitor.
С системой под небольшой нагрузкой:
~ ❯❯❯ 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-NORMAL, желтый для 2-WARN, красный для 4-CRITICAL). Тем не менее, 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.
Во-вторых, они не соответствуют друг другу. Если посмотреть на значение memory_pressure, оно ниже, когда ему действительно нужны страницы (3220 разыскиваемых и давление только 1), чем когда у него было 5431 свободное и ни одного разыскиваемого (давление было 277). И почему-то это даже более низкое давление, чем когда у него было 32572 свободных (и было 1693 давления).
Итак, когда он строит этот график, как рассчитывается значение Y и как я могу получить данные, необходимые для его вычисления из командной строки? Я хочу создать инструмент командной строки, который будет отображать процент от высоты текущей строки на этом графике, поэтому мне нужно знать, как рассчитать значение в любой момент времени, а также каков диапазон значений. Возможные значения