OS Xで有効な圧縮メモリのvm_compressor_mode(vm.compressor_mode)値


16

バックグラウンド

承認済みの回答を含むスーパーユーザーの場合:

スーパーユーザーでも:

–そして、最初の回答から、ブート引数 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

回答:


4

1つのFREEZER_COMPRESSORオプションがスワップを使用する(ディスクの空き領域を使用する)以外のFREEZERオプションについては完全に確信はありませんが、他のオプションはそうではありません。

私が思うのは、FREEZERオプションは、フリーズしたプロセスのメモリを管理するためのものだということです。たぶんこれは実験的なもので、App Napと組み合わせて使用​​するのでしょうか?これは数年前に彼らがiOSでテストしていたものだと思う。

私が知っていることは、オプション1は圧縮を使用せず、私たちがよく知っている昔ながらのOS Xメモリ管理であるということです。メモリ圧縮に関連すると思われる問題がある場合は、この設定を試してください。

オプション2は、スワップなしの圧縮メモリを使用します(RAMが不足または消費されている場合、ディスクへの書き込みは行われません)。

オプション4は、圧縮とスワップの両方を使用します。

オプション8では、オプション1の実装に裏打ちされたFREEZERが使用されます。


2
FREEZERの機能に関する実際のドキュメントはありますか?
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-圧縮メモリ+フリーザーのスワップ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.