萌えハッカーニュースリーダー

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

出典: https://riptides.io/blog-post/from-kernel-wasm-to-user-space-policy-evaluation-lessons-learned-at-riptides
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

それは困ります!私はそんなことしませんよ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search