Menu

Post image 1
Post image 2
1 / 2
0

C# Networking Deep Dive With io_uring (part 1)

DEV Community·Diogo Martins·about 1 month ago
#flEhtCSY
Reading 0:00
15s threshold

CQ - Completion Queue SQ - Submission Queue CQE - Completion Queue Entry SQE - Submission Queue Entry This post is the first part in a deep dive series on io_uring, it describes a basic example on how to bypass every abstraction and directly use the kernel interface for highest possible efficiency TCP networking using C# on Linux with io_uring. The source code used in this post can be found at zerg , project Minima - a simplified lightweight single threaded, lower performance version of zerg for learning purposes, do not use it for benchmarking purposes. The second and third parts will dive into more complex high performance cases and leveraging C# async I/O via IValueTaskSource. io_uring is a Linux modern asynchronous I/O interface, the current traditional path is epoll_wait(to find out which sockets are ready) plus a separate syscall read/write/accept syscall to actually move bytes. Each of those crosses from user to kernel mode and back, this round trip is expensive.…

Continue reading — create a free account

Join HashtagPLUS to read full articles, follow hashtags, vote, and join the conversation.

Read More