Wie wird vm.memory_pressure
der Wert von auf OS X 10.10.2 - Yosemite begrenzt/berechnet?
Ich habe mehrere Antworten auf diese Frage recherchiert und versuche ein paar Dinge in der Befehlszeile, um genaue Werte zu erhalten, anstatt auf die Diagramme im Aktivitätsmonitor zu schauen.
Bei leicht belastetem System:
~ ❯❯❯ 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
Das kern.memorystatus_vm_pressure_level sieht richtig aus und scheint das zu sein, was es verwendet, um das Diagramm einzufärben (grün für 1-NORMAL, gelb für 2-WARN, rot für 4-CRITICAL). vm.memory_pressure ist jedoch 0 und der Graph hat eine gewisse Menge an Grün und ist gezackt, was bedeutet, dass sich der Wert im Laufe der Zeit deutlich ändert und nicht nur bei 0 sitzt.
Unter starker Belastung sieht es so aus:
❯❯❯ 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
Oder dieses...
~ ❯❯❯ 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
Oder dieses...
~ ❯❯❯ 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
Hier bin ich verwirrt. Aus mehreren Gründen kann keiner dieser Werte allein der Y-Wert des Diagramms sein.
Erstens liegt vm.memory_pressure unter normaler Last fast immer bei 0, und der Graph liegt nicht bei 0.
Zweitens stimmen sie nicht überein. Betrachtet man den Wert von memory_pressure, so ist er niedriger, wenn er tatsächlich gewünschte Seiten hatte (3220 gewollt und Druck von nur 1), als wenn er 5431 freie und keine gewollten Seiten hatte (Druck war 277). Und irgendwie ist das noch weniger Druck als wenn es 32572 frei hatte (und 1693 Druck hatte).
Wenn es also dieses Diagramm zeichnet, wie lautet die Berechnung für den Y-Wert, und wie kann ich die Daten abrufen, die ich zur Berechnung über die Befehlszeile benötige? Ich möchte ein Befehlszeilentool erstellen, das einen Prozentsatz der Höhe der aktuellen Linie in diesem Diagramm ausspuckt. Daher muss ich wissen, wie der Wert zu einem bestimmten Zeitpunkt berechnet wird und wie groß der Bereich ist mögliche Werte sind.
Dies ist derzeit nur eine Teilantwort. Diese Antwort ist nicht vollständig, bis dieser Satz entfernt wurde.
Die Sache mit dieser Frage ist, dass das Memory Pressure-Diagramm auf den ersten Blick keinen Sinn ergibt, wenn man es mit dem vergleicht, was in Terminal gemeldet wird, wenn man den vom OP beschriebenen Befehl verwendet:
sysctl -a vm | grep page_free && sysctl vm.memory_pressure && sysctl kern.memorystatus_vm_pressure_level
Das Problem hierbei ist jedoch, dass dieser Befehl die VM-Werte, die er zurückmeldet, einschränkt. Tatsächlich gibt es insgesamt 105 Werte, aber dieser Befehl meldet nur die folgenden fünf Werte:
vm.vm_page_free_target:
vm.page_free_wanted:
vm.page_free_count:
vm.memory_pressure:
kern.memorystatus_vm_pressure_level:
HINWEIS: Numerische Werte würden normalerweise nach dem Doppelpunkt (:) erscheinen, ich habe diese jedoch nicht eingefügt.
Offensichtlich ist die überwiegende Mehrheit der 105 vm-Werte nicht Teil der eigentlichen Berechnung, die den Speicherdruck bestimmt, aber das Problem hier ist, dass die fünf obigen Werte nicht die einzigen sind, die zur Berechnung des Speicherdrucks verwendet werden .
Während die obige Ausgabe beispielsweise einige der verschiedenen freien Werte liefert, liefert sie keine der inaktiven Werte usw.
Diese Werte sind wichtig, da der Speicherdruckalgorithmus ein Verhältnis zwischen diesen Werten berechnet und die Beziehung zwischen diesen Werten nicht aus der Ausgabe hervorgeht, die vom Befehl in der OP-Frage erzeugt wird.
Ich glaube, ich habe vielleicht einige technische Informationen, die mehr Licht ins Dunkel bringen können. Ich werde diese Antwort so oder so innerhalb der Woche aktualisieren.
[STATUS-UPDATE]
Ich konnte die technischen Informationen, nach denen ich gesucht habe, nicht finden. Ich bin mir jedoch ziemlich sicher, dass ich es noch habe - wahrscheinlich auf einigen alten CDR/DVDR-Backups. Ich werde diese Antwort aktualisieren, sobald ich sie gefunden habe oder wenn ich sicher bin, dass ich sie nicht finden werde.
Fahrrad
Raugturi
Fahrrad
Eva Rosika