tło
W trybie Super użytkownik z zaakceptowaną odpowiedzią :
Również w superużytkowniku:
- i od pierwszej odpowiedzi rozumiemy, że wartość argumentu rozruchowego vm_compressor
nie odpowiada wartości zmiennej sysctl vm.compressor_mode
.
W Apple open source dla OS X 10.9, Mavericks; w xnu-2422.1.72:
W 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.
*/
Na MacBookPro5,2 z 8 GB pamięci znajduję:
sh-3.2$ sysctl -a vm.compressor_mode
vm.compressor_mode: 4
W pobliżu stóp 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))
Pytanie
Czy możliwe jest włączenie trybu innego niż 4 dla pamięci skompresowanej ?
Jeśli tak, to czy możemy znaleźć proste angielskie wyjaśnienie trybów?
macos
mavericks
memory
virtual-memory
memory-pressure
Graham Perrin
źródło
źródło
Odpowiedzi:
Nie jestem całkowicie pewien opcji FREEZER, innych niż jedna opcja FREEZER_COMPRESSOR używa swap (wykorzystuje wolne miejsce na dysku), gdy RAM jest niski lub wyczerpany, a druga nie.
Myślę, że opcje ZAMRAŻANIA służą do zarządzania pamięcią dla zamrożonych procesów. Może jest to coś eksperymentalnego, do zastosowania w połączeniu z App Nap? Myślę, że to było coś, co testowali na iOS kilka lat temu.
Wiem, że opcja 1 nie używa kompresji i jest to staroświeckie zarządzanie pamięcią OS X, które wszyscy jesteśmy bardziej zaznajomieni. Jeśli masz problemy, które podejrzewasz, że są związane z kompresją pamięci, możesz wypróbować to ustawienie.
Opcja 2 wykorzystuje skompresowaną pamięć bez wymiany (brak zapisywania na dysk, gdy RAM jest niski lub wyczerpany).
Opcja 4 wykorzystuje zarówno kompresję, jak i zamianę.
Opcja 8 korzysta z tego, czym jest ZAMRAŻARKA, poparta implementacją opcji 1.
źródło
Nie mogę dodać komentarza, więc napiszę jako odpowiedź: Wygląda na to, że zamrażarka to opatentowana technologia Apple, a jeśli
VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP
jej użyjesz, nie powinieneś również używać kompresora ? (patrz, kompresor jest obecny, ale nie jest aktywowany)Odpowiadając na pytanie, możesz:
źródło