Wie erhalte ich die Menge an 'komprimiertem Speicher' pro Prozess (vom Terminal)?

psWie kann ich , oder eine Variation davon... verwenden, um einen Wert zu erhalten, der ungefähr dem "Compressed Memory"-Wert entspricht, den Apple in meldet Activity Monitor.app?

Geben Sie hier die Bildbeschreibung ein

username 52036 100.1 24.1 8026832 3035512 ?? Rs ...com.apple.WebKit.WebContent

Ok, also scheint es ps auxuns zu sagen ...

  • 3035512, auch bekannt als 2.83 Gb, was "Private Memory" entspricht
  • 8026832, alias 7.48 Gbdas scheint nichts zu entsprechen . (Obwohl es möglicherweise3.89 ("Memory" + "Private Memory" 2.84+ "Compressed Memory" 1.05) sein könnte ?

Gibt es einen "normalen" Weg, auf diese Metrik zuzugreifen, oder ist es nur ein "magischer" Wert, den Apple sich ausgedacht hat?

Antworten (3)

Komprimierter Speicher hat nichts Magisches. Es ist etwas, das als letzter Schritt zu 10.9 hinzugefügt wurde, bevor das System RAM auf Speicher auslagert. Laut John Siracusa erfüllt dies drei Hauptfunktionen:

Speicherkomprimierung ist ein Triple Play für Mavericks. Es ist ein Leistungsgewinn; Das Komprimieren und Dekomprimieren von Daten im RAM ist viel schneller als das Lesen und Schreiben auf die Festplatte, sogar auf eine SSD. Es ist ein Energiegewinn; Je weniger Zeit für das Verschieben von Daten zwischen RAM und Festplatte aufgewendet wird, desto mehr Zeit kann das System im Leerlauf verbringen. Und schließlich ist es ein Fähigkeitsgewinn; Mavericks können viel anspruchsvollere Workloads bewältigen als frühere Versionen von OS X, bevor sie Onkel weinen.

Wie Sie die Details von der Befehlszeile aus abrufen können, ist möglicherweise schwer fassbar. Die Gesamtkompressionszahlen sind mit ein paar Tools einfach:

memory_pressure
vm_stat

Ich glaube nicht, dass ein Aufruf von psausreicht, aber vielleicht kann das jemand korrigieren. Sie können die Implementierungsdetails in diesem Thread sehen: vm_compressor_mode (vm.compressor_mode)-Werte für aktivierten komprimierten Speicher in OS X

Das Beste, was ich Ihnen bringen kann, ist, sich mit dem Befehl den gesamten "ausgelagerten und / oder komprimierten" Speicher anzusehen vmmap. Grundsätzlich werden vor dem Auslagern die zum Auslagern markierten Speicherbereiche komprimiert. Wenn dadurch genug Platz gespart wird, um den Swap-Algorithmus abzumildern, findet kein Swap statt. Wenn nicht, werden die komprimierten Regionen in den Speicher ausgelagert.

vmmap -swapped [PID]

Sie müssten das Hinzufügen der Regionen handhaben, und ich bin mir nicht sicher, ob der Aktivitätsmonitor in der von Ihnen erwähnten Spalte alle vertauscht und komprimiert meldet, aber das können Sie möglicherweise durch Inspektion und / oder Verwendung von Instrumenten von Xcode herausfinden um das, was Sie von der Befehlszeile aus sehen, mit dem Aktivitätsmonitor für einige Prozesse zu korrelieren.

Für mich geht das :

VAR=`top -l 1 | awk '/processName/  {print $10 }'`

Um komprimiert zu werden + normaler Speicher

VAR=`top -l 1 | awk '/processName/  {print $8 + $10 }'`

ActivityMonitor: Klicken Sie auf die Schaltfläche Memory und wählen Sie dann die Spalte CompressedMemory.

Wie beantwortet dies die Frage, wie Sie vom Terminal aus auf diese Informationen zugreifen können?