使用例を書くと
$ sudo -i # modprobe zram # echo $((500*1024*1024)) > /sys/block/zram0/disksize # mkfs.ext2 -m 0 /dev/zram0 # mkdir /tmp/zram # mount -t ext2 /dev/zram0 /tmp/zramこれで500MBのRAMディスクが出来上がって、/tmp/zram にマウントされます(再起動したら消える)
zramをスワップ領域にすることもできます。そうすると圧縮付きでスワップされるので、その結果、利用可能なメモリ量が増えるわけです。ディスクの時よりもCPU負荷が高いでしょうが、ディスクI/Oの待ち時間に比べたら全然大したことじゃない。
Ubuntuの場合、zramswap-enabler をインストールすれば自動で設定してくれます。
上で作ったRAMディスクを消しておく(何もしていなければ不要) $ sudo umount /dev/zram0 $ sudo sh -c "echo 1 > /sys/block/zram0/reset" $ sudo add-apt-repository ppa:shnatsel/zram $ sudo apt-get update $ sudo apt-get install zramswap-enablerインストールしたら /proc/swaps を見て状態を確認。
$ cat /proc/swaps Filename Type Size Used Priority /dev/zram0 partition 1544868 0 100 /dev/zram1 partition 1544868 0 100CPUのコアと同じ個数の /dev/zram が作られて、スワップパーティションとして認識されました。zramの総量がメインメモリと同じ大きさなんだけど…こんな目一杯にしていいの?
少し前の記事になりますが、Viva! Ubuntu!!さんの体験レポートが興味深い。メモリの少ないネットブックやAndroid携帯で使うと効果的ですね。
≪追記≫
Ubuntu 12.04以降は、公式リポジトリにzram-configという名前の設定パッケージがあります。
10:16PM | コメントする |
1. NONAME March 3, 2012 @ 12:37am
作った瞬間に普通のメモリが500MB減るわけではないですよね?
2.
Sawa March 3, 2012 @ 01:47am
まず、zramの割り当て量を /sys/block/zram0/disksize で設定するだけでは
メモリは変化しません。
★その時のメモリ状況
$ free -m
total used free shared buffers cached
Mem: 3017 1665 1352 0 37 484
-/+ buffers/cache: 1143 1874
Swap: 0 0 0
★100MBのファイルを入れてみる
$ dd if=/dev/urandom of=/tmp/zram/TEST bs=100k count=1024
$ sync
$ free -m
total used free shared buffers cached
Mem: 3017 1861 1156 0 37 584
-/+ buffers/cache: 1238 1778
Swap: 0 0 0
100MBのファイルを書き込むと、すぐさま空きメモリが100MB弱減りました。
メモリの消費は実際に使用している分だけのようです。
ファイルを削除しても元に戻りませんが…気にしなくてもOSがよろしくやってくれると思います。
今回は/dev/urandomのファイル(圧縮しても全然縮まらない)で変化を見ましたけど、
普通のファイルなら圧縮されて消費量がもっと少なくなるはず。
間違ってたらゴメンナサイ(^^;