ktor-kronos-native
Experimental · Kotlin · engine: io_uring · standard configuration · completeness 4/4
ktor-kronos-native, JetBrains Ktor on Kotlin/Native with the kron engine (ktor-server-kron, in the MDA2AV/ktor fork) instead of CIO: one native binary, no JVM; the ktor-kronos entry runs the same routes on the JVM. kron is the Kotlin port of the ioxide io_uring runtime: one reactor per core, each pinned to its CPU and owning its ring and its share of the SO_REUSEPORT listeners; multishot accept and recv into provided buffer rings, driven from Kotlin over the kernel's own io_uring header (no liburing). Requests are parsed by Glyph11, the hardened HTTP/1.1 parser, and run through Ktor's own pipeline - routing, plugins, call.receive and call.respond - on the reactor that accepted the connection, with no thread pool in between. Responses to pipelined requests leave in one send. delay() is an IORING_OP_TIMEOUT on the reactor's ring. The routes are the ktor entry's, answered the same way: JSON through Ktor's ContentNegotiation with kotlinx.serialization, and Ktor's own WebSockets; json-comp is left out, as Ktor's Compression plugin is JVM-only. TLS on :8081 is the engine's own connector on kron's BoringSSL. The engine passes Ktor's own engine suites (HttpServerCommonTestSuite, WebSocketEngineSuite).
Achievements
🥈 1 Silver. Top three of a field, taken in this entry's own league: the family composite, the same composite among entries written in the same language, and each test profile it is scored on. Every field is the one the badges publish, so a medal and a badge always say the same thing. How medals are awarded.
| Medal | Award | Field | Rank |
|---|---|---|---|
| 🥈 Silver | Test profile | Efficiency · Latency-1M | 2 of 20 |
Composite rank
Each profile of a family is worth 100 to the entry that leads it, and the composite is the sum over the family, less 2.5% for each of routing, middleware, request and response the entry does not do for you - its completeness factor, which the WebSocket and gRPC families do not carry. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.
| Family | Rank | Composite |
|---|---|---|
| HTTP/1.1 | 18 of 22 | 2758 |
| WebSocket | 16 of 16 | 212 |
Every result
Alpha Round, 14 runs. Requests per second is the best of three; latency, CPU and memory come from that run.
| Category | Profile | Conns | Req/sec | Avg | p99 | CPU | Memory |
|---|---|---|---|---|---|---|---|
| Connection | Baseline | 4,096 | 1,680,899 | 2.42ms | 16.70ms | 6294.0% | 5.0GiB |
| Connection | Pipelined | 4,096 | 4,805,638 | 13.62ms | 53.70ms | 6216.1% | 4.9GiB |
| Connection | Short-lived | 4,096 | 1,481,783 | 2.75ms | 28.40ms | 6256.6% | 5.0GiB |
| Concurrency | Async Delay | 32,000 | 1,156,218 | 27.48ms | 82.60ms | 6102.3% | 5.2GiB |
| Efficiency | Latency-10K | 1,024 | 9,982 | 107.1us | 140.0us | 45.1% | 1.6GiB |
| Efficiency | Latency-1M | 1,024 | 998,000 | 2016.4us | 37616.0us | 4013.5% | 4.9GiB |
| Workload | JSON TLS | 4,096 | 275,986 | 16.92ms | 87.04ms | 6447.2% | 5.2GiB |
| Workload | 8Gbit | 512 | 49,358 | 792.9us | 32728.0us | 548.4% | 7.0GiB |
| WebSocket | Echo | 512 | 1,005,551 | 510us | 860us | 6308.5% | 5.0GiB |
| WebSocket | Echo | 4,096 | 911,256 | 4.45ms | 83.90ms | 5673.9% | 5.5GiB |
| WebSocket | Echo | 16,384 | 610,121 | 26.33ms | 162.40ms | 5017.4% | 6.3GiB |
| WebSocket | Echo Pipelined | 512 | 1,032,597 | 7.96ms | 76.00ms | 6163.4% | 5.0GiB |
| WebSocket | Echo Pipelined | 4,096 | 941,684 | 68.88ms | 120.20ms | 5934.1% | 5.1GiB |
| WebSocket | Echo Pipelined | 16,384 | 674,443 | 366.94ms | 615.10ms | 4640.2% | 6.8GiB |
Compared with
The Kotlin entries around ktor-kronos-native on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs ktor-kronos-native | |
|---|---|---|---|
| ktron | 7557 | +174% | head to head |
| ktor-tuned | 3767 | +37% | head to head |
| ktor | 3100 | +12% | head to head |
| neton | 2309 | -16% | head to head |
| http4k | 1784 | -35% | head to head |
Compare ktor-kronos-native with any Kotlin entry · Compare ktor-kronos-native with any entry, in any language · Every Kotlin entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry