vm_compressor_mode (vm.compressor_mode) wartości dla włączonej pamięci skompresowanej w OS X

16

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?

Graham Perrin
źródło
Cytowany plik nagłówka wydaje się wskazywać, że oba tryby 2 i 4 oznaczają, że włączony jest skompresowany pager. Dlatego jestem nieco zdziwiony twoim pytaniem - czy masz na myśli, że faktycznie wypróbowałeś tryb 2 i nie włączono pamięci skompresowanej?
jksoegaard

Odpowiedzi:

4

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.

Antonio Malcolm
źródło
2
Czy istnieje rzeczywista dokumentacja dotycząca działania ZAMRAŻARKI?
vy32
Interesujące jest to, że edycja na apple.stackexchange.com/questions/175572 mówi, że Apple odpowiedziała na radar, informację zwrotną lub wsparcie, a tradycyjna opcja 1 w niektórych przypadkach kończy się niepowodzeniem i nie jest już obsługiwanym trybem.
bmike
0

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_SWAPjej użyjesz, nie powinieneś również używać kompresora ? (patrz, kompresor jest obecny, ale nie jest aktywowany)

Odpowiadając na pytanie, możesz:

  1. VM_PAGER_COMPRESSOR_WITH_SWAP - pamięć skompresowana + zamiana
  2. VM_PAGER_COMPRESSOR_NO_SWAP - skompresowana pamięć bez wymiany
  3. VM_PAGER_COMPRESSOR_NO_SWAP_PLUS_FREEZER_COMPRESSOR_WITH_SWAP - pamięć skompresowana + zamiana zamrażarki
own2pwn
źródło