Mac OS X Mavericks 以降には「メモリ圧縮」という機能がある。
かつての Classic Mac OS にも「RAM Doubler」というサードパーティツールがあったけれど、要はプログラムが使っているメモリのうち、今現在アクティブに使ってない部分を圧縮して使用しているメモリ量を節約し、見かけ上使えるメモリ量が増えているように見せる技術である。
最近 Linux は VPS のような仮想環境で動かすことが多くなってきているけれども、たいてい商用のクラウドサービスとかその手にヤツは、メモリ増設に比べてディスク (つかストレージ) の方が料金が高かったりする。また、デスクトップやノートPCだとしても、近年は SSD の普及により、かつてほどストレージが無尽蔵にあるとは言いがたい状況になってきた。
なわけで、ストレージにスワップするよかメモリを有効に使ったほうがたぶん良かろうということで、Linux でもメモリ圧縮的なことをしてしまおうというのが ZRAM という仕組み。ざっくりいうと、メモリ上に仮想のスワップ領域をつくり、そこにスワップアウトされた情報はもちろん一時的に使われていないので、圧縮してしまえというもの。
Ubuntu ではいとも簡単。こんなカンジで標準のパッケージを導入してやるだけ。
$ sudo apt-get install zram-config
動作確認はこんなカンジ
$ swapon -s Filename Type Size Used Priority /dev/vda2 partition 2097148 0 -1 /dev/zram0 partition 255040 13792 100 /dev/zram1 partition 255040 13896 100
「swapon -s」とやると現在使われているメモリスワップが表示される。上の例では通常のストレージ上のスワップが /dev/vda2。/dev/zram0 と /dev/zram1 がメモリ上に作られたスワップ領域。搭載している CPU のコア数と同じ数作られるみたい。
さて、そこらの商用サーバー屋さんとかおシゴトで使う Linux なサーバーは多くが RHEL とか CentOS だと思われる。そんな場合はこちらを参照。
yum で bc のパッケージをインストールして、リンク先掲載のスクリプトを /etc/init.d/zram として保存しとく。あとはお約束でこんなカンジ。
$ sudo chmod 755 /etc/init.d/zram $ sudo chkconfig --add zram $ sudo chkconfig zram on $ sudo service zram start
なお、RHEL7 / CentOS7 からは systemd ベースになっちゃったのでこのスクリプトはたぶん使えない気がする。だれかコンバートしてください。
コメント