ZRAMでLinuxのメモリーを増やす


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 だと思われる。そんな場合はこちらを参照。

CentOS 6.x / RHCE 6 / RedHat 6 zram compression ( compressed swap residing in ram / over allocating memory ) | eXtremeSHOK.com

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 ベースになっちゃったのでこのスクリプトはたぶん使えない気がする。だれかコンバートしてください。

 

 


, , ,

コメントを残す