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

Hintergrund

In Superuser mit einer akzeptierten Antwort :

Auch im Superuser:

– und aus der ersten Antwort dort 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 Modus als 4 für komprimierten Speicher zu aktivieren ?

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

Die von Ihnen zitierte Header-Datei scheint zu besagen, dass beide Modi 2 und 4 bedeuten, dass der komprimierte Pager aktiviert ist. Daher bin ich etwas verwirrt über Ihre Frage - meinen Sie, dass Sie tatsächlich Modus 2 ausprobiert haben und komprimierten Speicher nicht aktiviert haben?

Antworten (2)

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

Was ich denke, ist, dass die FREEZER-Optionen zum Verwalten des Speichers für eingefrorene Prozesse dienen. Vielleicht ist das etwas Experimentelles, um es in Kombination mit App Nap zu verwenden? Ich denke, das war etwas, was sie vor ein paar Jahren mit iOS getestet haben.

Was ich weiß, ist, dass Option 1 keine Komprimierung verwendet und die altmodische OS X-Speicherverwaltung ist, mit der wir alle besser vertraut sind. Wenn Sie Probleme haben, von denen Sie vermuten, dass sie mit der Speicherkomprimierung zusammenhängen, können Sie diese Einstellung ausprobieren.

Option 2 verwendet komprimierten Speicher ohne Auslagerung (kein Schreiben auf die Festplatte, wenn der RAM niedrig oder erschöpft 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.

Gibt es eine aktuelle Dokumentation darüber, was der FREEZER tut?
Es ist interessant, dass die Bearbeitung von apple.stackexchange.com/questions/175572 besagt, dass Apple auf einen Radar- oder Feedback- oder Supportfall geantwortet hat und die traditionelle Option 1 bekanntermaßen in einigen Fällen fehlschlägt und kein unterstützter Modus mehr ist.
@bmike Das macht angesichts der Zeitleiste hier Sinn. Seitdem bin ich auf Linux + LXDM + Openbox umgestiegen, mit umfangreichen, aber wiederverwendbaren Anpassungen, da ich mehr Kontrolle über mein Betriebssystem und meine funktionierende Softwareumgebung haben wollte, im Gegensatz zum Gegenteil.

Ich kann keinen Kommentar hinzufügen, also schreibe ich als Antwort: Sieht so aus, als wäre der Gefrierschrank 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)

Um die Frage zu beantworten, können Sie Folgendes haben:

  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 + Freezer's Swap