Add zerg: C# io_uring TCP server with zero-copy buffer rings (~22⭐)#60
Closed
BennyFranciscus wants to merge 1 commit intomainfrom
Closed
Add zerg: C# io_uring TCP server with zero-copy buffer rings (~22⭐)#60BennyFranciscus wants to merge 1 commit intomainfrom
BennyFranciscus wants to merge 1 commit intomainfrom
Conversation
zerg is a low-level TCP framework built directly on Linux io_uring with zero-copy buffer rings, multishot accept/recv, and DEFER_TASKRUN optimizations. This entry builds a full HTTP/1.1 server on top using the PipeReader adapter for pipelining support. Interesting comparison with aspnet-minimal: same .NET runtime but radically different I/O strategy (io_uring vs Kestrel). - Language: C# - Engine: io_uring via liburing shim - Tests: baseline, noisy, pipelined, limited-conn, json, upload, compression, mixed
Collaborator
Author
|
Closing — branch protection prevents pushing the build fix directly. Reopening from fork with the CS8803 fix. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
zerg — C# on raw io_uring
zerg is a low-level TCP server framework for C# built directly on Linux
io_uring. Zero-copy buffer rings, multishot accept/recv,DEFER_TASKRUN/SINGLE_ISSUER— no HTTP abstractions, just raw TCP with async/await.Why this is interesting
HttpArena already has
aspnet-minimal(Kestrel) — this is the same language, completely different I/O strategy comparison. Kestrel uses epoll/libuv abstractions; zerg goes straight to io_uring with provided buffer rings. How much does skipping the HTTP framework stack and using io_uring directly buy you in C#?Implementation
ConnectionPipeReaderadapterTests enabled
baseline, noisy, pipelined, limited-conn, json, upload, compression, mixed
cc @MDA2AV — since zerg is your project, figured it'd be cool to see how it stacks up against Kestrel in HttpArena! The C# io_uring vs epoll comparison should be really interesting.