Add genhttp-11-ioxide (GenHTTP on the ioxide io_uring engine)#880
Open
MDA2AV wants to merge 6 commits into
Open
Add genhttp-11-ioxide (GenHTTP on the ioxide io_uring engine)#880MDA2AV wants to merge 6 commits into
MDA2AV wants to merge 6 commits into
Conversation
GenHTTP 11 on a custom io_uring server engine (the ioxide runtime) instead of the default socket engine. Built from the GenHTTP ioxide-engine branch (Kaliumhexacyanoferrat/GenHTTP#860): the Dockerfile clones that branch and the app references its engine + IO/Layouting/Webservices modules from source. Subscribes to the HTTP/1.1 profiles the engine supports: baseline, pipelined, limited-conn. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
|
👋 Heads up! This PR modifies the following frameworks:
|
Owner
Author
|
/benchmark -f genhttp-11-ioxide -t pipelined |
Contributor
|
👋 |
Contributor
Benchmark ResultsFramework:
Full log |
Owner
Author
|
/benchmark -f genhttp-11-ioxide -t baseline |
Contributor
|
👋 |
Contributor
Benchmark ResultsFramework:
Full log |
Owner
Author
|
/benchmark -f genhttp-11-ioxide |
Contributor
|
👋 |
Contributor
Benchmark ResultsFramework:
Full log |
- TFM net10.0 -> net11.0 (matches the GenHTTP ioxide-engine branch on net11) - Dockerfile: sdk 10.0 -> 11.0.100-preview.5, runtime 10.0 -> 11.0.0-preview.5 - README build note + meta description updated for .NET 11
- json, json-comp, upload, static (GenHTTP handlers; json via GenHTTP serialization) - async-db, crud via ioxide.pg (per-reactor pool resolved through the engine seam); in-process cache-aside for crud - json-tls on :8081 via ioxide.tls (kTLS TX) through the connection-transport seam - api-4 / api-16 reuse the above at 4 / 16 reactors - meta.json tests, Dockerfile EXPOSE 8081, README updated
…essed Size the ioxide write slab above the largest static asset (only when static is mounted, so the high-connection profiles keep the small per-connection buffer), and serve precompressed .br siblings via Assets.AllowPrecompressed. GenHTTP's file copy requests a 64 KB buffer that overflows the default 16 KB slab, so large assets (e.g. components.css) faulted and the static profile validation timed out with 0 bytes.
The validator expects the crud list to echo total + page (load-more semantics: total == count == rows on the page). Return a ListResponse carrying those fields instead of the plain DbResponse.
…astructure)
Match the frameworks/genhttp-11 entry's file structure so the two stay easy to
diff:
Model.cs shared DTOs (DatasetItem/ProcessedItem/RatingInfo,
ListWithCount<T>, CrudListResponse, CrudItem)
Tests/{Json,Upload,Baseline,AsyncDatabase,Crud}.cs
Infrastructure/Postgres.cs ioxide.pg pool wiring + row mapping
Infrastructure/TlsTransport.cs
Webservices return model types that GenHTTP's serializer renders; crud is a
sublayout at /crud/items. Behaviour matches the previous flat layout — all 12
profiles (json/json-comp/json-tls/async-db/crud/static/upload/baseline/pipeline)
re-verified against a seeded Postgres and kTLS. Unlike genhttp-11 this entry keeps
ioxide.pg / ioxide.tls and omits the websocket (the ioxide engine can't serve it).
Owner
Author
|
/benchmark -f genhttp-11-ioxide |
Contributor
|
👋 |
Contributor
Benchmark ResultsFramework:
Full log |
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.
genhttp-11-ioxide
GenHTTP 11 on a custom io_uring server engine (the ioxide runtime) instead of GenHTTP's default socket engine.
The engine runs GenHTTP's own HTTP/1.1 conversation directly on ioxide's per-connection duplex pipe — thread-per-core, one io_uring reactor per core, with chunked transfer-encoding, keep-alive, a per-second cached
Dateheader, and a per-reactor request pool. It's built from the GenHTTPioxide-enginebranch (Kaliumhexacyanoferrat/GenHTTP#860): the Dockerfile clones that branch and the app references its engine + the IO / Layouting / Webservices modules from source.Profiles — HTTP/1.1 only
The engine doesn't yet do TLS, HTTP/2 or WebSocket, so it subscribes to:
baseline— mixed GET/POST with query parsing (/baseline11sum webservice)pipelined— 16× batched pipelining (/pipeline)limited-conn— short-lived connections (close after 10 requests)Notes
MemoryViewsource generator); thesdk:10.0image used by the Dockerfile provides it.