io_uring, kTLS and Rust for zero syscall HTTPS server
14 points by the-mikedavis
14 points by 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!
So does this mean I tar up my website and then use the web server to send it? Kind of a neat idea