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


16

Фон

У Super користувача, з прийнятою відповіддю :

Також у Super User:

- з першої відповіді там ми розуміємо, що значення аргументу завантаження vm_compressor не відповідає значенню змінної sysctl vm.compressor_mode .

В Apple з відкритим кодом для ОС 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 - стисла пам'ять + заміна морозилки
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.