vm_compressor_mode (vm.compressor_mode) -Werte für den aktivierten komprimierten Speicher in OS X

16

Hintergrund

Im Superuser mit einer akzeptierten Antwort :

Auch im Super User:

- und von der ersten Antwort an verstehen wir, dass der Wert des boot-Arguments vm_compressor nicht mit dem Wert der sysctl-Variablen übereinstimmt vm.compressor_mode .

In Apple Open Source für OS X 10.9, Mavericks; in xnu-2422.1.72:

In vm_compressor.c:

/*
 * vm_compressor_mode has a heirarchy of control to set its value.
 * boot-args are checked first, then device-tree, and finally
 * the default value that is defined below. See vm_fault_init() for
 * the boot-arg & device-tree code.
 */

Auf einem MacBookPro5,2 mit 8 GB Speicher finde ich:

sh-3.2$ sysctl -a vm.compressor_mode
vm.compressor_mode: 4

In der Nähe des Fußes von vm_pageout.h:

extern int vm_compressor_mode;
extern int vm_compressor_thread_count;

#define VM_PAGER_DEFAULT                0x1 /* Use default pager. */
#define VM_PAGER_COMPRESSOR_NO_SWAP         0x2 /* In-core compressor only. */
#define VM_PAGER_COMPRESSOR_WITH_SWAP           0x4 /* In-core compressor + swap backend. */
#define VM_PAGER_FREEZER_DEFAULT            0x8 /* Freezer backed by default pager.*/
#define VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP     0x10    /* Freezer backed by in-core compressor only i.e. frozen data remain in-core compressed.*/
#define VM_PAGER_FREEZER_COMPRESSOR_WITH_SWAP       0x20    /* Freezer backed by in-core compressor with swap support too.*/

#define VM_PAGER_MAX_MODES              6   /* Total number of vm compressor modes supported */

#define DEFAULT_PAGER_IS_ACTIVE     ((vm_compressor_mode & VM_PAGER_DEFAULT) == VM_PAGER_DEFAULT)

#define COMPRESSED_PAGER_IS_ACTIVE  (vm_compressor_mode & (VM_PAGER_COMPRESSOR_NO_SWAP | VM_PAGER_COMPRESSOR_WITH_SWAP))

#define DEFAULT_FREEZER_IS_ACTIVE   ((vm_compressor_mode & VM_PAGER_FREEZER_DEFAULT) == VM_PAGER_FREEZER_DEFAULT)

#define DEFAULT_FREEZER_COMPRESSED_PAGER_IS_ACTIVE      (vm_compressor_mode & (VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP | VM_PAGER_FREEZER_COMPRESSOR_WITH_SWAP))

Frage

Ist es möglich, einen anderen aktivierten Modus als 4 für den komprimierten Speicher zu verwenden ?

Wenn ja, können wir eine einfache englische Erklärung der Modi finden?

Graham Perrin
quelle
In der von Ihnen zitierten Header-Datei heißt es anscheinend, dass in beiden Modi 2 und 4 der komprimierte Pager aktiviert ist. Daher bin ich ein bisschen verwirrt über Ihre Frage - meinen Sie, Sie haben tatsächlich Modus 2 ausprobiert und es hat keinen komprimierten Speicher aktiviert?
Jksoegaard

Antworten:

4

Ich bin mir der FREEZER-Optionen nicht ganz sicher, außer dass eine FREEZER_COMPRESSOR-Option Swap verwendet (freien Speicherplatz auf einer Festplatte nutzt), wenn der Arbeitsspeicher niedrig ist oder aufgebraucht wird, während die andere Option dies nicht tut.

Was ich denke ist, dass die FREEZER-Optionen für die Verwaltung des Speichers für eingefrorene Prozesse sind. Vielleicht ist dies etwas Experimentelles, das in Kombination mit App Nap verwendet werden kann? Ich denke, das haben sie vor ein paar Jahren mit iOS getestet.

Was ich weiß, ist, dass Option 1 keine Komprimierung verwendet und dass es sich um die altmodische OS X-Speicherverwaltung handelt, mit der wir alle besser vertraut sind. Wenn Sie Probleme im Zusammenhang mit der Speicherkomprimierung vermuten, können Sie diese Einstellung ausprobieren.

Option 2 verwendet komprimierten Speicher ohne Auslagerung (kein Schreiben auf die Festplatte, wenn der Arbeitsspeicher niedrig oder verbraucht ist).

Option 4 verwendet sowohl Komprimierung als auch Swap.

Option 8 verwendet, was auch immer der FREEZER ist, unterstützt durch die Implementierung von Option 1.

Antonio Malcolm
quelle
2
Gibt es eine aktuelle Dokumentation darüber, was der FREEZER macht?
Vy32
Es ist interessant, dass Apple bei der Bearbeitung von apple.stackexchange.com/questions/175572 auf ein Radar- oder Feedback- oder Support- Problem geantwortet hat. Die herkömmliche Option 1 schlägt in einigen Fällen fehl und wird nicht mehr unterstützt.
bmike
0

Kann keinen Kommentar hinzufügen, deshalb schreibe ich als Antwort: Sieht aus, als wäre die Gefriertruhe Apples patentierte Technologie, und wenn Sie sie verwenden VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP, sollten Sie nicht auch den Kompressor verwenden ? (siehe, Kompressor ist vorhanden, aber nicht aktiviert)

Wenn Sie die Frage beantworten, haben Sie folgende Möglichkeiten:

  1. VM_PAGER_COMPRESSOR_WITH_SWAP - komprimierter Speicher + Swap
  2. VM_PAGER_COMPRESSOR_NO_SWAP - komprimierter Speicher ohne Swap
  3. VM_PAGER_COMPRESSOR_NO_SWAP_PLUS_FREEZER_COMPRESSOR_WITH_SWAP - komprimierter Speicher + Gefrierschrank-Swap
own2pwn
quelle