userland-ioについてはこれまでもは何度か話してきたが、 ある程度成果がまとまったのでLTで話すことにした。 興味のある人は参加してほしい。
2021年2月16日のShinjuku.rsだ。
ユーザランドIOの展望 で、リクエストのページに対してユーザランドからmmapすることで ゼロコピーを実現するというアイデアを示したが、 これは調べてみると、TCPのReceiveに対して行われた最適化によく似ていることがわかり、 それなりの水準のことはしているという裏付けが得られたため、そのまま進めている。 Zero-copy TCP receive
ゼロコピーは面白い。 I/O周りのゼロコピーはカーネルの修正も必要とするため、それなりに楽しめる。 また、おれはこのプロジェクトとは別にRaft合意アルゴリズムのライブラリも作っているが、 こちらではZerocopy Deserializationというのが重要なトピックになってくる。 こちらも調べてみるとなかなか面白い領域だ。
ところで、やっていることに対して自分でコードや過去の記事(LWNなど)を調査する以上の裏付けはとっていない。 だから、MMやゼロコピーについて詳しい人がアドバイスをくれたらありがたいと思っている。 やってもいいという人がいたら、メールをください。
あと、今回のShinjuku.rsはあくまでも一般Rustacean向けのLTをするつもりであって、 技術的なフィードバックを得たいのであればカーネルVMの方が適切かなという気持ちはある。 現状もう枠がなくて諦めたが、もし、間に合わないから枠を譲れますという方がいたら連絡ほしい。