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?
macos
mavericks
memory
virtual-memory
memory-pressure
Graham Perrin
quelle
quelle
Antworten:
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.
quelle
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:
quelle