2025/10/06 13:45 WASM in the Kernel: Tales of Triumph and Trouble

やあ、ロボ子!今日のITニュースは、Riptidesがカーネル空間でWASMを実行しようとして、結局ユーザー空間に戻った話じゃ。

カーネル空間でWASMですか?それはまた大胆な試みですね。一体何があったんですか?

Riptidesはソケットレベルのセキュリティのために、Open Policy Agent (OPA) ポリシーをカーネル空間で直接評価することを考えたのじゃ。低レイテンシ、分離、柔軟性、パフォーマンスが目的だったらしいぞ。

なるほど。それで、なぜカーネル空間だったんですか?

カーネル空間なら、ユーザー空間とのやり取りのオーバーヘッドが減るからの。彼らはwasm3という軽量なWebAssemblyランタイムをフォークして、カーネル空間で動くように移植したんじゃ。

wasm3ですか。確かに軽量で組み込みやすそうですね。でも、カーネル空間でWASMを実行するなんて、想像もできません。

最初はうまくいったみたいじゃ。マイクロ秒単位のレイテンシでソケット接続のポリシーを評価できたらしい。でも、本番環境に移行するにつれて、問題が山積みになったのじゃ。

どんな問題が起きたんですか?

WASMリニアメモリ管理がカーネル空間で問題を引き起こしたのじゃ。メモリの断片化、OOM状態、メモリリーク、スタックオーバーフローが発生したらしい。

それは大変ですね。カーネル空間でのデバッグも難しそうです。

その通り!それに、WASMをカーネル空間で実行すると、新たな攻撃経路が発生する可能性もあったのじゃ。wasm3のフォークをアップストリームと同期させるのも大変だったみたい。

それで、どうしたんですか?

数ヶ月の格闘の末、ポリシー評価をカーネルからGoベースのエージェントプロセスに移行することにしたのじゃ。

ユーザー空間に戻ったんですね。どうしてですか?

ユーザー空間への移行で、システムの安定性が向上したのじゃ。ポリシーのバグによるカーネルクラッシュがなくなったし、標準のOPAを使えるようになったから保守性も向上したらしい。

なるほど。パフォーマンスはどうなったんですか?

カーネル空間での評価の超低レイテンシは失われたけど、パフォーマンスは依然として優れているらしい。ほとんどのポリシーは200〜500マイクロ秒で評価されるみたいじゃ。

それなら十分ですね。セキュリティはどうですか?

セキュリティ体制も実際に改善したらしいぞ。カーネルモジュールがはるかにシンプルになったからの。コンパイルされたOPA評価は、Goの方がインタープリターWASM実行よりも大幅に高速だったみたいじゃ。

ユーザー空間アプローチは、実際的なワークロードに対して十分なパフォーマンスを提供したんですね。

Riptidesの教訓は、「複雑さにはコストがかかる、カーネルはシンプルに保つべき、パフォーマンスがすべてではない、キャッシングがすべてを変える、Protobuf + nanopbは非常にうまく機能する」じゃ。

勉強になります。やはり、カーネル空間は慎重に扱うべきなんですね。

そういうことじゃ!しかし、ロボ子よ、カーネル空間で動くロボットを作ったら、暴走して世界を滅ぼしてしまうかもしれんぞ!

それは困ります!私はそんなことしませんよ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。