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値の計算は何ですか?コマンドラインから計算する必要があるデータをどのように取得できますか?私は、グラフ上の現在の行の高さの割合を吐き出すコマンドラインツールを作成しようとしているので、特定の時間に値を計算する方法と、その範囲を知る必要があります可能な値は次のとおりです。