vm_compressor_mode (vm.compressor_mode) значения для включенной сжатой памяти в OS X

16

Фон

В Super user, с принятым ответом :

Также в Super User:

- и из первого ответа мы понимаем, что значение аргумента загрузки vm_compressor не соответствует значению переменной sysctl vm.compressor_mode .

В Apple с открытым исходным кодом для OS X 10.9, Mavericks; в xnu-2422.1.72:

В 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.
 */

На MacBookPro5,2 с 8 ГБ памяти я нахожу:

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

У подножия 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))

Вопрос

Возможно ли иметь включенный режим, кроме 4, для сжатой памяти ?

Если так, можем ли мы найти простое английское объяснение режимов?

Грэм Перрин
источник
Заголовочный файл, который вы цитируете, кажется, утверждает, что оба режима 2 и 4 означают, что сжатый пейджер включен. Поэтому я немного озадачен вашим вопросом - вы имеете в виду, что вы на самом деле пробовали режим 2, и он не включил сжатую память?
jksoegaard

Ответы:

4

Я не совсем уверен в параметрах FREEZER, кроме одного параметра FREEZER_COMPRESSOR использует swap (использует свободное место на диске), когда оперативной памяти мало или израсходовано, в то время как другой нет.

Я думаю, что опции FREEZER предназначены для управления памятью для замороженных процессов. Может быть, это что-то экспериментальное для использования в сочетании с App Nap? Я думаю, что это было то, что они тестировали с iOS несколько лет назад.

Что я знаю, так это то, что вариант 1 не использует сжатие и является старомодным управлением памятью OS X, с которым мы все более знакомы. Если у вас есть проблемы, которые, как вы подозреваете, связаны со сжатием памяти, попробуйте этот параметр.

Вариант 2 использует сжатую память без подкачки (без записи на диск, когда ОЗУ мало или израсходовано).

Вариант 4 использует как сжатие, так и своп.

Вариант 8 использует любой морозильник, поддерживаемый реализацией варианта 1.

Антонио Малкольм
источник
2
Есть ли актуальная документация о том, что делает морозильник?
vy32
Интересно, что в редакции apple.stackexchange.com/questions/175572 говорится, что Apple отреагировала на случай радара, обратной связи или поддержки, и традиционный вариант 1, как известно, в некоторых случаях дает сбой и больше не поддерживается.
bmike
0

Не могу добавить комментарий, поэтому я напишу в качестве ответа: похоже, что морозильная камера - это запатентованная технология Apple, и если вы будете использовать VM_PAGER_FREEZER_COMPRESSOR_NO_SWAPее, не следует ли использовать компрессор тоже? (см. компрессор присутствует, но не активирован)

Отвечая на вопрос, вы можете получить:

  1. VM_PAGER_COMPRESSOR_WITH_SWAP - сжатая память + подкачка
  2. VM_PAGER_COMPRESSOR_NO_SWAP - сжатая память без замены
  3. VM_PAGER_COMPRESSOR_NO_SWAP_PLUS_FREEZER_COMPRESSOR_WITH_SWAP - сжатая память + замена морозильной камеры
own2pwn
источник