io_uring, kTLS and Rust for zero syscall HTTPS server

14 points by the-mikedavis


the-mikedavis

I am less interested in the web server part here (or io_uring really) but I love to see applications of kTLS and anything involving kTLS + sendfile(2). Intel noted that it’s not necessarily faster (slide 11) depending on how much data you’re sending from disk. But it’s potentially really fruitful for garbage-collected languages in high-throughput scenarios where data you read to send on a socket could sit in memory for longer than necessary thanks to GC.

I’d love to use kTLS+sendfile(2) for RabbitMQ streaming (which uses sendfile(2) over TCP connections) to avoid the garbage collector (RabbitMQ is Erlang). Also kTLS handoff lets Erlang shut down 3 extra TLS-specific processes per connection, after handshake, which can save some memory. And using it on the client side would be gravy.

In my older kTLS notes I see an earlier work by this author - glad to see more progress on this project!

symgryph

So does this mean I tar up my website and then use the web server to send it? Kind of a neat idea