ramzswap(カーネル2.6.33.2)

PUPPYアプリケーションパッケージ、PETやSFSなどの話題です

モデレータ: 暇人, YoN, nyu

返信する
新谷
記事: 934
登録日時: 08/10/09(木) 18:52
お住まい: 大阪

ramzswap(カーネル2.6.33.2)

投稿記事 by 新谷 »

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
新谷
記事: 934
登録日時: 08/10/09(木) 18:52
お住まい: 大阪

ramzswap その2

投稿記事 by 新谷 »

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
にあります。
新谷
記事: 934
登録日時: 08/10/09(木) 18:52
お住まい: 大阪

ramzswap その3

投稿記事 by 新谷 »

それで肝心の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

コード: 全て選択

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/ に実行ファイルができます。
これをパッケージ化したものが以下。現在のところ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/
新谷
記事: 934
登録日時: 08/10/09(木) 18:52
お住まい: 大阪

ramzswap その4

投稿記事 by 新谷 »

で、パッケージも揃ったのでQuirky-018で試してみました。
重複になりますが参考リンク:
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 回
新谷
記事: 934
登録日時: 08/10/09(木) 18:52
お住まい: 大阪

ramzswap その5

投稿記事 by 新谷 »

....で、使ってみた感想など。

・目に見えるような明らかな効果を狙うようなものではないかも。
・しかし、それ程大きな実装でもない(むしろすごく小さい)ので使って得することはあっても損することはなさそう。
・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とかで)実験しても、割り当てはうまくいっているようなので、「スワップを確保するためにメインメモリが尽きた」みたいな本末転倒状態になることはなさそうです。
返信する