OS X中启用的压缩内存的vm_compressor_mode(vm.compressor_mode)值


16

背景

在超级用户中,具有可接受的答案

同样在超级用户中:

–从第一个答案开始,我们了解到boot参数 vm_compressor的值与sysctl变量 的值不对应vm.compressor_mode

在OS X 10.9的Apple开放源代码中,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.
 */

在具有8 GB内存的MacBookPro5,2上,我发现:

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,2014年

Answers:


4

我不完全确定FREEZER选项,除了一个FREEZER_COMPRESSOR选项在RAM不足或已用时使用swap(利用磁盘上的可用空间),而另一个则不使用。

我认为FREEZER选项用于管理冻结进程的内存。也许这是实验性的,可以与App Nap结合使用?我认为这是几年前他们在iOS上进行的测试。

我所知道的是,选项1不使用压缩,是我们都比较熟悉的老式OS X内存管理。如果您怀疑存在与内存压缩有关的问题,则可以尝试此设置。

选项2使用无交换的压缩内存(RAM不足或已用时不写磁盘)。

选项4同时使用压缩和交换。

选项8使用任何FREEZER,并具有选项1实施的支持。


2
是否有关于FREEZER功能的实际文档?
vy32

有趣的是,对apple.stackexchange.com/questions/175572的编辑说,苹果对雷达或反馈或支持案例做出了回应,而传统的选项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-压缩内存+冰柜的交换
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.