Io_uring, kTLS and Rust for zero syscall HTTPS server
История: от pre-fork до epoll — каждый шаг уменьшал сисколлы, но они всё ещё оставались узким местом.
io_uring — кольцевые очереди в памяти: сервер пишет команды, ядро асинхронно их выполняет и кладёт результат обратно. При высокой нагрузке strace не покажет ни одного сисколла.
1 поток = 1 ядро без разделяемых структур; память берётся только из локального NUMA-узла.
Память: заранее выделяем фиксированный буфер на соединение — без brk/mmap, без фрагментации.
kTLS — после рукопожатия шифрование переходит в ядро. Плюсы:
Работает sendfile, данные не копируются в userspace.