ページ

2014年1月22日水曜日

Mavericksのメモリー圧縮機能について

Mac OSX 10.9.1 (Mavericks) でカーネルパニックが発生したので記録する.

1.環境と問題

iMac
21.5-inch, Late 2013
プロセッサ  3.1 GHz Intel Core i7
メモリ  16 GB 1600 MHz DDR3


で数値計算を行った.メモリー使用量は

数百MB程度のメモリーを使用×6 + (瞬間的に)1GB程度メモリーを使用=最大で2GB程度

マシン性能から考えて余裕だろうとたかをくくっていたが,
結局2度強制終了するはめになった.

2. 現象

* 一定時間経過後,スワップアウトし始める
* CPUの使用率が100%にならない(10%)程度
* 最終的に応答不能状態に陥る->強制終了
アクティビティーモニターのメモリー観察
* kernel_task が10GB程度メモリーを占拠(何もしない状況では800MB程度)
* メモリー圧縮が8GB程度
* メモリープレッシャーが増大しつづける.






Mavericksから導入されたCompressed memory機能が怪しい!

3.解決

以下自己責任で
Disable compressed memory in Mac OS 10.9 Mavericks?
を参考にターミナルでメモリー圧縮modeを確認する(defaultは4)

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

1でメモリー圧縮機能を切れるらしいので

$ sudo nvram boot-args="vm_compressor=1"

にして,再起動(なぜか再起動後も4だったので2回もやってしまった・・・)

$ sysctl -a vm.compressor_mode
vm.compressor_mode: 1

で vm.compressor_mode: 1 となっている事を確認する.

今のところ再度同じ計算をさせてみると,メモリープレッシャーも起こらないし,
kernel_taskがメモリーを馬鹿食いする事もなくなった.

メモリープレッシャーはマシン性能が悪い場合に威力を発揮するらしいが,
数値計算する上では邪魔な機能だなと思いました.

 おまけ

今まで知らなかったのだがターミナルで

$ sudo purge

を実行するとファイルキャッシュがクリアされる.

なんでも,duを行ってもファイルキャッシュが一掃されるらしいのだが,
効果は不明だし時間がかかるのでpurgeで十分な気がする
(少なくともmavericksでは).