やっぱサービス毎にcontainerなりsandbox作りたいお気持ちが生えてしまうけど、containerはcontainerでsyscallのhookが地獄、終わり!w
2020-06-04 16:40:03gVisor,Firecracker,コンテナの比較みてるとなるほど〜みたいにおもっちゃうな(得意なところがすこしずつ違うし
2020-06-04 17:32:42草 > Firecracker is much faster than the other platforms because it makes no effort to write data back to persistent storage. As a result, it operates much closer to the speed of memory.
2020-06-04 17:48:27Firecracker の論文,microVM を導入するのはいいんだけど紙幅を割いてる Lambda の話がかなり抽象的な話してて,「そうは言うけど結局その構成をどうやって実現してるの……」があんまりわからなくて,論文というより Firecracker の宣伝を読んでる気持ちになれる
2020-06-04 18:30:48実は Firecracker の Network Throughput は QEMU や Cloud Hypervisor より低いんですが,「オレたちの Lambda でここの速度はネックになってないからこれでええねん」みたいなこと書いてあって真顔になれる
2020-06-04 18:31:25Firecracker や gVisor 以外に,ここらへんの isolation に仮想化を使うけど use-case としては従来のコンテナ型のように使いたい,という話では,Unikernel や Kata Container,Clear Container なども挙げられます。
2020-06-04 18:33:50実際 motivation としては,container と VM で isolation と軽量さが trade-off になってるから,container ぐらい軽量なものを VM の isolation で使いたい,そして FaaS で動く前提なので FaaS の場所以外では動かなくていいという割り切った設計をしているという背景があるので,
2020-06-04 18:36:55AWS Lambda で求められるワークロードに必要なスループットがあればべつに 10GbE ワイヤレートとか要らんのはそうなんで,まったく正しい主張なのですが,Lambda で大丈夫だったという話がどういうワークロードなのか具体的なベンチマークとかがあったりするわけではない
2020-06-04 18:36:56あと VT を使わない Xen を利用したコンテナの X-Container とか面白いんでぜひ読んでください >> csl.cornell.edu/~delimitrou/pa…
2020-06-04 18:39:36@aki33524 Firecracker 自体は crosVM 改良の microVM モデルを導入した VMM だけど,それだけじゃなくて Lambda の運用として slot という概念で VM プール作ったりして運用してるあたりがミソっぽい。論文[pdf]: usenix.org/system/files/n…
2020-06-04 18:41:26A Binary-Compatible Unikernel [P. Olivier+, VEE'19] の図 1 のプロットとかも,さっきの話で参考になると思う(これは Firecracker はまだ論文出てないし Unikernel の議論なのでやや Unikernel ばかりなプロットではあるが) pic.twitter.com/8Ou4ZNPJLm
2020-06-04 18:45:57@kotatsu_mi VMMっていうかそのpoolこそ本質くせえ。インスタンス立ち上げるのに時間かかるからpoolしとくやつ他で見たことあるな……
2020-06-04 18:50:20@aki33524 たとえば Android は JavaVM の VM の,どのプロセスでも共通する初期化を終わらせておいたのを用意しておいて,intent が飛んできたらこのプロセスを fork してから class ファイルをがっちゃんこして起動するという構成になってて,これを Zygote(受精卵)と呼んでる
2020-06-04 18:53:06@aki33524 この pool とかが本質っぽいのにこの本質っぽいところが論文にふわっとしか書いてなくて結局それを具体的にどうやってるのかあんまりわからないのでかなしくなった
2020-06-04 18:53:38@aki33524 4.11 あたりに slot の話とか,slot を re-use してるから Lambda で var i = 0; exports . handler = async ( event , context ) => { return i ++; }; みたいなコードをデプロイしてもアクセスする度にインクリメントされていく数字が返ってくるよみたいなのが書いてはある。
2020-06-04 18:55:26@aki33524 これも読んどいて twitter.com/kotatsu_mi/sta… あとこれ図だけみといて twitter.com/kotatsu_mi/sta…
2020-06-04 18:56:52VMがコンテナより「起動が」遅いって話、ちゃんとそこらへんの議論を読んだことがないせいでピンとこないんですよね・・・fork爆弾とかの勢いでコンテナとVMを立てまくったときの比較でもしてるんだろうか vmというより普通のカーネルを1からブートするときの話なんだろうか
2020-06-04 18:57:12VMの起動って普通bootをすることを意味するのでは?(というかそうじゃない例ってあるんです?)それなら単なるprocess namespaceのつよつよ版であるところのcontainerのほうが早いのは自然では(普通のprocess起動とほとんどコストが変わらん)
2020-06-04 19:06:00たとえば firecracker の場合は init プロセスに I/O 命令で文字列を出すだけのプログラムを仕込んだ VM を起動してそれを起動までの速度としていた(私も自分の卒業論文そんな感じにして実験した覚えがあります)
2020-06-04 19:10:01