linuxのzramはメモリの一部をスワップとして機能させて、スワップアウトしてきたメモリを圧縮して保存してメモリの効率を上げるツール。
カーネルドライバとして提供されている。
Ubuntu12で実験
インストール
1 |
$ sudo apt-get install zram-config |
これは起動時に自動で有効にしてくれるツール
インストールされたファイルの確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ dpkg --listfiles zram-config /. /usr /usr/share /usr/share/doc /usr/share/doc/zram-config /usr/share/doc/zram-config/copyright /usr/share/doc/zram-config/changelog.gz /etc /etc/init /etc/init/zram-config.conf /etc/init.d /etc/init.d/zram-config $ |
serviceコマンドで機能の有効無効を設定できる
1 2 |
$ sudo service zram-config stop $ sudo service zram-config start |
スワップは/dev/zramXに作られる。初期サイズはトータルメモリとCPUの個数で決まるみたいだが512Mと1個のCPUだと256Mになるようだ。
1 2 3 4 5 |
$ cat /proc/swaps Filename Type Size Used Priority /dev/sdb5 partition 522236 0 -1 /dev/zram0 partition 253916 126036 5 $ |
https://www.kernel.org/doc/Documentation/blockdev/zram.txt
これによると圧縮効率は2:1位らしいので、メモリの倍以上つくっても意味はないらしい。
/sys/block/zram0以下のファイルにアクセスすることで機能の読み取りや設定ができる。
手動でサイズを変更。スクリプトでサイズ固定になってるので手動でやってみるが失敗
1 2 3 4 5 6 |
$ sudo swapoff /dev/zram0 $ rmmod -w zram $ sudo modprobe zram 'zram_num_devices=1' $ sudo echo $((512*1024*1024)) > /sys/block/zram0/disksize -bash: /sys/block/zram0/disksize: Permission denied $ |
失敗原因不明スルー