Quirky018のカーネルは、現時点での最新安定版であるヴァージョン2.6.33が使用されています。
こういう所でフットワークが軽いのは、個人で作成しているディストリビューションの利点だと思います。
で、そのカーネルの新機能にramzswapというのがあるんです。
ramzswapとはどういうものか? と思って調べたら、どうやらメインメモリの一部をスワップとして活用するものらしい....ということが分かりました。
「そもそもスワップというのはメインメモリが足りなくなった時に利用するもので、それをメモリ上に置くとはこれいかに?」
と思ったのですが......。
スラッシュドットでのカーネル2.6.33の紹介記事
http://slashdot.jp/linux/article.pl?sid ... 26/0646214
.....で、なんか↓の記事を読むと面白そうだったんで試してみようと思いました。
http://d.hatena.ne.jp/futsu-9/20100225/p1
ramzswap(カーネル2.6.33.2)
ramzswap その2
ramzswapではスワップ内データの圧縮はlzoというアルゴリズムを使うらしく、
「lzoって聞いたことないな」
と思って少し調べてみました(以下、寄り道になります)。
開発者的な視点でのlzoな記事
http://lucille.sourceforge.net/blog/arc ... 00196.html
データベース屋さん的な視点でのlzoな記事
http://alpha.mixi.co.jp/blog/?p=191
PlamoLinux的な視点でのlzoな記事
http://plamo.linet.gr.jp/index.php?diar ... 2010-01-25
T2プロジェクト的な視点でのlzo
http://t2-project.org/packages/lzo.html
lzo ホームページ
http://www.oberhumer.com/opensource/lzo/
んー、「なるほどなぁ、圧縮率はそんなに高くないけど、圧縮/展開の速度が凄く速いアルゴリズムなんだなぁ」と思いました。
註:カーネルモジュールはQuirky-018では
/lib/modules/2.6.33.2/kernel/lib/lzo/lzo_compress.ko
にあります。
「lzoって聞いたことないな」
と思って少し調べてみました(以下、寄り道になります)。
開発者的な視点でのlzoな記事
http://lucille.sourceforge.net/blog/arc ... 00196.html
データベース屋さん的な視点でのlzoな記事
http://alpha.mixi.co.jp/blog/?p=191
PlamoLinux的な視点でのlzoな記事
http://plamo.linet.gr.jp/index.php?diar ... 2010-01-25
T2プロジェクト的な視点でのlzo
http://t2-project.org/packages/lzo.html
lzo ホームページ
http://www.oberhumer.com/opensource/lzo/
んー、「なるほどなぁ、圧縮率はそんなに高くないけど、圧縮/展開の速度が凄く速いアルゴリズムなんだなぁ」と思いました。
註:カーネルモジュールはQuirky-018では
/lib/modules/2.6.33.2/kernel/lib/lzo/lzo_compress.ko
にあります。
ramzswap その3
それで肝心のramzswapなんですが、どうやって使うのか?.....以下の記事が参考になりました<(_ _)>
http://blog.mypc.jp/article/36843022.html
↑の記事によるとrzscontrolというパッケージが必要らしいので、以下からソースをダウンロードしてコンパイルしました。
compcache (compressed in-memory swap device for Linux)
http://code.google.com/p/compcache/downloads/list
これをパッケージ化したものが以下。現在のところQuirky-018でのみ使用できます。
/usr/share/doc/compcache-README.txt に詳しい説明があります。
compcache_rzscontrol-0.6.2-k2.6.33.2-koro1.pet
http://www.mland.jp/pub/Linux/Puppy/use ... /koropup2/
http://blog.mypc.jp/article/36843022.html
↑の記事によるとrzscontrolというパッケージが必要らしいので、以下からソースをダウンロードしてコンパイルしました。
compcache (compressed in-memory swap device for Linux)
http://code.google.com/p/compcache/downloads/list
コード: 全て選択
1. バリーさんのリポジトリからカーネルソースをダウンロードして解凍
2. compcache-0.6.2.tar.gz も解凍
# tar xvzf compcache-0.6.2.tar.gz
# cd ./compcache-0.6.2
3. Makefileの以下の行を書き換えてカーネルソースのパスを指定
KERNEL_BUILD_PATH ?= "/lib/modules/$(shell uname -r)/build"
4.コンパイル
# make
5 ./sub-projects/rzscontrol/ に実行ファイルができます。
/usr/share/doc/compcache-README.txt に詳しい説明があります。
compcache_rzscontrol-0.6.2-k2.6.33.2-koro1.pet
http://www.mland.jp/pub/Linux/Puppy/use ... /koropup2/
ramzswap その4
で、パッケージも揃ったのでQuirky-018で試してみました。
重複になりますが参考リンク:
http://blog.mypc.jp/article/36843022.html
試す前の状態:
カーネルモジュールのロードデバイスの初期化スワップ有効化
試した後の状態:....確かに有効化されてました。
だいたい380MBくらいのメインメモリが確保されている時は、90MBくらいの擬似スワップを確保できる.....みたいな感じでしょうか。
重複になりますが参考リンク:
http://blog.mypc.jp/article/36843022.html
試す前の状態:
コード: 全て選択
# free
total used free shared buffers
Mem: 385068 352688 32380 0 13084
Swap: 0 0 0
Total: 385068 352688 32380
コード: 全て選択
modprobe lzo_compress
modprobe ramzswap
コード: 全て選択
rzscontrol /dev/ramzswap0 --init
コード: 全て選択
swapon /dev/ramzswap0
コード: 全て選択
# free
total used free shared buffers
Mem: 385068 355624 29444 0 13252
Swap: 96256 0 96256
Total: 481324 355624 125700
だいたい380MBくらいのメインメモリが確保されている時は、90MBくらいの擬似スワップを確保できる.....みたいな感じでしょうか。
最後に編集したユーザー 新谷 [ 10/04/11(日) 07:35 ], 累計 1 回
ramzswap その5
....で、使ってみた感想など。
・目に見えるような明らかな効果を狙うようなものではないかも。
・しかし、それ程大きな実装でもない(むしろすごく小さい)ので使って得することはあっても損することはなさそう。
・rzscontrolコマンドはデバイス初期化の他にも色々できるはずだがエラーになる(要研究)。
カーネルのソースの/linux-2.6.33.2/drivers/staging/ramzswap/ramzswap_drv.h を覗くと、とあるので、デフォルトでは
・メインメモリの最大25%をスワップとして利用できる
・その処理には最大でメインメモリの15%が割り当てられる(これは当てずっぽう)
.....みたいな感じ??
QemuでRAMメモリのサイズをすごく絞って(64MBとかで)実験しても、割り当てはうまくいっているようなので、「スワップを確保するためにメインメモリが尽きた」みたいな本末転倒状態になることはなさそうです。
・目に見えるような明らかな効果を狙うようなものではないかも。
・しかし、それ程大きな実装でもない(むしろすごく小さい)ので使って得することはあっても損することはなさそう。
・rzscontrolコマンドはデバイス初期化の他にも色々できるはずだがエラーになる(要研究)。
カーネルのソースの/linux-2.6.33.2/drivers/staging/ramzswap/ramzswap_drv.h を覗くと、
コード: 全て選択
/* Default ramzswap disk size: 25% of total RAM */
static const unsigned default_disksize_perc_ram = 25;
static const unsigned default_memlimit_perc_ram = 15;
・メインメモリの最大25%をスワップとして利用できる
・その処理には最大でメインメモリの15%が割り当てられる(これは当てずっぽう)
.....みたいな感じ??
QemuでRAMメモリのサイズをすごく絞って(64MBとかで)実験しても、割り当てはうまくいっているようなので、「スワップを確保するためにメインメモリが尽きた」みたいな本末転倒状態になることはなさそうです。