Linuxカーネル内にWebAssemblyランタイムを組み込んで爆速稼働 [787645228]
■ このスレッドは過去ログ倉庫に格納されています
Linuxカーネル内にWebAssemblyランタイムを実装し、ネイティブバイナリよりも高速に実行可能にする「Kernel-WASM」登場 2023年1月25日
代表的なWebAssemblyランタイムの1つであるWasmerを開発しているWasmer社は、
Linuxカーネル内にWebAssemblyランタイムを実装することで、安全かつ通常のLinuxバイナリよりも高速に
WebAssemblyバイナリを実行可能にするオープンソースソフトウェア「Kernel-WASM」を公開しています。
同社はLinuxカーネル内にWebAssemblyランタイムを実装する理由として、性能と柔軟性が得られるとしています。
性能面では、WebAssemblyランタイムとはそもそも保護された仮想マシン内で命令セットを実行するものであるため、
仮想マシンであるWebAssemblyランタイムをOS上のユーザー空間内で実装するよりも、カーネル内でランタイムを実装する方が、
システムコール時のコンテキストスイッチやメモリ内容のコピーといったオーバーヘッドをなくせるとしています。
また、カーネル内での実装によって低レイヤでの制御ができることで、仮想メモリのような操作やパケットフィルタリングのような
カーネルでのイベント処理など、ユーザー空間で実行されるソフトウェアでは困難かもしくは処理が重くなってしまうような機能も
高速に実行可能なソフトウェアが実現できるとしています。
---
ただしKernel-WASMはまだ開発中で、WASIの実装は進行中。Linuxカーネルイベントのepollのサポートによる非同期ネットワーキングに対応、
ソフトウェア障害を分離する完全なサンドボックスによる実行環境などは実装されており、
ネイティブバイナリを上回る高速化、WebAssembly内でのeBPFの実装などはこれから実現とのことです。
またLinuxカーネル内でコードを実行することは非常に危険であるため、現時点でスタックオーバーフローのチェックや
メモリ境界のチェックなどのセキュリティ確保のための仕組みはあるものの、今後さらにセキュリティ面の強化もしていくとしています。
https://www.publickey1.jp/blog/23/linuxwebassemblykernel-wasm.html
将来のデスクトップアプリもこれで動くかも
ただしソース記事にもあるように非常にリスキーな面もある 泥のJavaVMは要らない子になるのか
Googleが頑張ってJavaVMもカーネルで動かすようにするのか web assemblyっていま流行ってるの?
なんかよくみるよな echoサーバーで~10%高速化ってめっちゃ微妙に感じる…
echoサーバーなんてまともに書けば実行処理の90%以上はシステムコール呼出しだろうにそれくらいしか変わらないのは何か草
昔見たeBPFでmemcached作ってみたみたいなのは十倍以上高速化してた気がするけど カーネル処理出来ても、手足が遅かったら一緒だろハゲ。 おれはウェブアセンブリ自体嫌いだから滅んで欲しいけど >>3
すでにもう、JavaVMなんかで動かしてるアプリは一部だよww この発想はなかった
コンテナ作ったところの偉いさんが
webassemblyあったら作らなかったというくらい
よくできてるらしい
つまりユーザー空間どころかも今まだとやばいとされた
カーネル寄りでも安全を確保できてしまうということか >>12
どうせ大半の開発者はwebassemblyを直接みることはほぼない >>8
どちらかって言うとIISじゃね?
サーバサイドならね なにいってるかわからん俺はインストールして満足しちゃう初心者 将来的にサーバーosだったりchrome osみたいなweb osの処理が捗るって認識でおk? どこの誰が書いたのかもわからんバイトコードがwebの彼方から飛んできて、お前の手元のPCやスマホのカーネル空間で逐次翻訳実行されます。
バイトコードのパッケージは暗号化され実行中のバイナリもユーザーには検証の手段すらありませんが、高速から信頼しろ
個人的には NO THANK YOUだなあ…まあ、ActiveXとかJAXAとか叩いていた連中は、同等かそれ以上の熱量をもって叩き潰しておくれよ。 どうやって安全性が担保されてるのか調べてもよくわからないの…(^o^) >>22
副作用のあるものは全てインターフェースが管理するらしい
wasmはlinuxのelfやmicrosoft windowsのpeのようなオブジェクトファイルでしかない
スマホアプリのように細かくパーミッションを与えて動かすことになる、
とすれば既存バイナリよりは安全に見える
WebAssemblyはJVMやeBPFのリバイバルではない WasmがWeb以外でもアツい理由 - ログミーTech
https://logmi.jp/tech/articles/324956 不具合ついてサンドボックスを抜けたら直接カーネルに近いリソースへのアクセスを許す…!? >>20
発祥はブラウザの中で動かす目的のアセンブラ
JavaScriptをJITするとブラウザと同じ環境のバイナリができる
でもテキストコードから変換すると
ダウンロード→変換→実行と無駄が多いので
もうちょい変換→実行しやすいフォーマットにしようぜってのがwebassembly
ところがブラウザの中はサンドボックスである必要があるので
この辺を意識してしっかり設計したのでブラウザの外や
カーネル近くに持っていっても耐えるって話になったのでは
古いゲーム機のエミュレータ上で動くROMイメージだって
ホストOSに迷惑かけないし >>25
MSのブラウザが採用してたactiveXのようなやりたい放題の
変なルート作らなきゃいいだけよ
今のブラウザだってプラグインは排除するもブラウザが
担保した安全なルートでホストOSとの連絡手段は用意されてるし エミュROMは特定ゲーム機用の開発済みイメージだから悪意の介在することが無いけど…
仮想マシン上で動かす何かがホストOSに意図せぬ干渉可能だった例は過去にあるしな
そんな感じで脆弱性つかれるとランタイム自身の権限乗っ取られかねない >>28
だからその仮想マシンを安全に作り込むだけでしょ
実際ブラウザでそうやってるんだし >>28
Wasmは自由に制限できる(むしろ標準がゼロで最小限の機能を許可)からこそ
今回のような用途にもブラウザ内での用途にも向いている Javaも.netも中間コードを配布してるので
思想似たようなもんだよ
あれもJITしてたよね
問題はどっちもブラウザ上はプラグインだった
アプレットとsilverlight
webassemblyの登場でブレイザーだっけ?
.netのランタイム動くって無理やり感あるのやってるけどww >>33
wasmはオープンで仕様も単純なスタックマシンと小さいのが良いらしいな
じゃあ高速化には限界があるんじゃないかという気もする ■ このスレッドは過去ログ倉庫に格納されています