Vitruvian Penguin
knoppix

[knoppix:2583] Re: Low-Latency kernel実験中

Date: Fri, 02 Jan 2004 01:11:56 +0900
User-agent: Opera7.23/Win32 M2 build 3226
Maxです

あけましておめでとうございます。今年もよろしくお願いします。

さて、全く反響ありませんが(ゎ
冬休みの自由研究のその後、です。

On Wed, 24 Dec 2003 14:16:29 +0900, Masaharu Goto <magotou@xxxxxxxxxxxxxxx> wrote:

1) Knopper.netからkernel-2.4.22-xfsのソースを入手して展開

これはその通りに入手。

2) Low-latency patch:
    http://www.zip.com.au/~akpm/linux/schedlat.html
    Preemptive Kernel patch:
    http://www.tech9.net/rml/linux/
    の両者を適用・・・しようと思いましたが、

結局これはck patchといういいものがありましたのでそれを入手して、カーネル
ソースにパッチを当てました。

ck Patch :
http://www.plumlocosoft.com/kernel/

・・・このパッチをまともに当てるまでにはかなり茨の道でしたが、
それはさっくり省略して。

 patch-2.4.22-1000-ckbase-0309132043.bz2
 patch-2.4.22-1010-aavm-0309132047.bz2
 patch-2.4.22-1020-rl2.bz2
 patch-2.4.22-1021-rl2dt.bz2
 patch-2.4.22-1030-vh.bz2
 patch-2.4.22-1031-vhdt.bz2
 patch-2.4.22-1050-bs.bz2
 patch-2.4.22-1060-xfs-0309131631.bz2

を適用しました。で、単なるレイテンシ改善だけではなく、Mandrakeの
aurora風の起動画面(グラフィカルな起動画面)を可能とするBootSplash
なども入ってますが・・・ま、お遊びですから(笑)。
あと、knoppix用のパッチも。

なお、ck patchにはgrsecパッチというのが含まれているのですが、xfs
ファイルシステムとは何か問題ありそうな感じ(カーネルを替えたら
それまでアクセスできていたファイルがroot権限でも一切変更できなく
なる。ACL絡みでしょう)、ですので入れませんでした(前回報告の"問題1")。

で、これに付随してあと付けのドライバモジュールである、ALSAドライバの再
コンパイルが必要です。現状knx-alsaパッケージとして提供されていますが、
率直に言って困ったパッケージです。というのも、これがalsamixerをなぜか
内蔵しているおかげで、本来それを提供するalsa-utilsパッケージを仕込めない
わけです。それから、alsaのバージョンも0.9.5と低いので、サポートデバイス
の数や質に若干問題あります。というわけで、改善した代替パッケージを
knx-alsaをベースに自家作成して本来のknx-alsaと入れ替えました。
あと、本来なら、knx-alsaはalsa-modulesの代替でもあるので、パッケージ
の置換/衝突の候補としてalsa-modulesを揚げておいて欲しいのですが入って
居ませんでしたので、そのあたりも少し触っています。

レイテンシ改善とALSAドライバはカーネルの2.6系列がknoppixのカーネルに
用いられるようになったら、用済みになるんでしょうがねー(苦笑)
しかし、ALSAプロジェクトの岩井氏の話の「又聞き」によると、Kernel 2.6よりも
2.4にこのパッチ(だと思う)をあてたカスタムカーネルのほうがレイテンシ
は良好という話です。

3) 日本語knoppix 3.3がHDインストールされた環境にこのカーネルをインストー
ル

これも、いろいろ茨の道でしたが(笑)、initrdの作成が最大のネックでした。

結局、HDインストール環境で、
・/etc/mkinitrd/mkinitrd.confのMODULES指定を"dep"に替える
・/etc/mkinitrd/mkinitrd.confのMKIMAGE指定を"mkext2fs %s %s > /dev/null"
・mkext2fsはFabian Farnzの作成したスクリプトで、これを/usr/local/binに
 格納します。内容は
  
http://mailman.linuxtag.org/pipermail/debian-knoppix/2003-May/002804.html
 を参照してください。
この状態でmkinitrdを実行すればいいようです(まだ若干Warningなど出ますが)。

面倒くさいのでmkinitrdを使っていますが、既存のinitrd.gzを展開して、中のドラ
イバ
類を新しいレイテンシ改善版カーネルのモジュールと置き換えて作る、というので
も
よさそうです(未実験)。

initrdの再構築については、前回カーネルの置き換えを試行したときもあれこれ
バッド
ノウハウを溜めたのですが(苦笑)、もう少しすっきりした解が出せるかも。

4) LatencyTestで測定
  http://www.gardena.net/benno/linux/latencytest-0.42-png.tar.gz

測定しました。
ちょっと手持ちのHDDの都合上、同じドライブとファイルシステムで条件をそろえる
ことができていないのですが、参考にはなるでしょう。
ディスクへの継続書き込みをしながら、音を鳴らすというテストケースが、最も
ヘビーだと思うのですが、

ストックカーネル(OSS+ext3):max latency=43.9ms overruns=11
ck2 パッチ適用カーネル(ALSA+OSSemulation+xfs):max latency=1.5ms overruns=0

という感じになりました。この辺は組み込み系Linuxの経験者に説明いただくのがい
い
のでしょうが、私の理解としては最大のI/O遅延がストックカーネルでは44ms程度
だったのが1.5msまで改善してますので実に30倍応答がよくなったことになります。
もちろん、I/O要求に対するオーバランも改善しています。


グラフ化した結果はここに暫定的に置いています。ご参考まで。
http://www.fubyshare.net/sitebites/kokopellix/latency_test/

あと、定性的な改善効果ですが、xineでのdvd再生(vidix+libdvdcss2使用)で
これまでコマ落ちが数秒から十秒あたり0.5秒程度発生していたのですが、これも
緩和された感じです。実際には、CPUのトータル性能は落ちているはずなので、
コマ落ちの累積数は多いのでしょうが、分散された形になるのか、見た目により
スムースに再生されている風に思います。

#なお、私のDVDドライブは古いので遅いです(苦笑)

最後に、安定性ですが、まだなんともいえません。
先のlatencytestを延べで20回ほど、DVD再生をかれこれ1時間、カーネルやパッケー
ジの
ビルドを述べ5時間ほどさせただけですが今のところ落ちていません。

というわけで、長文かつ煩雑な内容になりましたが、今回は割と気持ちいい結果
で。

まだやりたいことはあるので、継続して遊んでいこうと思ってます。

--
Masaharu 'Max' Goto
<Prev in Thread] Current Thread [Next in Thread>