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-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值的计算是什么,如何从命令行获取计算所需的数据?我正在寻找一个命令行工具,该工具将吐出当前行在该图形上的高度的百分比,因此我需要知道如何在任何给定时间计算该值以及其范围可能的值是。