ramzswapを使用してみたかったので、menuconfigで
Device Drivers --->を <M> に設定した。
Staging drivers --->
Compressed in-memory swap device (ramzswap)
make-kpkgの途中でエラーが発生するが、下記サイトを参考に解決。
http://yasu-2.blogspot.com/2010/01/debian-lenny.html
下記2つのファイルを、include/linux/ にコピーして、make-kpkgを再度実行したらビルドが通った。
include/generated/utsrelease.h
include/generated/compile.h
2.6.32の頃から、デフォルトではsensorsがうまく動かない(温度センサーを認識しない?)ため、下記サイトを参考にした。
https://bugs.launchpad.net/ubuntu/+source/lm-sensors-3/+bug/458811
/boot/grub/menu.lst で、カーネルオプションに
acpi_enforce_resources=laxを追加。
再起動後、ramzswapを試してみる。
modprobe lzo_compressを実行して、/dev/ramzswap0 を作成する。
modprobe ramzswap
適当に調べたところ、ramzswapを設定するためには、rzscontrolが必要なようなので、
http://code.google.com/p/compcache/downloads/list
から、compcache-0.6.2.tar.gz をダウンロード&ビルドする。
compcache-0.6.2/sub-projects/rzscontrolにramzswapの設定コマンドがあるので、これを使用する。
cd compcache-0.6.2/sub-projects/rzscontrolでramzswapを使用するように設定。
sudo ./rzscontrol /dev/ramzswap0 --init
sudo swapon /dev/ramzswap0
swapon -sでswapが有効になっていることを確認。
sudo ./rzscontrol /dev/ramzswap0 -sで統計を確認できる。。はずが、エラーになった。
Makefile中の
@gcc -g -Wall -D_GNU_SOURCE rzscontrol.c -o rzscontrol -I ../include -I../..を
@gcc -g -Wall -D_GNU_SOURCE rzscontrol.c -o rzscontrol -I /lib/modules/`uname -r`/build/drivers/staging/ramzswap/ -I ../includeに変更する。
rzcontrol.c:88,102行目をコメントアウト
/* Extended stats */
printf(
"NumReads: %8" PRIu64 "\n"
"NumWrites: %8" PRIu64 "\n"
"FailedReads: %8" PRIu64 "\n"
"FailedWrites: %8" PRIu64 "\n"
"InvalidIO: %8" PRIu64 "\n"
//"NotifyFree: %8" PRIu64 "\n"
"ZeroPages: %8u\n"
"GoodCompress: %8u %%\n"
"NoCompress: %8u %%\n"
"PagesStored: %8u\n"
"PagesUsed: %8u\n"
"OrigDataSize: %8" PRIu64 " kB\n"
"ComprDataSize: %8" PRIu64 " kB\n"
"MemUsedTotal: %8" PRIu64 " kB\n",
s->num_reads,
s->num_writes,
s->failed_reads,
s->failed_writes,
s->invalid_io,
//s->notify_free,
s->pages_zero,
s->good_compress_pct,
s->pages_expand_pct,
s->pages_stored,
s->pages_used,
K(s->orig_data_size),
K(s->compr_data_size),
K(s->mem_used_total)
);
再びmake。
これで
sudo ./rzscontrol /dev/ramzswap0 -sが実行できた。
実行結果はこんな感じ。
DiskSize: 512748 kB
NumReads: 35
NumWrites: 0
FailedReads: 0
FailedWrites: 0
InvalidIO: 0
ZeroPages: 0
GoodCompress: 0 %
NoCompress: 0 %
PagesStored: 0
PagesUsed: 0
OrigDataSize: 0 kB
ComprDataSize: 0 kB
MemUsedTotal: 0 kB
メモリを十分につんでいるので、まだrmazswapは使われていなかった。