valori vm_compressor_mode (vm.compressor_mode) per la memoria compressa abilitata in OS X


16

sfondo

In Super utente, con una risposta accettata :

Anche in Super User:

- e dalla prima risposta comprendiamo che il valore dell'argomento boot vm_compressor non corrisponde al valore della variabile sysctl vm.compressor_mode .

In Apple open source per 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.
 */

Su un MacBookPro5,2 con 8 GB di memoria trovo:

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

Vicino ai piedi di 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))

Domanda

È possibile avere una modalità abilitata diversa da 4 per la memoria compressa ?

In tal caso, possiamo trovare una semplice spiegazione inglese delle modalità?


Il file di intestazione che citi sembra indicare che entrambe le modalità 2 e 4 indicano che il pager compresso è abilitato. Quindi sono un po 'perplesso dalla tua domanda: vuoi dire che hai effettivamente provato la modalità 2 e non ha abilitato la memoria compressa?
jksoegaard,

Risposte:


4

Non sono completamente sicuro delle opzioni di FREEZER, a parte un'opzione FREEZER_COMPRESSOR usa swap (utilizza lo spazio libero su un disco) quando la RAM è bassa o esaurita, mentre l'altra no.

Quello che penso è che le opzioni FREEZER sono per la gestione della memoria per i processi congelati. Forse questo è qualcosa di sperimentale, da usare in combinazione con App Nap? Penso che questo fosse qualcosa che stavano testando con iOS qualche anno fa.

Quello che so è che l'opzione 1 non utilizza alcuna compressione ed è la vecchia gestione della memoria OS X che conosciamo tutti. Se riscontri problemi che sospetti siano correlati alla compressione della memoria, potresti provare questa impostazione.

L'opzione 2 utilizza la memoria compressa senza scambio (nessuna scrittura su disco quando la RAM è bassa o esaurita).

L'opzione 4 utilizza sia la compressione che lo scambio.

L'opzione 8 utilizza qualunque sia il FREEZER, supportato dall'implementazione dell'opzione 1.


2
Esiste una documentazione effettiva su ciò che fa il CONGELATORE?
vy32,

È interessante notare che la modifica a apple.stackexchange.com/questions/175572 afferma che Apple ha risposto a un caso di radar o feedback o supporto e che in alcuni casi l'opzione tradizionale 1 non funziona e non è più una modalità supportata.
bmike

0

Non riesco ad aggiungere un commento, quindi scriverò come risposta: sembra che il congelatore sia la tecnologia brevettata di Apple e se la utilizzerai VM_PAGER_FREEZER_COMPRESSOR_NO_SWAPnon dovrebbe usare anche il compressore ? (vedi, il compressore è presente, ma non è attivato)

Rispondendo alla domanda, puoi avere:

  1. VM_PAGER_COMPRESSOR_WITH_SWAP - memoria compressa + scambio
  2. VM_PAGER_COMPRESSOR_NO_SWAP - memoria compressa senza scambio
  3. VM_PAGER_COMPRESSOR_NO_SWAP_PLUS_FREEZER_COMPRESSOR_WITH_SWAP - memoria compressa + scambio del congelatore
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.