Activity Monitorのメモリ圧力グラフのY値はどのように計算されますか?


41

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


7
いい質問ですね。アクティビティモニターには0%から100%のスケールで圧力が表示されますが、このコマンドラインコメントに参照が見つかりません。今週、答えを見つけるのに十分掘り下げられるかどうかを確認します。10.10.xのみに興味があると思いますか?
bmike

3
ありがとうございました。そして、はい、私は10.10.2にいるので、これが私が心配している唯一のものです。
ラグトゥリ

5
魅力的なデータポイント。アルゴリズムがどのように設計またはコード化されているのか、あるいはバージョンごとに同じままであっても、私にはまだ明らかではありません。apple.stackexchange.com/questions/107126/…をご覧ください。これに関する優れた解説やその他のデータがあります。
bmike

回答:


2

現在のところ、これは部分的な答えにすぎません。この回答は、この文が削除されるまで完了しません。

この質問に関することは、一見、OPで概説されているコマンドを使用するときにターミナルで報告されるものと比較すると、メモリ圧力グラフはあまり意味をなさないということです。

sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level

ただし、ここでの問題は、このコマンドが報告するvm値を制限することです。実際、合計で105個の値がありますが、このコマンドは次の5つの値のみを報告します。

vm.vm_page_free_target:
vm.page_free_wanted:
vm.page_free_count:
vm.memory_pressure:
kern.memorystatus_vm_pressure_level:

注:通常、数値はコロン(:)の後に表示されますが、これらは含めていません。

明らかに、105 vmの値の圧倒的多数は、メモリ負荷を決定する実際の計算の一部ではありませんが、ここでの問題は、上記の5つの値がメモリ負荷の計算に使用される唯一の値ではないことです。

たとえば、上記の出力はさまざまな無料の値の一部を提供しますが、非アクティブな値などは提供しません。

メモリ圧力アルゴリズムがこれらの値の比を算出しているため、これらの値は、重要であるそれらの値の間の関係は、OPの問題のコマンドによって生成された出力から明らかではありません。

これについてより多くの光を当てることができるいくつかの技術情報を持っていると思います。この回答は1週間以内に更新します。

[状況更新]

探していた技術情報が見つかりませんでした。しかし、おそらくいくつかの古いCDR / DVDRバックアップで、私はまだ持っていると確信しています。見つけたらこの回答を更新するか、見つけられないと確信した後で更新します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.