LP49

昨日,TIP9UGの勉強会があった.お題はLP49で,開発者の佐藤さんが発表された.

IWP9に関するエントリでも書いたけど,LP49では,L4マイクロカーネル上のOSパーソナリティ(サーバ)として,Plan9が実行される.つまり,Plan9がユーザ空間で動く.この際,Plan9自体はモノリシックなサーバではなく,デバイスドライバ単位(#Sとか,#lなど)でリソースマネージャとして分割される*1.リソースマネージャは,L4プロセスとして実現されるので,それぞれの論理空間とスレッドを持つ.用途に応じてリソースマネージャを取捨選択できるので,コンポーネント指向OSと呼んでいる.

最初,LP49は組込みをターゲットにしていると聴いて,ピンと来なかったんだけど,議論しているうちに何か見えてきた気がする.今(か近い将来?)のロボットや車を考えてみると,複数のプロセッサがネットワークでつながれ,分散処理するという形態になっている.例えば,以前,ロボットの研究プロジェクトで,プロセッサが全体に一つで,中央集権的に処理するとレイテンシが大きく,リアルタイム性を保証できないので,センサやアクチュエータに近いところにプロセッサを置いて自律的に処理させる.という話を聞いた.

このような分散環境を想定すると,センサやアクチュエータなどのデバイスごとに,9PをしゃべることができるぐらいのミニマムなOSがあって,あとは,それらを調停するOSがあればいいかなと最初に思った.でも,全部のOSがLP49のようなコンポーネント指向OSでもいいんだよな.ぶっちゃけ,コンポーネント指向であることはそれほど重要じゃなくて,分散OSであることが本質だけど... 分散OSだから,リソースマネージャがどこにあろうと,アプリを変更する必要がない.機能が増えて負荷が大きくなったら,プロセッサを増やして処理を分割されるというスケールアウトもスムーズにできそうだ.リソースマネージャをマイグレーションさせることで,負荷分散もできるかもしれない.面白いアプリはないかな?

もう一つ,重要な点はOSがユーザ空間で動作することで,開発が容易になる(と期待される)こと.LP49の場合は,使い慣れた(笑)gccgdbで開発できるのも大きいかも.そう言えば,anonymous fieldやanonymous parameterは手作業で書き換えたとのこと.ご苦労さまです.単純な文字列置換でどうにかなるものじゃないけど,コンパイラのフロントエンドに機能追加するか,コンバータが欲しいところ.そうじゃないとメンテナンス(Plan9本家への追従)が大変だし.

現時点ではLP49と素のPla9を性能比較は測定されてないみたいだけど,L4/BSDだと,大体1〜2割遅くなって,ベンチマークによっては速くなるという結果が出ているらしい.面白いのは,Machの論文でも同じような結果が出ていること.論文としての落としどころはこの辺なのかね.

以下,雑多なメモ

  • 8cからgccへの移植の大半の時間は,anonymous fieldやanonymous parameterの書き換えに費された.単純な置換では無理で,一部セマンティクスを変える必要がある箇所もあった.
  • IWP9ではなぜL4なのかという質問が,OS研究会では既存研究との違いを突っ込まれた.L4/Linuxの存在は知っていたが,L4/BSDもあるらしい.
  • 組み込み分野で,分散OSが活きるケースはどんなとき?
  • Plan9のデバイスはインタフェースがきっちり決まっているので,コンポーネント化しやすい.
  • kernel configuration fileにドキュメントはあるか?
  • カーネルソースコードを読むときは,mk後にしか作られないソースファイルがあるので注意.ブート回りとか,システムコールエントリとか.特に後者はmk後に削除されてしまう.
  • RM分割のポリシは? USBスタックとか,LinuxのLKMのように複雑な依存関係ができてきそうだが,どうする?
  • 名前空間の管理はPM(プロセスマネージャ)が行なう.
  • IPCの最適化.APP -> PM -> RM --> APPとか.
  • TUBAMEクラスタ見学.ClearSpeedはなかなかプログラミングが大変そう.うまく作らないとOpteron側が止まっちゃう.
  • 梅田望夫Web2.0ってどうよ?シリコンバレーじゃなくて,LKMLに人を送り込め.
  • コンピュータヒストリアン養成
  • Plan9PortでVentiが動く

(追記: 2006-02-06) L4と言えば,未踏プロジェクトに採択されたL4VMってのもある.こちらはQEMUと組み合わせて,L4上で複数OSを動かすというプロジェクト.QEMUのダイナミックトランスレーション機構を使うので,CPUのエミュレーションも可能という特長がある.

*1:ただし,現在公開されているバージョンは,モノリシックなサーバになっているとのこと.さらに残念なことに,現バージョンはQEMUで動かない...