Skip to content

ktor-kronos: Ktor on the JVM with the kron engine (experimental) - #1683

Merged
MDA2AV merged 16 commits into
mainfrom
ktor-kronos
Oct 31, 2026
Merged

MDA2AV merged 16 commits into
mainfrom
ktor-kronos

Conversation

@MDA2AV

@MDA2AV MDA2AV commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Adds ktor-kronos, an experimental entry: JetBrains Ktor with the kron engine (ktor-server-kron, in the MDA2AV/ktor fork) instead of CIO, on Kotlin/Native or on the JVM. One build arg picks the runtime; it is set to the JVM.

Runtime knob

ARG KRONOS_RUNTIME at the top of the Dockerfile:

  • jvm (set now): the app as a jar on JDK 25 (eclipse-temurin:25-jre), run with the ktor entry's JVM flags (G1, NUMA, AlwaysPreTouch) and a heap that starts at 8% of RAM, half of it young. kron reaches io_uring and BoringSSL through the FFM API; its jar carries its BoringSSL.
  • native: the same app as one Kotlin/Native binary in debian:bookworm-slim, which also runs as its own entry, ktor-kronos-native (ktor-kronos-native: Ktor on Kotlin/Native with the kron engine (experimental) #1684).

Both are built from the same source; only the main and a few platform calls differ. json-comp needs the JVM: Ktor's Compression plugin exists only there, so for native json-comp comes out of meta.json.

What it is

  • The engine. 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.
  • Nothing a request does is shared across reactors. Each reactor has its own job, which its calls' delay()s and its connections' jobs go on. Outside development mode, the engine resolves the application once rather than per call through EmbeddedServer, which on the JVM hands it out under a read lock. The engine also sizes kotlinx-io's segment pool before the reactors are pinned: the pool sizes itself on first use by availableProcessors(), which counts the calling thread's CPUs, so if a pinned reactor gets there first the whole process gets one slot.
  • HTTP/1.1.
    • Requests are parsed by Glyph11.
    • Ktor's own pipeline (routing, plugins, call.receive, call.respond) runs 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 own ring.
    • WebSockets are Ktor's own, over the upgraded connection.
  • TLS on :8081 is the engine's own connector on kron's BoringSSL, one TLS context per reactor. Where the host has the tls kernel module, the kernel encrypts the records (kTLS TX) and receive stays on BoringSSL; elsewhere BoringSSL does both.
  • JSON is Ktor's ContentNegotiation with kotlinx.serialization, gzipped by Ktor's own Compression plugin on the JVM, as on the ktor entry. Two changes, both through Ktor's own extension points:
    • The JSON converter drives kotlinx.serialization's encoder into UTF-8 bytes. The output is byte-identical, but encodeToString borrows its buffer from one process-wide pool under a lock, which every reactor queues on.
    • Ktor's GZipEncoder runs its deflate on the reactor (Dispatchers.Unconfined) rather than on Dispatchers.Default, where Compression's empty context sends it.
  • The routes are the ktor entry's, answered the same way; only the engine and the platform differ.
  • GC.
    • Native: Kotlin/Native's collector is not generational and stops every reactor to mark, so the heap floor is 64 MiB per reactor, as on ktor-kronos-native. KRONOS_GC_MIN_HEAP_MB overrides it.
    • JVM: G1, as on the ktor entry, with the heap starting at 8% of RAM (20 GiB on the arena) and half of it young (-XX:InitialRAMPercentage=8 -XX:NewRatio=1). G1 started at 2 GiB and kept the young generation small. Each young collection copies every call in flight, 32000 of them at once in async, so fewer collections pay: async +15% locally.
  • Conformance. The engine passes Ktor's own engine suites on both runtimes: HttpServerCommonTestSuite 35/35 and WebSocketEngineSuite 17/19. The other 2 are disabled in Ktor itself, for every engine. On the JVM it also passes Ktor's JVM-only engine suites (content, sustainability, connection, config, plugins), but for six tests where kron differs, skipped with their reasons in the fork.

Profiles

  • Subscribed: baseline, pipelined, limited-conn, latency-1m, latency-10k, async, json-comp (JVM only), json-tls, 8gbit, echo-ws, echo-ws-pipeline.
  • Not subscribed: static-tls (reference-only for frameworks), h2, h3 and the DB profiles.

Build

Neither the engine nor kron is published, so the Dockerfile builds both from source at pinned commits:

  • kron 02f662f (MDA2AV/kron) is published into the build's local Maven repository with Kotlin 2.3.21, the version Ktor builds with.
  • The fork 033263e0c (MDA2AV/ktor, branch kron-engine) gets the arena app added as a project of its own build.

The native image is 83 MB and builds in about 5.5 minutes cold; the JVM image is 355 MB and takes about 2.5 more on the shared build stage. To build trees that are not pushed: --build-context kron=<tree> --build-context ktor=<tree>.

Diagnostics (temporary)

On the JVM, the log has CPU per thread group and GC every 5 s, and a Flight Recorder summary every 10 s. The summary lists hot methods and stacks, contended locks with the code that takes them, and the slots of kotlinx-io's segment pool. They come out once the numbers are understood.

Validation

validate.sh ktor-kronos: on the JVM (set now) 64 passed, 0 failed, json-comp included; natively 59/59 without json-comp. Both: fragmentation 9/9, WebSocket 7/7, TLS verdict pass, kTLS TX.

…AV/ktor fork - io_uring reactors, Glyph11 parsing, no CIO (experimental)
@MDA2AV

MDA2AV commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

/benchmark --save

@github-actions

Copy link
Copy Markdown
Contributor

👋 Benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ktor-kronos | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 272,371 — — — — 2180.8% 1.4GiB ~0% ~0%
pipelined 4096 546,419 — — — — 1673.4% 1.4GiB ~0% ~0%
limited-conn 4096 218,798 — — — — 1855.2% 1.4GiB ~0% ~0%
echo-ws 512 95,583 — — — — 689.7% 1.3GiB ~0% ~0%
echo-ws 4096 42,561 — — — — 418.6% 1.4GiB ~0% ~0%
echo-ws 16384 83,425 — — — — 991.0% 2.4GiB ~0% ~0%
echo-ws-pipeline 512 64,216 — — — — 344.7% 1.3GiB ~0% ~0%
echo-ws-pipeline 4096 34,066 — — — — 206.3% 1.4GiB ~0% ~0%
echo-ws-pipeline 16384 70,536 — — — — 1402.2% 2.0GiB ~0% ~0%
latency-1m 1024 320,253 0.3203 ⚠️ 64.99us 14381056.0us 15101952.0us 2062.6% 1.3GiB ~0% ~0%
latency-10k 1024 9,983 0.9983 64.38us 236.0us 2943.0us 61.4% 1.3GiB ~0% ~0%
async 32000 367,677 — — — — 3807.1% 2.4GiB ~0% ~0%

Composite score, main against this run, in the board's default view:

Family main this run Δ
HTTP/1.1 - 932.5 (#22 of 23) -
WebSocket - 18.3 (#15 of 15) -

The results on main were measured in another session, so a few points up or down can be the machine and not the change.

Full log
  "duration_s": 20.009,
  "requests": 6080114,
  "bytes": 541130146,
  "achieved_rate": 303873.12,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.3039,
  "bytes_per_sec": 27044707.55,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 16353863,
  "latency_us": {
    "min": 60, "mean": 6792473.4, "stdev": 4023095.1, "max": 16375807,
    "p50": 6748160, "p75": 10145792, "p90": 12292096, "p99": 14512128, "p99_9": 15749120, "p99_99": 16216064
  },
  "status_codes": { "1xx": 0, "2xx": 6080114, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 1946.0% | Mem 1.3GiB
[info] run 1 wins on score

=== Best: 320253 req/s (CPU: 2062.6%, Mem: 1.3GiB) ===
[info] exact CPU: 416.40 core-seconds | 64.991 us/req
=== Fixed-rate: cpu/req 64.99us | p99 14381056.0us | p99.9 15101952.0us | rate_ratio 0.3203 ===
[warn] offered rate fell short: rate_ratio=0.3203 (target 1000000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-1m/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos

==============================================
=== ktor-kronos / latency-10k / 1024c (tool=zrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199598,
  "bytes": 17764222,
  "achieved_rate": 9978.25,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9978,
  "bytes_per_sec": 888064.02,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 54, "mean": 145.6, "stdev": 1092.7, "max": 50879,
    "p50": 92, "p75": 118, "p90": 136, "p99": 260, "p99_9": 13916, "p99_99": 44880
  },
  "status_codes": { "1xx": 0, "2xx": 199598, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABZB4nEVVXYhVVRTeZ+119vm599y5M3Pnzow544zOv5NO4A+kKZkoGWqaShC99VYPEVSPkQyTiEhkDBY9iEn1JIMPPoiIiAwiEvMgQhHRD4TEMIiESAzRt9Y6p+6ZOWfvfdb61lrf+jlrZ891O5ePOvv58hnp5twnbvcjO3ib0pGxE+/NRhejOVqge/5muJs/6ppfPz/z866Vfav7L+67s/fTXae2Xd301cbPJ55M3p/+csvj5//c+/jQ4vGTx/45eunV8wfn953ecXbL3U0/TS1M3ZpcHf9u9Orwo+Ebww+Hv193f+DJ2qVnTq2Z67vSOtN9qbnUeFrMNxaLxeLHYqX+d22hfqFYbl5vPe251f/L4PLIyvjqxOmJG+NLGx4O3O6b6z/fOtm+0L7Wutd1p7laLOdns4XkQfgjXoqv8EV/3T+mM36BPqPLdIlm6WF0L7obLUbXot+im9FS9Fe0Ej3Ayf3oTnQ5+ib64EL07lvHThx9/cA7h3bu2bln+sCemW3TO2fGZqaG+oYmxgYnBsfaa4bGNk1P9I0Mrh/p6xocHGrWW+tb7XTN2nZf3mg26l2NRrvJabPdCK1G3qB6mte70kZez3NmCpSnnHKeUmCiBpaEJw4C9jmRCyk7rNMAAcd14iBq5EjukMRCNEKQDePQpTHexdgG0pcO0qIBdQHVq8Yp9oYBeE8eC8YNQi448YtJMCgWfW9giiWgCdUgzNBTGJWAGnRqKSkkFIEHb8iz7LD1VJOFKHgFYwVWYUh6imUhwagC1ww3UELlTwxINCT+wkkWUKixOJMorpiDQIdCO8UoOKgSBDVOIUDtJTiM5U0ioQOLxS9OVZjMEnFWcszmNdRYbMSUURKUE1YcVa4UfRkiIvFgS7Zes1aQ+scaE+4JpRICaxgOB0BLlJYEZxx07WGr8lWcVHBvxhKGEQlHyQgSlcRnMhqieaJ+hcoX4Yk14wLr9MqApHWjqKZptIOATGtIo4e3mgZV8rY2lMwCMR46JPggbzUNUm0FBXPHaeoF01eJlQRAXSNRtxUF7LuK92qn9W6/KmeIzCsCl8eBlXDYQVSJEA1DNeG+CFqK2GbGpMXpUgGQkmJjQ1iV9MIXhKU6UiggGNFY4Fb6eMcWsqDGSgdbkq22Km6cthTaUztSO82IK5PEViHmnOY6+59mk/S2i7WaJdzY6lD7Qrln068QauKwdL4vy1msaWMn1iDWBWXMcC6xzgKBwYquEmYrJs0dCzNl2fxHl7LtqjJNtFjMfbWpOEKx1qlNBvNJhpaVCf4gEWLMMRk3qU4LjzWFJOUgJSTiXqeCK2sErgR5sI4vO8QE01JyIVa7Ngc13zIMOM+4lLPRxFUZiWOxqNvQKvsYrgZFYzVidV/OKhmCIhYs9EQNkc0hm28o/lxpEOe1yqx9reSl8V1lWxKpRWeZTtR1LAtrRyMtk8x0YgKbWAdZT/da7bCodciwpVEuq8mXA6OG8YMb1L1C9muNdQIfN7EwrNnPbATgGqUeCAxg9SLePovU9UBJIqI3Ifo+rZMQ3lAPMgHvVEzpA5xZz8QQ2gCMfnmvFS3mu2kHTjpVMqOvIxwM02baSi9AopcO0mu4PsLVgf2ounAE1yRvxclx2k+HabuEMkqT4k+3mtpB4zBSAGUS4L8S7HbSh/QSfRypZ0dw7yWA7WboJ8qF/EvYh6H7bQQNocljE9NzIuK5F4ib6WVg9iL8g7D+QwSZjWUj9pYTrZ+7EYnodpQNv5teAQIyBfZirOXE0xekMW5ViiR54hKc2C7Metx6tENipdQb2d32bUv0JNG3lZGipNCVNSMO6HelOkuskmL7ELHIi4vcWU4e1QFMjeREoo+132OxVyBqp9+iftwKkg+YEwadZdO6I6tmSUy/R/Qv6y2msw=="
}
[info] CPU 66.9% | Mem 1.0GiB

[run 2/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199647,
  "bytes": 17768583,
  "achieved_rate": 9980.87,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9981,
  "bytes_per_sec": 888297.31,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 51, "mean": 125.4, "stdev": 672.8, "max": 38207,
    "p50": 88, "p75": 122, "p90": 134, "p99": 226, "p99_9": 5306, "p99_99": 34512
  },
  "status_codes": { "1xx": 0, "2xx": 199647, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABV54nDVVXYhVVRTeZ+219znn3nPvnTt3rt6fmXFmHH+HaVKbRGQyI0zNSKQQ7MEK7LF66slgKrEeQmSMHoVCZIgIEZGIEJESCRERGSRCehARH0JE5sEH6VtrHb2ec/bP2t/61lrfXjN87FTLufyws3++/CY6OfW12/HIFo4wDwzv/ejoxeR2cpW+5HPhn/y3gX+HFzY+fenmzm/2fLdn6Y3Lry/OnZ29NnN16v70mdnrcyd3H3/r5P4HB+bfvfXOvb3XXru17cfNd6eurPt9zfHJZ2NXhr/vL/Qv9Z/0l3q/dhf7j3t3Oovt063rzfMDy40HjTuNG/X79eXaheKv6uXKzcr94nbjRPtZb3Hy4fqHGy5N/bLxb2Atrfljcn7i0dh/I8v9C5177WNDS82fmicb14uF6nx+Pn0az4RlvsuX+Ym/6B/SOTpLj5MbydXkbnImuZIsJqeTheTn5LOF5ETybfLxh0c/3T+fHDh06P39u/fteuXVXfs273rx5RfG1k6uHRubWDExOtGbWLt+RWe4M9rr1QeHOp2h0eHRYmioKHqdwaIYHRgaWNGrDA4Wg5V6pVcv6gOVLMuK2GGqZ/gfi6LIIjlmpowdE1NkFyMROYypQi5ydBkRNgs8sIwRRjDwmdg4GeGcrLAd4gzLFYezApwxyxcbOQX8PGeYA1/cOfIyYh+pIS51IvZRXHg4g2scAhwsGQ9sGKZ4BxZvqXgHiBczBfVGHoYpxswpKFENhk6sgrDCF9g6ckKYXAYGyk+MXQz6CAzmPoo5oFKqkh7BoSBcovAJwsYrmPAW9zLwkWu2LiTVJ2w5qIGwqAkHCYf1qL3dc/umgmaSHmrCszO6pHGw+mdBjI5y21InCKLGXjNukQYLG8Yxxpb4k3L7KDw8jopnCkCp6oLmrkxS1QqR6wairFqwmoASOSBGFnQSn0HpIbAy/y3OFdKsFUSCtaVUayZPjhphGlQDGrCk2tKF4CX0FCygxCD4wQJWKZDlzBtpSYiIIeB4MI5sBUCkxkMlxJptIR1Rb1VMTlxVwEBtq1rDPt60WqZAyophLPNgJcmVMT5VxX2+g3jgv6rZCoSDKUuWyzJK4VSSlGk6hURqGqYyLq1wWWYpf9Qk2J2JEqOlGllJBQwoOSDic41LmGKb6q1Ky1WIg0wqrqykcDNSkhq54xhUhVwmImWlrMT1ouUWpMRrp0v5eiuq3S0NwCsWYIQja39A/TkqA5YLpfFKqVOGIKN2Gdbk5qqhoLjOZpZZXXR2w9gV0juMs+SRzIu0LG1lVg5rNKrJTOOH/KV3OLnc0reiXHJFjQIVzQHEyxKRohuwhMGWJG/NzuSnFxA1kEZperFOZinxpZZZKqN61P5h8QS9X7kKXntDTaKtWhOo6bWidWYthRS9wrqqpZbTLQi1allXUdNKrV2L9ELLua4AjpgkcV1N5FaoHGJv4t3UMw2S3dQCGJcGgEmXm9j2NI6nqcLwOCSHuyp8z2sw78JhwF4oO9EqrLRJ+mVLq7uBPlclIiDahp1V1AeanBOLptq2QWATSScg2MifihH8MOvSarI/D6LHhhLrq95QhRwLudyDBuyw1aedmLcwmqXD8PYBbcBsRnP0Hky+SGgLHcFkBoYQ9XblvoW3Ytnx20AKtANnPXyv1OLlIo5ZmsNgRsh8lWjJfkikSW9CKG/ifVBTtBql2oHVcbVoa4IO4t3VVAqYpGka82mNgraCdh9vYI7jt0Ub3Tr6BGMC0hH6k+BUyjIFqxGQaOGw05w5RNYGse3KeA5ZBmAfpyXt47qtCllpMTStAavatFKBV6kakTslGrS3TmP+P2dsoI8="
}
[info] CPU 64.5% | Mem 1.3GiB

[run 3/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199686,
  "bytes": 17772054,
  "achieved_rate": 9982.90,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9983,
  "bytes_per_sec": 888478.02,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 50, "mean": 115.1, "stdev": 443.4, "max": 32095,
    "p50": 87, "p75": 117, "p90": 131, "p99": 236, "p99_9": 2943, "p99_99": 25960
  },
  "status_codes": { "1xx": 0, "2xx": 199686, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABRR4nE1UTWhcVRS+79zz7nszb/4ymZlOJj9NIklMalNjo6Xkj2I02BDUaqPb4kbcCG504WIsoe5CoEVKKCGUIBhExVVxUaSUIFmEIlqyCCErkVKKSCgSuvA7574JnTfz5t7z+53vnHu7lq63G5MpG/+x6X+gm+tfm5l/vOAj5rgxOPvZzWAn+Jme0Zr9I1xO/qvuDayeO5rdXNiev7Ww9ebh5E9ja6fuD9548eGZu+f355beW1m8trj0/sGlrXf23mpONcdvje6M7I3sDu8MHQ00+/Z77/bu9T7p2ex+2vlD57P6dnWlvFHaLq4UdwvLhe8LV4vXClcLm7lvcveS3WSjsNHW7Phl4GB4eXRz7MnLt0+vD632N3vW67/V7lR/rTSrv7c/Kq0U7+UfJ3/FzeiB2wgf8R0+so/tuj2kh/QtbdEq3cf7Nq3RDTxN+jfYD/4ODoMDvNexfxrsBjeD1eCLjydfm1788pOLFy9Nj4+OT85Ofjj9yshLjfpopdEol/srg13ZcqUr11vpqdXKjVx/udzTU6qXISnUKqVcOVdq1Cv1Ulc9ruUqtWwhmyuXKjlXKmULuZg565yLYzYudrHJlpzjmArMOTLEhog4xoN/GIkgxMaQYZeliFlWDEFsmPDEDmZsCcHEXf0hEpUhS/LVkMaJDcSWMuIPE+KQxI5TE0lFDkFIPlbRwER+TtKKTrJbSWJjecE3FG9NhYVodMeh44j8DrlZYTiSDNZjgk5cBSegxEZSSEpJLBkBU3ZajwCFATsKuZVOgmXII8LW+4m5rEL182UJzFByWY5iyUWKnLyRfc7Ao9PKNXDkQ7tIOHIs6ZQPZdX6+qw6ey/QBTsrkZW9CIuMshl6dCElDPpYQwn1ykQeztoNpjhE0kjaRZFDYBhLePKkiY/1EyBTYVTjwVotJJK39WVbTz0745RkZI2w0j5ZnQ4NKST70NI1A4CC1Cq5wC1AVJsl0nq9teVEuyhRJLxwKZUR6g1b2X3zFA5c49ZQaYd01kSuw6Q7Pw2SDq6h09qsHzwpkaWrsGaFo5RzxJ4Ao5z4UfCDJRx6Jli/1GosC1MZsbUpTEq00QjtnBwwL0pHV7GpcdHHB/2cTjvpmZJsrER5oKo1rSkT8pQR1SBcXuC0Zl8KTU+EH2o5Y85j0wq1By3a/BBgPvh42abROO0Z61iaNK1OhPr5Q6MpQk0Y6ThGcoFYJdwpudAX1TTU0+Tng467CPhJGiTRFlBV2UHa+Bi+YtDwibN4JJa3SY9biyeZTSpKhSrxkDK+NccXik0tPfHCjfZTD2169kXjBJPTUTouGIcHYByWkRLPz99PzvOqcpcOTUqxTDEIZBNbhBV8GEJfoJ4abatL7xf2sxZKB6SCRGclPfLm+PaV4vNiLs3D60RaX0Y1kT8hQ6g+DxFnuOo7ZzSI0bMYiXURj2iKSPSCpjPogXR0Cq5F30Eag3FR8ulRGqJueGZS2wFoInpX93m6TNSedvoDvZJkPUav4r8Tv7NwOIXfWbqCXR9SEs3DrhuyNr24Qnod+xBRIugzsG6DVSfe3XQGcSKagSzBbxjSCVi0I9M52H6OiAOwOUk/BvQpklqoOvBcRuAJMHQCDm8opHa8E+CeUYsE6AkJ3gaIk7CeQpILIhiDSoQXgGsA6wn609EwDwOigdoCTh6J55WJdpqj85DO6X3bRwt0Wpm0kElXpmDxXUDSqghLlHMFyw6U8VVA/wNAsZzU"
}
[info] CPU 61.4% | Mem 1.3GiB
[info] run 3 wins on score

=== Best: 9983 req/s (CPU: 61.4%, Mem: 1.3GiB) ===
[info] exact CPU: 12.86 core-seconds | 64.384 us/req
=== Fixed-rate: cpu/req 64.38us | p99 236.0us | p99.9 2943.0us | rate_ratio 0.9983 ===
[info] saved results/latency-10k/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] skip: ktor-kronos does not subscribe to latency-500k-8cpu

==============================================
=== ktor-kronos / async / 32000c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   86.21ms   67.40ms   142.50ms   329.30ms   536.00ms

  3708778 requests in 10.00s, 3676778 responses
  Throughput: 367.61K req/s
  Bandwidth:  23.14MB/s
  Status codes: 2xx=3676778, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3676778 / 3676778 responses (100.0%)
[info] CPU 3807.1% | Mem 2.4GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   108.16ms   76.60ms   232.80ms   339.70ms   355.70ms

  2932140 requests in 10.00s, 2900140 responses
  Throughput: 289.96K req/s
  Bandwidth:  18.25MB/s
  Status codes: 2xx=2900140, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2900140 / 2900140 responses (100.0%)
[info] CPU 3402.1% | Mem 2.5GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   117.22ms   79.50ms   307.60ms   336.60ms   354.40ms

  2706050 requests in 10.00s, 2674050 responses
  Throughput: 267.35K req/s
  Bandwidth:  16.83MB/s
  Status codes: 2xx=2674050, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2674050 / 2674050 responses (100.0%)
[info] CPU 2834.5% | Mem 2.4GiB

=== Best: 367677 req/s (CPU: 3807.1%, Mem: 2.4GiB) ===
[info] input BW: 16.83MB/s (avg template: 48 bytes)
[info] saved results/async/32000/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/ktor-kronos.json - 12 new, 12 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

…objects down to 59) and a GC heap floor of 64 MiB per reactor
@MDA2AV

MDA2AV commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

/benchmark -t baseline

@github-actions

Copy link
Copy Markdown
Contributor

👋 Benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ktor-kronos | Test: baseline

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 4096 1,687,042 6495.8% 5.0GiB ~0% ~0%

Composite score, main against this run, in the board's default view:

Family main this run Δ
HTTP/1.1 - 1268.3 (#22 of 23) -
WebSocket - 18.3 (#15 of 15) -

The results on main were measured in another session, so a few points up or down can be the machine and not the change.

Full log

#2 [internal] load metadata for docker.io/library/debian:bookworm-slim
#2 DONE 0.0s

#3 [internal] load metadata for docker.io/library/gradle:9.8.2-jdk25
#3 DONE 0.7s

#4 [internal] load .dockerignore
#4 transferring context: 65B done
#4 DONE 0.0s

#5 [internal] load build context
#5 DONE 0.0s

#6 [fetch 1/4] FROM docker.io/library/gradle:9.8.2-jdk25@sha256:e46e15353757ef9c9be0197a243653e88d25ebcd4c3c841057cf839c11fcf898
#6 resolve docker.io/library/gradle:9.8.2-jdk25@sha256:e46e15353757ef9c9be0197a243653e88d25ebcd4c3c841057cf839c11fcf898 0.1s done
#6 DONE 0.1s

#7 [fetch 2/4] WORKDIR /src
#7 CACHED

#8 [stage-4 1/3] FROM docker.io/library/debian:bookworm-slim@sha256:4724b8cc51e33e398f0e2e15e18d5ec2851ff0c2280647e1310bc1642182655d
#8 resolve docker.io/library/debian:bookworm-slim@sha256:4724b8cc51e33e398f0e2e15e18d5ec2851ff0c2280647e1310bc1642182655d 0.1s done
#8 DONE 0.1s

#5 [internal] load build context
#5 transferring context: 7.33kB done
#5 DONE 0.0s

#9 [fetch 3/4] RUN git init -q kron && cd kron  && git remote add origin https://github.com/MDA2AV/kron.git  && git fetch -q --depth 1 origin "ec56ef3f0523f95f54f121bbfcb4ecbcb5bb392e"  && git checkout -q FETCH_HEAD  && rm -rf .git
#9 DONE 3.0s

#10 [fetch 4/4] RUN git init -q ktor && cd ktor  && git remote add origin https://github.com/MDA2AV/ktor.git  && git fetch -q --depth 1 origin "3ec29a1868a93936301ba90f3bc271a8af569c2d"  && git checkout -q FETCH_HEAD  && rm -rf .git
#10 DONE 7.7s

#11 [ktor 1/1] COPY --from=fetch /src/ktor /
#11 DONE 0.6s

#12 [kron 1/1] COPY --from=fetch /src/kron /
#12 CACHED

#13 [build 2/8] COPY --from=kron / /kron
#13 CACHED

#14 [build 3/8] WORKDIR /kron
#14 CACHED

#15 [build 4/8] RUN gradle --no-daemon -q -PkotlinVersion=2.3.21 :kron:publishToMavenLocal :glyph11:publishToMavenLocal
#15 CACHED

#16 [build 5/8] COPY --from=ktor / /ktor
#16 DONE 0.8s

#17 [build 6/8] COPY app /ktor/httparena-ktor-kronos
#17 DONE 0.2s

#18 [build 7/8] WORKDIR /ktor
#18 DONE 0.1s

#19 [build 8/8] RUN echo 'include(":httparena-ktor-kronos")' >> settings.gradle.kts  && ./gradlew --no-daemon -q -Pktor.develocity.skipBuildScans=true :httparena-ktor-kronos:linkReleaseExecutableLinuxX64
#19 111.1 Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed only on the first run of the compiler.
#19 111.1 Downloading dependency https://download.jetbrains.com/kotlin/native/target-sysroot-1-android_ndk.tar.gz to /root/.konan/dependencies/cache/target-sysroot-1-android_ndk.tar.gz
#19 112.5 Done.
#19 112.5 Extracting dependency: /root/.konan/dependencies/cache/target-sysroot-1-android_ndk.tar.gz into /root/.konan/dependencies
#19 115.1 Downloading dependency https://download.jetbrains.com/kotlin/native/target-toolchain-2-linux-android_ndk.tar.gz to /root/.konan/dependencies/cache/target-toolchain-2-linux-android_ndk.tar.gz
#19 119.4 Done.
#19 119.4 Extracting dependency: /root/.konan/dependencies/cache/target-toolchain-2-linux-android_ndk.tar.gz into /root/.konan/dependencies
#19 127.7 Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed only on the first run of the compiler.
#19 127.7 Downloading dependency https://download.jetbrains.com/kotlin/native/msys2-mingw-w64-x86_64-2.tar.gz to /root/.konan/dependencies/cache/msys2-mingw-w64-x86_64-2.tar.gz
#19 129.0 Done.
#19 129.0 Extracting dependency: /root/.konan/dependencies/cache/msys2-mingw-w64-x86_64-2.tar.gz into /root/.konan/dependencies
#19 142.9 w: file:///ktor/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt:114:12 [DEPRECATION] 'fun String(bytes: ByteArray, offset: Int = ..., length: Int = ..., charset: Charset = ...): String' is deprecated. Use decodeToString instead.
#19 147.6 w: file:///ktor/ktor-utils/common/src/io/ktor/util/pipeline/StackTraceRecover.kt:16:35 [ERROR_SUPPRESSION] Suppression of error 'INVISIBLE_REFERENCE' might compile and work, but the compiler behavior is UNSPECIFIED and WILL NOT BE PRESERVED. Please report your use case to the Kotlin issue tracker instead: https://kotl.in/issue
#19 147.7 w: file:///ktor/ktor-utils/posix/src/io/ktor/util/StackFramesNative.kt:15:11 [ERROR_SUPPRESSION] Suppression of error 'ACTUAL_WITHOUT_EXPECT' might compile and work, but the compiler behavior is UNSPECIFIED and WILL NOT BE PRESERVED. Please report your use case to the Kotlin issue tracker instead: https://kotl.in/issue
#19 147.7 w: file:///ktor/ktor-utils/posix/src/io/ktor/util/ThreadInfo.kt:15:2 [DEPRECATION] 'annotation class EagerInitialization : Annotation' is deprecated. This annotation is a temporal migration assistance and may be removed in the future releases, please consider filing an issue about the case where it is needed.
#19 150.7 w: file:///ktor/ktor-http/common/src/io/ktor/http/content/Versions.kt:154:27 [ERROR_SUPPRESSION] Suppression of error 'CONFLICTING_OVERLOADS' might compile and work, but the compiler behavior is UNSPECIFIED and WILL NOT BE PRESERVED. Please report your use case to the Kotlin issue tracker instead: https://kotl.in/issue
#19 151.7 w: file:///ktor/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/DefaultWebSocketSession.kt:311:53 [DEPRECATION] 'static enum entry CLOSED_ABNORMALLY: CloseReason.Codes' is deprecated. This code MUST NOT be set as a status code in a Close control frame by an endpoint.
#19 151.7 w: file:///ktor/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/DefaultWebSocketSession.kt:366:56 [DEPRECATION] 'static enum entry CLOSED_ABNORMALLY: CloseReason.Codes' is deprecated. This code MUST NOT be set as a status code in a Close control frame by an endpoint.
#19 151.7 w: file:///ktor/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/RawWebSocketCommon.kt:61:97 [OPT_IN_USAGE] This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
#19 151.7 w: file:///ktor/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/RawWebSocketCommon.kt:98:67 [OPT_IN_USAGE] This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.
#19 154.7 w: file:///ktor/ktor-server/ktor-server-core/common/src/io/ktor/server/application/PipelineCall.kt:136:37 [OVERRIDE_DEPRECATION] This declaration overrides a deprecated member but is not marked as deprecated itself. Add the '@Deprecated' annotation or suppress the diagnostic.
#19 154.7 w: file:///ktor/ktor-server/ktor-server-core/common/src/io/ktor/server/plugins/OriginConnectionPoint.kt:21:39 [DEPRECATION] 'val MutableOriginConnectionPointKey: AttributeKey<MutableOriginConnectionPoint>' is deprecated. This API will be redesigned as per https://youtrack.jetbrains.com/issue/KTOR-2657.
#19 154.7 w: file:///ktor/ktor-server/ktor-server-core/common/src/io/ktor/server/plugins/OriginConnectionPoint.kt:141:40 [DEPRECATION] 'val MutableOriginConnectionPointKey: AttributeKey<MutableOriginConnectionPoint>' is deprecated. This API will be redesigned as per https://youtrack.jetbrains.com/issue/KTOR-2657.
#19 DONE 211.2s

#20 [stage-4 2/3] WORKDIR /app
#20 CACHED

#21 [stage-4 3/3] COPY --from=build /ktor/httparena-ktor-kronos/build/bin/linuxX64/releaseExecutable/ktor-kronos.kexe ./ktor-kronos
#21 DONE 0.1s

#22 exporting to image
#22 exporting layers
#22 exporting layers 0.4s done
#22 exporting manifest sha256:d51791892fd9a0f3a9347e1354ab30b528e62d40ceef97f3f1b99eebb4e6ce5d 0.0s done
#22 exporting config sha256:8855e064e4c870fbe3a4132e3076c56a3f7f54bcf40cb43f3b2472a0c0f52ab8 0.0s done
#22 exporting attestation manifest sha256:d55c5499d4c4a0703fd3d978cc0944b1150f6eee55be3597cca4f37758355478 0.0s done
#22 exporting manifest list sha256:b6eb6fd88e018c4853bf80402e072fc24f610f7547df666b7607e1e6b7c6f62f
#22 exporting manifest list sha256:b6eb6fd88e018c4853bf80402e072fc24f610f7547df666b7607e1e6b7c6f62f 0.0s done
#22 naming to docker.io/library/httparena-ktor-kronos:latest done
#22 unpacking to docker.io/library/httparena-ktor-kronos:latest 0.0s done
#22 DONE 0.7s
[info] zrk: docker mode (zrk:local)
[info] tuning host for benchmark runs
[info] CPU governor → performance
[info] setting kernel socket limits
[info] setting UDP buffer sizes for QUIC
[info] setting loopback MTU to 1500 (realistic Ethernet)
[info] restarting docker daemon
[info] dropping kernel caches

==============================================
=== ktor-kronos / baseline / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Templates: 3
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   3.86ms   2.00ms   5.74ms   39.10ms   99.00ms

  5327585 requests in 5.00s, 5327585 responses
  Throughput: 1.07M req/s
  Bandwidth:  67.05MB/s
  Status codes: 2xx=5327585, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5327585 / 5327585 responses (100.0%)
  Per-template: 1778519,1777376,1771690
  Per-template-ok: 1778519,1777376,1771690
[info] CPU 4343.2% | Mem 5.0GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Templates: 3
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   2.43ms   1.99ms   2.35ms   15.70ms   44.60ms

  8435466 requests in 5.00s, 8435210 responses
  Throughput: 1.69M req/s
  Bandwidth:  106.16MB/s
  Status codes: 2xx=8435210, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 8435158 / 8435210 responses (100.0%)
  Per-template: 2811533,2806226,2817399
  Per-template-ok: 2811533,2806226,2817399
[info] CPU 6495.8% | Mem 5.0GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     4096 (64/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Templates: 3
  Expected:  200
  Duration:  5s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   2.47ms   1.98ms   2.40ms   32.90ms   46.20ms

  8328857 requests in 5.00s, 8328857 responses
  Throughput: 1.67M req/s
  Bandwidth:  104.81MB/s
  Status codes: 2xx=8328857, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 8328857 / 8328857 responses (100.0%)
  Per-template: 2783512,2775243,2770102
  Per-template-ok: 2783512,2775243,2770102
[info] CPU 6258.7% | Mem 5.0GiB

=== Best: 1687042 req/s (CPU: 6495.8%, Mem: 5.0GiB) ===
[info] input BW: 130.32MB/s (avg template: 81 bytes)
[info] saved results/baseline/4096/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/ktor-kronos.json - 1 new, 12 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

…ontentNegotiation on /json, /echo, and HTTPS on :8081 through the engine's TLS connector (kernel TX where the host has the tls module)
@MDA2AV

MDA2AV commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

/benchmark --save

@github-actions

Copy link
Copy Markdown
Contributor

👋 Benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ktor-kronos | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 1,698,084 — — — — 6538.6% 5.0GiB ~0% ~0%
pipelined 4096 4,986,544 — — — — 6256.2% 4.9GiB ~0% ~0%
limited-conn 4096 1,494,223 — — — — 6472.1% 5.0GiB ~0% ~0%
json-comp 4096 33,881 — — — — 2590.5% 5.2GiB ~0% ~0%
json-comp 16384 31,826 — — — — 2447.3% 5.4GiB ~0% ~0%
json-tls 4096 90,275 — — — — 2254.2% 5.2GiB ~0% ~0%
8gbit 512 49,110 0.9822 96.29us 17928.0us 57968.0us 358.0% 6.4GiB ~0% ~0%
echo-ws 512 1,003,849 — — — — 6208.4% 5.0GiB ~0% ~0%
echo-ws 4096 935,407 — — — — 5843.7% 5.1GiB ~0% ~0%
echo-ws 16384 487,310 — — — — 5316.5% 5.6GiB ~0% ~0%
echo-ws-pipeline 512 1,030,616 — — — — 6125.9% 5.1GiB ~0% ~0%
echo-ws-pipeline 4096 957,280 — — — — 6108.6% 5.1GiB ~0% ~0%
echo-ws-pipeline 16384 473,405 — — — — 3825.6% 5.8GiB ~0% ~0%
latency-1m 1024 997,522 0.9975 37.14us 37488.0us 49680.0us 4033.1% 4.9GiB ~0% ~0%
latency-10k 1024 9,979 0.9979 48.27us 140.0us 11244.0us 46.9% 1.6GiB ~0% ~0%
async 32000 780,515 — — — — 6297.8% 5.2GiB ~0% ~0%

Composite score, main against this run, in the board's default view:

Family main this run Δ
HTTP/1.1 - 2605.1 (#20 of 23) -
WebSocket - 203.4 (#15 of 15) -

The results on main were measured in another session, so a few points up or down can be the machine and not the change.

Full log
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 1000000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.005,
  "requests": 19955012,
  "bytes": 1775996068,
  "achieved_rate": 997522.26,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.9975,
  "bytes_per_sec": 88779481.38,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 62803,
  "latency_us": {
    "min": 36, "mean": 1970.6, "stdev": 7000.3, "max": 63839,
    "p50": 110, "p75": 139, "p90": 213, "p99": 37488, "p99_9": 49680, "p99_99": 55952
  },
  "status_codes": { "1xx": 0, "2xx": 19955012, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 4033.1% | Mem 4.9GiB
[info] run 3 wins on score

=== Best: 997522 req/s (CPU: 4033.1%, Mem: 4.9GiB) ===
[info] exact CPU: 741.09 core-seconds | 37.138 us/req
=== Fixed-rate: cpu/req 37.14us | p99 37488.0us | p99.9 49680.0us | rate_ratio 0.9975 ===
[info] saved results/latency-1m/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos

==============================================
=== ktor-kronos / latency-10k / 1024c (tool=zrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199640,
  "bytes": 17767960,
  "achieved_rate": 9980.56,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9981,
  "bytes_per_sec": 888270.28,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 44, "mean": 121.5, "stdev": 984.1, "max": 65439,
    "p50": 78, "p75": 104, "p90": 119, "p99": 159, "p99_9": 13596, "p99_99": 38640
  },
  "status_codes": { "1xx": 0, "2xx": 199640, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAA7N4nD1TW2gcZRSeOXNmZmcnk92d2dnZS3YnabrNJtnm0lrT0NZoaC1VQVuUoogXkCqI4A2tvrQEqaViKLaEEqRoEV/Mgw8lipQgEoIELy8iIYoUH0oQvOBDH2IIfuesuMs/c875v/8753znn563LkWGYadG52f99zbVufS2MfVXJ3CSug+/ds38zVyjq7RCP9AC33BW/Vvxd/0rE+tH5x/YODZ3363pXyd/HlkePDs0s+/ivUuP/v384ssbL2w+9+WTnx7fmJ69c3FkfuiL1nrrg8HlgT92nu+7Xf+8cb5/ofdCbb26VFlL3gu/yn+cv5HfDrcKV8L13IXu+a5tfy6YKczFm+lC+8f2zbGNkV/aV9uzzSvpudp8eTb5qHS2vBJvRwv55WDV/9rfyqy6i851e5PP8W1rydqim/QNraHyFfO6edk8dfrNU09dNGfM0y8+9sxDj79vvnr44en9Y62xamNnb7XUru6olhvFdrXUlS+HYaPRXdzVU67e0bPn4P6DJ564+8Suu/a0WjuGWqXeYqknDIthtshhFzvZbNYh7so67DicyThExOSwQWI4BN8iOMxsAGcwk4FNg2wmMhy22cabMkbGclwBko8D2A2Ivc5ZWQYFXKCUPAqoD08XTwOrH5ZHu/Ev0D7s1ShHo+zDPo5IghOPYP97E8CIYoUeolG8j8ArIOYrYUrjsM5o7hxV6HWahJeCvIkVYR2jAarwAZoCU42HydZSfHoQJ47C6xRpId2zSO3TBNFJ2osKfN30uYJ0AQ6hAleZXeQRlhqeqTZoA5CDXSFRQmprUl3tJiUQzUUkAmUOJ+pY45QiOg5iyVznDtZFZ75ifPxrfASxFJaLTC7QAZaL/QBRzGKKoAgKRBdaoYFGPSwDR2OkE9IBlQV9sMglJUSKm0QU27bMbRhcORmd1I35TajUT4v2Z8AtddE99K4JgoTeMZGjDyIlKsco7DrY+lTUAn1mIhRTzK+A5oCGRN2YkBPkELGCZmSgH5pIMUwR368aTKJE5NkrEBK8Dc4aAD+Z9IlJ35qYH2hxNFX1E2AsVcpAjgp0tlkuVwJP27LhDBIqsKTDul6HQU3lw6OX5ATMit4SS1CxzlxV8NCgB3CiNiZMTUgks3EZSJ8DuFHn++hI7CGvuJ5OOVIfUcBiHU2gE0bKnFJ6Su1qnba2IMMoyAflSi1y7yRqq3wK+x/ryRNlGCxnRASZOebLkki6K+ioaqzq70bKnH5BOfqd6R+iP016g/4FHSqdBQ=="
}
[info] CPU 50.7% | Mem 1.3GiB

[run 2/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.007,
  "requests": 199646,
  "bytes": 17768494,
  "achieved_rate": 9979.03,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9979,
  "bytes_per_sec": 888133.29,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 41, "mean": 109.0, "stdev": 686.0, "max": 39583,
    "p50": 76, "p75": 106, "p90": 117, "p99": 140, "p99_9": 11244, "p99_99": 31688
  },
  "status_codes": { "1xx": 0, "2xx": 199646, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAzx4nDVSTUhUURR+99w772fezHvOTOM4jmbTzOBfJmNoRIIlFFkLGSWNWkmrimjRQlwUIkYmIpFWiyzsB7FwYRaDhAwRrlqJgUhEiIhIGIS4cCHRd+9Mc+e++853zj3fd855ZYNjIU0Tt7X8jxdOpoyx+1rLnzyQEYeTdxfZFntFU/wL3+LzYtGz63tycLgx17rQ/r1jqGMl039uszmbXq7bbxg+Nd2Z635xefDSYmazfeHsSPNG+md6vW6gdrYmWzWUWjq0U7YWXSnJxT6XLhevRlZLNouHQoOBh+6as+jknFVnwR13tn179q7vXfhr/FfV5yP76emGXNNc0+TR7eq95GziUaI/mY3PVayVLkUmQtlgf9G8f9T+ZE2Zf41JY1jf8MyIHzzL3/AJnqNxGqB1tsM+shk2zEbYKLve1dHR3HS+taupuSFZU1IWLC4qDQaTjlPqLXOKhOl1vF6v7hXC1DVdN01f0YGg6ZhB4SvWHa8vGDR9uimELoRwcBLpJnES5BE48New5C8gNDKEhifXARuAXbLJohhpIkzkxzIoIk1qI+AalVMlInuVo48SODnWNUpRnJ4zukEZukJvGfAQsJtUB1xmfM0A9OK6SxephToJrxa8jxmdwFFN7xmInjK6R3QGadrgDxCiDWqnWkDQCCus0rWRB4gLXT2Q8IBA6qcoCDRs3EoD+MCIKsBUQd1whUFmI97FTVeGxAmZA8isbGHL6oCAJKJocOc0/WZ0DLX10HFUosn6MgAqEeqnqygvhdt+pDLIEvL9DoHERuQFqI/KXkvVcHDo8svkftV9D5iN/CD4/3HITGE84zAMhOM1gi0nUo5TRPOIpdxcdc+Cr0JVLWULD6l4JEYqyZmnicKyC5O1ZYgts0eE1BRTGeUufBOGCKEWGWWpZB6VyIaysFCmrRrmIjSGobmqLg7RErWUOjl3DuZqPKNKg2x9o5qRB4iBcWvYqnRD9p2r8RiSUuT7IS1bxHG3XliFj9UW+ebBJZVxITV7uRqnZMUMuWwJPlwD4ElYGexvjJ4x0N6il0wpt1SLo1gRjDiFLVufICUipkqsJOjj+Ixk6Qa89bLcFHYARh/9A5QykM8="
}
[info] CPU 46.9% | Mem 1.6GiB

[run 3/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199640,
  "bytes": 17767960,
  "achieved_rate": 9980.65,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9981,
  "bytes_per_sec": 888278.14,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 40, "mean": 110.2, "stdev": 690.2, "max": 37823,
    "p50": 76, "p75": 107, "p90": 114, "p99": 139, "p99_9": 11020, "p99_99": 25848
  },
  "status_codes": { "1xx": 0, "2xx": 199640, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAA1F4nC1TS2gTURR9c+ZNJpNkMo3TNDWTNE0/2ipqi4j0o7V+EG21tiLVlYooiD8ERQXxA0VdiAp1EcSFSBXJoojoRkSkiBtFRMWFFBGRYkVKF0WwlOJ5L3kv03fffefee+6nmaFhXwj5QJSWWT4NfRm+KrqmS4o+IN6w444xYxQwb4zgIe6bH6zx8FDVq9Ziz7Wdzwd+9z/tvdJVaL3bNNc03v5o58SB4tE/x2b3vh94v+lb+9zykcbp/FTtr/rZuhu1PzJv0mPVf1PvMsXszML51ETyXuXfRCFedO+69+Kj8RfeZ68Q+xK5FL0ef5G80XS9+/HWl70ft4/0zm782fF8+e2GmezXYKzmSe18rpB5V1Ws/OBNxUad6dCUNSevydfmqPmUexRjKOK7MW7cMq5wnz106viF87uHjN2H9q1rX9vS0lmdWZJZVFe3pKWpMl5dVbO+M51eVBGOhCIypJYEwrFwOBavTsfTFRWxGCoWRBZUxmIRrhCgPsmFEIQMgXBA8BcSsKQFCybfeUCLAmYZYcKFAwXQuoBXW0Gkz6cEVvIRKYo2FiIPJGSegkAgAyotLOWDx7MRy4jOEp3kZyMro0hKgVU4wttqYvJ8P6wtopTqJXIEOjTM64DENWMbhWb4VOcY9KbB60W8NchqCzbjHLlNApMG9qMfbcoLWmUjT5uM8hjUp0fbxdwJYBM2IMVEAu4VNE4yNKmTpsezmVQGdS3IfanORqCDTx7jJwhlotT1Yw8/gX+gyqXOZKgD/NStgz4FqWV5y/E8ScmH5hDFLobyuS/SC9m4jJiSCdqbdGlzBzhNP5cN0lRFaMOgVLV0WRSfkkvXKh9bk3RUvxIspa+b5JU6BulqXFT3LdAqTyq7KPuu8gAcaUqVuKBeVUhVO5CyZK+gmlIeZ5QNSR6k3EV/K/jkUpfSPe5nDwKdps+6p4h0NDOHlGz08N6jszB1BhaRalMlyvPll+KI0gRGJdXNkCb/KFqQtiowLRyomdUjp8gl1ViaalRVPqI01jp5R2p3UmqXQjfX0q01y5OQ10zKNjnIEsbV3L0yyoIdchTAwRoVx+PMaka+VP8ZUQ1PavetbOUJ3tvQjT5qD7Mknwy2XFXJLjN8ZhD9H5CskQM="
}
[info] CPU 45.6% | Mem 1.6GiB
[info] run 2 wins on score

=== Best: 9979 req/s (CPU: 46.9%, Mem: 1.6GiB) ===
[info] exact CPU: 9.64 core-seconds | 48.272 us/req
=== Fixed-rate: cpu/req 48.27us | p99 140.0us | p99.9 11244.0us | rate_ratio 0.9979 ===
[info] saved results/latency-10k/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] skip: ktor-kronos does not subscribe to latency-500k-8cpu

==============================================
=== ktor-kronos / async / 32000c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   48.18ms   38.90ms   76.00ms   158.50ms   415.90ms

  6612016 requests in 10.00s, 6580016 responses
  Throughput: 657.89K req/s
  Bandwidth:  41.41MB/s
  Status codes: 2xx=6580016, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6580016 / 6580016 responses (100.0%)
[info] CPU 5081.3% | Mem 5.2GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   40.65ms   37.70ms   49.20ms   93.80ms   115.00ms

  7833355 requests in 10.00s, 7801355 responses
  Throughput: 779.99K req/s
  Bandwidth:  49.09MB/s
  Status codes: 2xx=7801355, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 7801355 / 7801355 responses (100.0%)
[info] CPU 6370.2% | Mem 5.2GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   40.66ms   37.70ms   49.40ms   92.60ms   116.30ms

  7837155 requests in 10.00s, 7805155 responses
  Throughput: 780.36K req/s
  Bandwidth:  49.12MB/s
  Status codes: 2xx=7805155, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 7805155 / 7805155 responses (100.0%)
[info] CPU 6297.8% | Mem 5.2GiB

=== Best: 780515 req/s (CPU: 6297.8%, Mem: 5.2GiB) ===
[info] input BW: 35.73MB/s (avg template: 48 bytes)
[info] saved results/async/32000/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/ktor-kronos.json - 16 new, 16 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

…n marks each connection's live state with the reactors stopped, so the more connections are held the fewer collections must run
… app on kron's JVM target, reaching io_uring and BoringSSL through FFM, a jar on JDK 25; json-comp dropped, as Ktor has no gzip on Native
…n plugin - JVM-only in Ktor, so the native build installs none and json-comp leaves meta.json for it
@MDA2AV

MDA2AV commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

/benchmark --save

@github-actions

Copy link
Copy Markdown
Contributor

👋 Benchmark request received. A collaborator will review and approve the run.

@MDA2AV MDA2AV changed the title ktor-kronos: Ktor on Kotlin/Native with the kron engine (experimental) ktor-kronos: Ktor on the JVM with the kron engine (experimental) Oct 30, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ktor-kronos | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 1,102,745 — — — — 6420.1% 2.8GiB ~0% ~0%
pipelined 4096 6,260,128 — — — — 6442.5% 6.0GiB ~0% ~0%
limited-conn 4096 2,600,019 — — — — 6055.4% 5.4GiB ~0% ~0%
json-comp 4096 228,064 — — — — 5944.5% 11.0GiB ~0% ~0%
json-comp 16384 66,253 — — — — 6217.4% 7.2GiB ~0% ~0%
json-tls 4096 498,069 — — — — 3243.4% 4.2GiB ~0% ~0%
8gbit 512 49,360 0.9872 54.91us 143.0us 4830.0us 250.5% 4.5GiB ~0% ~0%
echo-ws 512 308,140 — — — — 6333.1% 2.5GiB ~0% ~0%
echo-ws 4096 2,990,383 — — — — 6288.1% 11.9GiB ~0% ~0%
echo-ws 16384 319,165 — — — — 6265.2% 7.3GiB ~0% ~0%
echo-ws-pipeline 512 4,979,363 — — — — 6295.9% 5.6GiB ~0% ~0%
echo-ws-pipeline 4096 5,420,105 — — — — 6440.7% 6.5GiB ~0% ~0%
echo-ws-pipeline 16384 5,070,140 — — — — 6080.7% 10.0GiB ~0% ~0%
latency-1m 1024 997,802 0.9978 24.98us 194.0us 4450.0us 2728.8% 3.4GiB ~0% ~0%
latency-10k 1024 9,982 0.9982 36.73us 118.0us 2969.0us 39.1% 1.6GiB ~0% ~0%
async 32000 637,655 — — — — 6269.2% 8.7GiB ~0% ~0%

Composite score, main against this run, in the board's default view:

Family main this run Δ
HTTP/1.1 - 4342.8 (#15 of 23) -
WebSocket - 366.1 (#15 of 15) -

The results on main were measured in another session, so a few points up or down can be the machine and not the change.

Full log
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 1000000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.004,
  "requests": 19959740,
  "bytes": 1776416860,
  "achieved_rate": 997801.61,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.9978,
  "bytes_per_sec": 88804343.42,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 53834,
  "latency_us": {
    "min": 27, "mean": 108.4, "stdev": 514.3, "max": 54879,
    "p50": 84, "p75": 101, "p90": 121, "p99": 194, "p99_9": 4450, "p99_99": 25688
  },
  "status_codes": { "1xx": 0, "2xx": 19959740, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 2728.8% | Mem 3.4GiB
[info] run 3 wins on score

=== Best: 997802 req/s (CPU: 2728.8%, Mem: 3.4GiB) ===
[info] exact CPU: 498.54 core-seconds | 24.977 us/req
=== Fixed-rate: cpu/req 24.98us | p99 194.0us | p99.9 4450.0us | rate_ratio 0.9978 ===
[info] saved results/latency-1m/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos

==============================================
=== ktor-kronos / latency-10k / 1024c (tool=zrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.006,
  "requests": 199637,
  "bytes": 17767693,
  "achieved_rate": 9978.83,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9979,
  "bytes_per_sec": 888115.73,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 48220,
  "latency_us": {
    "min": 38, "mean": 432.0, "stdev": 4527.9, "max": 150655,
    "p50": 67, "p75": 75, "p90": 84, "p99": 7982, "p99_9": 79392, "p99_99": 121312
  },
  "status_codes": { "1xx": 0, "2xx": 199637, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 95.9% | Mem 1.3GiB

[run 2/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.002,
  "requests": 199672,
  "bytes": 17770808,
  "achieved_rate": 9982.38,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9982,
  "bytes_per_sec": 888431.88,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 33, "mean": 81.7, "stdev": 513.2, "max": 40735,
    "p50": 62, "p75": 71, "p90": 91, "p99": 118, "p99_9": 2969, "p99_99": 25944
  },
  "status_codes": { "1xx": 0, "2xx": 199672, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAwx4nC1STUhUURR+97z73puZN29+fI3TMD2HcZJxEhXTikE0+4EIFJMICSuMCIyCdlGLyCBKJclSQiJFQiSohbQIF7MIERcVIdEiBhFp0cKFyBARItJ3rqPMeed857vnfufcc+DRuKtpsl3b+9PLX6GC8Sfa8a094ATpB8/d+ipWxaYoignaoXW9aCwH5uKlhpc9k/2FS5/6tq4Wr7y6sXh/YliUnoqFETExKgoPRfHe0MDby7u9qz3z3SOdS6d/tE/nCw3L2bXqwapfydn9m/Htfdvum4rfFaXon9BOcCz4wf4XmHE+hjecOXveGYxsRGciPyNbkZnISvhx5HtoPfg6MOT7a34z143PRtHY1Uv6kj6rF+g9FWiBVmhNjIlJceeFmBZ3+08eHTjccaiytrqlKlTb0tlRVVldEYwEgjLkC5nSNEn6pEamBqMT+fzqq8PapBCDyKIofEakn/AlQtpSnoW8LuGrRBJEm/0wRxbwGGVJgh0n0HRkNNlEDsVljGtbwD3YOsBRysm4TOOcbEQug6tsYpbHEnL4dyhNnpkhcuHauMyDtfDL8mWIQY5SE19eQ20qh05w2gCD/Sw8C7kuYkH1KOcQaGnVnksploQrHWqU9ShXA7l1uCSHYw449WoYSWAZsHkoKeolagQQBblZcrOt5EobiIXDUwJ1WxGEcQvLwQGeqR91PFxrUAIId8Dl1MxYLqIE8ZR4fDadVR1wayiQLbfkwLpq6o56qCxr0xTMY0Bxy0TL0oAwV9WNQfURkGxl84hSUObiZIJGBZ2nZwK5BLiIUqA/oD60/lygKLfFL9Wm1iAJFj9BBpL6gNYAm2JaGrCOtMUjk/wUTMqDHgPtAvFcNGpGqTy8JPw0rIHOGQfcChfOsEDTOerGwS7Ymywii5Qfgcfy3gmQe+kayE2wnppkl+reQC1/uWFGDeJtSvOkeKHUpFkpVKvBObyFfh4tthKxR2fUUts8QxapQ0mmvHIxtQ8GHQNmq8eB5ATdxkkL7+7wk7h0kU6hWYzzi46duU7/Afu+hvs="
}
[info] CPU 39.1% | Mem 1.6GiB

[run 3/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.002,
  "requests": 199635,
  "bytes": 17767515,
  "achieved_rate": 9980.62,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9981,
  "bytes_per_sec": 888275.58,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 36, "mean": 88.6, "stdev": 550.5, "max": 43743,
    "p50": 67, "p75": 93, "p90": 101, "p99": 121, "p99_9": 2221, "p99_99": 28952
  },
  "status_codes": { "1xx": 0, "2xx": 199635, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAArt4nC1RTUhUURh997x7fY3j9Byn6TmNguNkNso4mEWIRZSGaJn9Z5bgxkorohDXLcKMrChdiETF9ENJCwspayEWJkERERLiQly0kBZhMEi0iM69dd97c7/v3O8795xvCi4NhCzLvmr9W/b/XZhk4LK1bekfUC+z8zYevPBUvMAEZux7aiR7OTiWGN8zc/h706/aLzt792aOj519cH6ha7pj5MTH9oX9i7Wjmycq+sv7yiYTw+uuF12MDq1Oh9PRhdhS4cSamfxl77Y3G5p3Z1e+9//O6XVHQ58LppLDdVONrxt/NM81fduRqb5TmS6bLP4aWyruK+6Nzxct5s+Fpt10znNfv5NRGfVI/ZFDckR+sufxFhkxK8ZFWgyKrpa6ltbd7af6RHdL96C4JR6LnjM9rVvWbqhYX7AqLzcvV3JhBSxkZVnSZmxLC3pJfhZzafPNshjDYZmlD2wewa83HwIMGUPBQyHzoAwzthGCSyQAnW0lrlBCzCLiN1kTa6KsUKzzwZHXBKoQYUHEtDoI4iQPyVwv6wk5qEQzK6sZ24YrxdIgH4sokEQpEswimk8qog2saQZiQJwdhdgF1Oo4zlst/irpci83Rjx2Kn4Jc30MbWRrIO8VgRsCLwWL/NiEA7QTYbkP+1jsMvMRdynFb5QrXp0kicOHpphrbdpiCZhG6T6EACfkmnnoaRwFOnCMbA55w9xTOI1OYs/AtIo6gyRPUX+cApIs82hDj9/DIWLvBIMEXgme2ajXcnnawRs+CNJ34gnI4JFru5Hl0LHCQ4kBSc67ultrL8URHnj0pUikc0U/cQ5d6b9XSwsR8BtjpcwsM9OEGUxMRohqV2HpgDIDvFL7tsjo0rZii6d1tSEhS1nr4yU+1GhGqb1EyHQT7EsZ+jZqeSNwX5j52qbfeIjJGgI/Bc7hL4zlhl8="
}
[info] CPU 37.5% | Mem 1.6GiB
[info] run 2 wins on score

=== Best: 9982 req/s (CPU: 39.1%, Mem: 1.6GiB) ===
[info] exact CPU: 7.33 core-seconds | 36.728 us/req
=== Fixed-rate: cpu/req 36.73us | p99 118.0us | p99.9 2969.0us | rate_ratio 0.9982 ===
[info] saved results/latency-10k/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] skip: ktor-kronos does not subscribe to latency-500k-8cpu

==============================================
=== ktor-kronos / async / 32000c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   55.90ms   48.30ms   55.10ms   251.60ms   752.20ms

  5696430 requests in 10.00s, 5664430 responses
  Throughput: 566.35K req/s
  Bandwidth:  35.65MB/s
  Status codes: 2xx=5664430, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5664430 / 5664430 responses (100.0%)
[info] CPU 5855.9% | Mem 8.7GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   49.81ms   48.30ms   52.90ms   92.90ms   159.90ms

  6408552 requests in 10.00s, 6376552 responses
  Throughput: 637.54K req/s
  Bandwidth:  40.13MB/s
  Status codes: 2xx=6376552, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6376552 / 6376552 responses (100.0%)
[info] CPU 6269.2% | Mem 8.7GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   50.48ms   48.40ms   53.50ms   102.20ms   181.90ms

  6311059 requests in 10.00s, 6279059 responses
  Throughput: 627.81K req/s
  Bandwidth:  39.52MB/s
  Status codes: 2xx=6279059, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6279059 / 6279059 responses (100.0%)
[info] CPU 6126.4% | Mem 9.0GiB

=== Best: 637655 req/s (CPU: 6269.2%, Mem: 8.7GiB) ===
[info] input BW: 29.19MB/s (avg template: 48 bytes)
[info] saved results/async/32000/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/ktor-kronos.json - 16 new, 16 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

…thread group every 5 s, GC pauses and safepoint times to stdout, which --save keeps per profile
@MDA2AV

MDA2AV commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

/benchmark --save

@github-actions

Copy link
Copy Markdown
Contributor

👋 Benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ktor-kronos | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 2,760,566 — — — — 6223.9% 4.2GiB ~0% ~0%
pipelined 4096 6,497,254 — — — — 6446.4% 6.5GiB ~0% ~0%
limited-conn 4096 1,029,388 — — — — 6307.5% 5.4GiB ~0% ~0%
json-comp 4096 49,400 — — — — 5535.5% 4.4GiB ~0% ~0%
json-comp 16384 45,628 — — — — 5832.8% 9.6GiB ~0% ~0%
json-tls 4096 524,842 — — — — 3391.5% 4.8GiB ~0% ~0%
8gbit 512 49,256 0.9851 56.27us 159.0us 7294.0us 268.6% 3.7GiB ~0% ~0%
echo-ws 512 404,628 — — — — 6368.4% 2.5GiB ~0% ~0%
echo-ws 4096 317,257 — — — — 6215.4% 3.7GiB ~0% ~0%
echo-ws 16384 314,401 — — — — 6177.2% 6.1GiB ~0% ~0%
echo-ws-pipeline 512 6,740,935 — — — — 6307.6% 5.2GiB ~0% ~0%
echo-ws-pipeline 4096 5,377,526 — — — — 6401.9% 5.7GiB ~0% ~0%
echo-ws-pipeline 16384 5,047,040 — — — — 6228.7% 9.0GiB ~0% ~0%
latency-1m 1024 998,504 0.9985 24.86us 194.0us 4053.0us 2729.5% 3.3GiB ~0% ~0%
latency-10k 1024 9,983 0.9983 35.16us 104.0us 5142.0us 38.1% 1.6GiB ~0% ~0%
async 32000 612,576 — — — — 6307.7% 11.2GiB ~0% ~0%

Composite score, main against this run, in the board's default view:

Family main this run Δ
HTTP/1.1 - 4063.3 (#15 of 23) -
WebSocket - 172.7 (#15 of 15) -

The results on main were measured in another session, so a few points up or down can be the machine and not the change.

Full log
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 1000000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.004,
  "requests": 19973833,
  "bytes": 1777671137,
  "achieved_rate": 998503.99,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.9985,
  "bytes_per_sec": 88866855.28,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 43475,
  "latency_us": {
    "min": 27, "mean": 106.6, "stdev": 414.8, "max": 44511,
    "p50": 85, "p75": 102, "p90": 123, "p99": 194, "p99_9": 4053, "p99_99": 18568
  },
  "status_codes": { "1xx": 0, "2xx": 19973833, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAExB4nDVXDWzc5nm+j0dRNM2wNMuyLMveLpebqimq4miq4XmGZxiGYRiZIQiH6+FwOAg3giAIgiAIliAOh8NBEDT1oCmeowme4Hqp4aaekLpClnmt8wPDMwzXzYzANbwi81IvDdosMFIjc1PXSLM9L9WddDzy+3l/nvd53++lvfjC5wsF673C9qf4h1+WP7zw14W/eLA98HVB2RefZcvcjeKNkTs7VncNzfUnX9796qFz37jyzXf+lg3eYB//mp16ibv4P9zmT4or/8y/98bIyZ8Kt34z+vAHOx79r7T1K/nUTeXMT9SH17T3f6y/93Pjk1+YZxa+fOvbX7n3oz+6fv3JG7ef+uXS2PVvjV9YnLj/70+f+eHX7nw4tfarZ6799+7Ll599Zzh9943p1783vbAxfWF1+t7NZ6/9fvfFf9x96+IzVzentl772u3vT14/+fTlx3/yyd3xhatfvXR27N5vqiv/+dTKjyrnv/3k7UH55uPS5rWvfPgD+/o/ffnCmrXx91969Lz56vCLD9aMl05/4fw5/eHW5x/+q3bvnV0bn6qP/kG9d+VzW/+lDJ5Xbl55YuW38qUL8q33d25+d+e770pvviS98ssdV7634/WH4rlr4ssviCu/GD19afTFldHBh8K914StM8LSo5EHPx25/8rIm+sjV37HP/oPfvU1/uEmv/48/9bvioOfF1f+rXj1X4rnv1N8+UTx0W+5zY+4s3e5c29xr7/B3f8+9+AMd2GdG36Lu/979tGv2en32fAuW7zNtn7MPn6TffYqu7TF3v4uW/kOO/V37Poae/A37Ooie9S/2t365uPgvPeRc/qvPm3d+cZS7ZO5G395+9j1I4PDdw4uHhj8+e0/O/H1F/9049m7zwym7jz9aHxjbHHs/FMvVj8o3ynfLW3aQ3vT2vrSKfOW8YHxgb6in9A/2/Vg1+VdH+06p26pS587/8TpJ0498ar86c6tnZek29LdHRelBemxeF9cF8+JN0fPi/dHz4wuja6OXhA+G7km3B75mL/PXxl5k3915DH/Fn+KX+M3+GX+fvF08UrxRnGpeLm4WVwoXiwOiw+5QfEmd5Z7i3ubW+cucne469wN7iq3xS1xm3he5NZwt8oNcR3i9zG7zBa4n7GP2UP2Hu7uspvsFruK7xX2LrvGNtmr7D6+N9nL7GfsInsF619hP2RvY+ZFtsXOsw32Fq5n2SVcT7EL7CW2jOvLbI2dZEuYXcXdJlvA2Co7h++ArWP0NDuBp/4yHi7ki7ZY7xTGLmD3JvadYEPsH7IzkLmO52SRJf3uEluBpJO55PlFXBZZkGyy9grr9cL+Gkt72UmWrmLPIsviNB6yqHuKJckyS5dZHHpvYkuwxNqLLF6HWUOWtgYwCOtWWIAlCywasN4C63X7pH6V9XsD5iVLrD9gWSvJBljRTcP5etRdZGmaLjD6awZhN/J9N/bPstiNun6URUm31o+cXifCXiytO/6ApW4WRGmWwfbI24CJXhIuwKJu4oVxXDvJOl1nnSXdtrvIsM+bH7BwwHw3CRbYbCuJms4y6/S8oN9aZUkMS51Op9l0A6ddX2btrNXzw0V22Asdt57NZ2nan4/iNFpgXpbW2g0vSef7KzA/nnP6zcBzemHqR0HLc6NgLu7Hp+FufNxrdOZCv+u3anHPcZ1G2lxlkXM8OMOCTjeIAWvgdp1uI6gH80kzxBZ/Lgq6zTCudXodb8CizPWdoNXyvLn5MJlzOsd91xmwVtTpdj3fiSMv9j33eNhpObNzHbcVNuN6B0YG3vF6PcvSVhK0o/l61+3MHne8WtTzF1joBvXn2qHXjGvtdtpqh0GYhE7WPtbtzTutWpC59ag1F9dbgVtrxKFbdzLPT+Zqca3fbCVpzW35TUQ5bBw9VnNd16/1/aTVq0fNTthzvXnneK/t1YIojGd7bq0ZuQgl+DA369XnOrHrD1mIILjdZqeZ+G3vJJjo9ZwFcDR3MugdHzJQ4HhUi/zYyZJOv+s3Mph7vLPGotDtu27aPhj4Uegvs6RTi9O002kBqzUWtxaYc5J1g57Ta7aDpOXGZGjQ67UjwrKTuRBwAiRLuhssAeG69WbcARH7Seq53RWwCLQfsKAdO0PWn3d8kBZRaYLN6Qq4Xfc3ieFeP/XjZdYD4bwliMsAeRTgssJSel5j7QXWSdsgXM/pphkIFTmUFqDiChIUVAQLW11EcoCxkyzboERZwz3JCHvJvL8GLmM27SKtE2RBNNtbYW7a7bkn8QNG94as0VlkrrPEKP0omwfMXWBpErSGrJvBEqcHZ2BoJzgN91dZPe76GRiHfHRIVdzNTjF/icWryHwaiBwkXRq6oRNkwKTTb6Q+lYdue5Vl2RpznHY6v4JUj2L89FAGkIlemnjrtNmP3e4q6y4wNwjCKHDiOW+VtRwY0vT67WXmDRmWZ1niDlkrWIa3Xb9/AkJbblZ3fWQ2fO0lQQRzalHH84P23DLrNhyUmN4G8+NuBxaj/iCOoH7kRMEilZ0k6ffS0El6s3HrBHxI3aDZdNJ+ErrzmZfFWaftuFHzDPA5Vne8+Dmn3Ul8rx0us0YjBXmRNYk/7zt+I0VGtdqIVVZvu06YRFESHnHCDGEOolaSOLgByo7b6h6r144G/U7LbUThfOg5yRB1pD5gbVCtiyye9YI06rtx1mo6sdtpeKeZj2oTetiQNaIYg/4pFGhAEqazPccJ/JZfGzLvPNWrKHWonA8Ro7TRj3sJEidB4ezVw267vsTcxpyT+nU/S4MkDgFxuogUCqgCusEGxA6pyofg9azfJGYcXwGA4CuKTuJjioi8zBAJJN4Au7K0HkcRCn8aY/8J1kcokUsg9YssjalwxFFvndJgnUicl/7Eh/44bqOut5PMT7IsApUir4d6m3X7odNz+1GnH/tgLg4MiAijersHjVmERG2FYTucSxvzzagN1jTmUOlQ7l038mpH51q1yO024my+fazRcGdnDx+dj47Eda8OoszXsanuNb2O6zcaTqfd6kRHnXYrOdI8Vm8caDefa/hzjdZz861Dh47O7d138NhzhxrN/fv3Hz08c2z/vsN7J48dPXLo2LGZw4d27997cH9z/+HDRw7tPrh37wGsnqnOHD4wefDgnr27D87s2Xdg39F9E5Mz+/ZNT0xWxu09h/fs3btnfM/E1MzEzJ6p8vTM1Mz0xO6xyWppbHpmurxnrGpMls3pUnlqbKpql8fHK9PjlepktTxhGJVSdbxsmhO2OVWtluivNG3bZnnSrJZgzczU/t1H9s2MH9iDzdOTM9W91alD5fGDM1Ol3eXK2MTYzPhkZaJaKuO/Ytp2affkeEm3K+Xy+L7xqZnJkm1pVmmsMqXb5ZIxZhqqWSobim5ommLqhq6pqmnIsq2Ypm5qpqEZsllWTdMyNUXRVVETeVXgFVFWJFXlDVXSeU0QVFVVRIxKGFZUSVAFSRAFUeNVkZckgZd5UeJkDMmKoEmGLHACL4gyphRREDhOkiSZxx6BkzhJFEXcSYIkCzzdcALGsV8oyIIg4onLpauiwosip8hiPi2oEs/rEKnQEoiXpAJWilAOMTzP5xZxvMxhDcfDSF0k+bxcIBM5TIoSBG7v5emH5zkowEwuQcRW2MSLCs0RDAV4ALclQc6NkskXFVpIEYwocBwvwmlcJFnjBRlSIUTiOZ4XOVmEp5LIc5oCeCSRK8AcKJPhP9xRZEwTZDCcg3LI5GQgLRYkURZhMAHIkx2wUSmIBVIry/kAT7e0p8DREtwqdCMUchBIPDlOcSGYRRl+CpwqQzm2wjZBgEkwktCACxyCBcuAkpTfSHAck/AfqEGwQupyp4ArmQN/EE1RLMBzUoF7WoOVoA5w4SnMao4DFJPcAvyCvzytoZ0IJ+7lHEiBLMntIwi3owRbEVrCntBFLAjbAm4QaBok1+CszBcoiLADtxQj4iEFiMu5wCkcRVnYRlfK72EnHIKogpzLksl2jkgkAHaiRw4aeUNAifkFphHPNfgCr6FB5XPWiuQjJyu5GbnfBC/8kjmViMaRUIFMwnI590eimGGJSJGWyYucmQgaXxAVTVYNRVERaKQWsg5bFYmX8MsrsFBXIAMGq4qgyNCAB2SiCsmKokmSitRUZVlGruJJkWiYHmRVUpDpAAmpaQiyjlUqyKeIWK0JFEURmQ5rVF3hYQQAx2JZ0fMyIOEJFqkkXJPBdVE0DF2mj6KJpmKA0nJeIRTUBxWayQCIQvGAelUGnqpoaCgnsEDN0eEVeKaomiBTiskGMoSHmUhFPGCJhuCKqgl9lNpwUyUiK6KogyOwX+dNKFTIREMh/aAe3AEgmkJW6jAD3BEUHQWJBAMgcgmOAEhNlTRF0oASAq/IhA/98ZR4SEwFomGWammAWZMUCxLBQPiuwl1TV2mPSSBCnq4ZCIdEFOVIhUalDrLypDdQduEX5MAycpmoICmUfyC0IepwniKl4U42aQ2CoVDSwjK4x6kWcUHWdEGC6wpVP0XXRNHSVDikKYKhK5JuAjUklqwguUgYnFCgSlMswEgsIYGqwUkqihhZLwEqBFYgwsmEriwjVDwiCXcBPGzRaa1M/IGziCXiDoYhOwlG5IOOaHAUWF41Id4kDoiEOMolsJeAGE4O1C7FJB7hNAFzZSKKhEMGHIdRBvADCuCAKNEaBEUREI08VBQjXMgEIAAeYTuQJoZIZI2oIFV0wgiRxlJCQwYSNCMbkkHBoVKKqgJX8EEAKWaGIBByCKlGOYRapqoGMUJURYhC3UbUue20pZLLk8tqHhRDzQ8ABIvyjMcWygGZNiFCwA07YHm+VaaAquSoBGoDDkoTkY5QAAdMdQXVCWeurAFypAfJtMcUC/TSNJzoZV21DLOk2SbOcEM3jZIlahXTLFtlrapXSjaOblvSdNXUdEvXkBKGhbNfr1gl5JVpqhoaAaVUkiXLsHRLK5mWhV9DK1VtU8ZaCWvQLaDtsEuQZ6hVY1yzZBuatLKp21JJNGyIsvRyuaSVbE2rGFVtQtNsw6pANQCGYQoaDLQOcEK1VV0ta9RpmLYKE9CeYLxSMQ3Ybho6+pCSrVQsdCB6Cb7hauq6qhgVxTAh3kCgMVdRDQOpX7LtXJJWMjTs1lR0MVTFbMMwFMEcR/xsG6kI5wCXalolS1c0w9QMdDSaOT6uGwa8UOEC9MiypUELsgyI6YqpQZ1oa4ZVzdfYlmSbqg635TGy1xiD34YJ78ow3C4peslGWOAe5YmpWaolQZkChEAqRVN02xobGye/FGAsWmAUlkOAbOvlUskswxoEQTMtlAuUNaOiWVOSZpRUXdPGLFOuGLAT5DQhQUbQddE2gJ4ON6sEKQUT7RrSVrFkslY3K/DfVHNfgLquI2QGAg9ea7ioEsBFHFAg7JI5Bq91TUeUzbIpI3OoDTRQKy1VKknw07RUvYqstTS0hlXAqQioAEgRVEtoAM6irJllxBg+6YiWZmt6FVW+DC06BMqGbVkmaiYuwEwV8oPMUjVqM8vgYAX7VMOSodQoyejOEG8Nh4GkWoDUQgGzbNXSdRNGgFgaokQBrtgVQl6FFgOkpltDp8yvACudGluJWlVBrUrkDyq3QgDopVIFZxK6XqSqAshlQCWBsahbKJoGWlsdPYdkEsUkeG1LZYVSiQA0cNyq+WGHOokQ8HSsGcRbAIxMU3VJBzwoLjpiqMIvMAAnAdVLgWooHEL+EzMEjYxSMYRoAnEcwRpyXbdRJai+gfW6ZlLJoMiCV7JVIusnxis6YK3YZahETltIXyQr5ECviY8FemMpzK+AvWrZVLQ8NCj8mi4iFCULpRvZZeL0EbWSSqHJDzYYjcgQnwwcyFTC0JWggMvUYgtYA7M1ES1bjqVBFZBcwRmgU41EfaeTUqY6z6n5yYYKx2koa+id4Safl24cESq9AOBExmEu8QUEljpH6gWpRxfFvMeQtptmVFcqpijHdETL1GVRiacpquB07FD7qfDU1uRdPPVXAk4YrKXjhroKMe+0cCzxHDUpgIFeMXh6E6FOD68PEp1QHLWZ1NoJ9CqCjdT8cnnfR20dLxYU9K+QQWc4Lcc9dKJNlQtK3hIWBGpr0fGhbSvke3l6u6HelxTTFJ/3oxiinpqnNhGAACaOmmJ6HaB3FUgiIzAqbHeoaAJ5vFbguYitBdjC0ZsLdPA0R1KoYy9Q81mAeurUMYgJvGTl7yP5a0mBtBVoZiTfANvw+kEL8oUiQcKNCLQMPX4B60dIeDFXk5vOFal7F4q55TSBvUW60AuCSBvzO1iLSQjgSAAe+XwIsyM8NyrSqoJAC/I13CgGRsX8BnpHaWhbKHzhdpC1xXx/Ib8rkmPcE7jk+kdyfdjLj5ICkrWTriPbc2RqEfIE7IXX+MfGUX4H5BZJGJ6LGC3k19FtOdwOiCDzRoHGSB7KorA9X9hGi8b4fMu2iEL+Jez/sLOYI0GKIewLBBVtx12RJ4E7YT8umN2Jp2112wo/hxnaswtfsviL+B3lvvr/X/6Puf8D5FLskA=="
}
[info] CPU 2729.5% | Mem 3.3GiB
[info] run 3 wins on score

=== Best: 998504 req/s (CPU: 2729.5%, Mem: 3.3GiB) ===
[info] exact CPU: 496.55 core-seconds | 24.860 us/req
=== Fixed-rate: cpu/req 24.86us | p99 194.0us | p99.9 4053.0us | rate_ratio 0.9985 ===
[info] saved results/latency-1m/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos

==============================================
=== ktor-kronos / latency-10k / 1024c (tool=zrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.006,
  "requests": 199671,
  "bytes": 17770719,
  "achieved_rate": 9980.39,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9980,
  "bytes_per_sec": 888255.04,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 32652,
  "latency_us": {
    "min": 39, "mean": 531.3, "stdev": 5099.3, "max": 135167,
    "p50": 66, "p75": 75, "p90": 85, "p99": 11500, "p99_9": 86368, "p99_99": 113312
  },
  "status_codes": { "1xx": 0, "2xx": 199671, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 111.7% | Mem 1.3GiB

[run 2/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199687,
  "bytes": 17772143,
  "achieved_rate": 9983.10,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9983,
  "bytes_per_sec": 888496.04,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 36, "mean": 81.6, "stdev": 542.1, "max": 30271,
    "p50": 62, "p75": 69, "p90": 77, "p99": 104, "p99_9": 5142, "p99_99": 24104
  },
  "status_codes": { "1xx": 0, "2xx": 199687, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAt14nC1SS0hUURi+5zvnzp07t+s4jNNtGKewYRKZfCFiJSUhUiEapEHSgwy0Za9lGxMzsZJIERdBItGmjbRo0SJiIBCKkGgVETa0cBHhooW0kL7/jHMfc//H933/49RPzacdxySd6k/v/itrzD9weraqjlOm9vD4leEJtapmMGtW3L/+RmatZfv0v+HJkWejm6Mvxz7den1P/ZpRS7Oq/Fj9nlPLT9TqQ7V+9+3t8tjitcrV8qU/Q5ODi33lE+87p5rXi+8KX/fvZLeiSt10+ltqs/ZzzZc9bxI73qz3IvbdnXQX3G1TMRtm1Uybip4wc6asF/Qypng9xQ+1pNbUinqkZtXN8cFz4xeOHWk7VN9ysK3+YF3t3n3xOBKJGphY3EHMGMitYRIAHF72bRxo48UAPx7AlW8E9PpIMeryCiQNGbgmA59wjQNVb8DPkwgZCoEC4CFJXxJ59MCHcUyWHB4/BdOECGniIobT1pulVcCAkBOvBZ9CA82QSTl00AroYyxLZxOzWymFdli+Aooo0Z9kckArye9GxguERMAQzRJFkryGKIjzxLg0NGnFHbIOyRTmFCMNtAroRK8o3AB79HFcgF1WzhPpDuZdRB+zNLXy1G1mXg/ZfGOLdOUxQqTptIO00wkZ8asjF3eHCWjmmeZSO0cuO9Q0aaQUTc08E7pkxHnWWMJPhVeKtX0w4rtOzftKbk10KzNG8VGx7jtMHcBZSnShH5dlsCU8VxTtJyTiJNoJDwlx7K6krjRJAtKwgCxPRN72JuV6DNnF5NAtcZlHxDllOUuXvFnCApwBmXvJp/nk6GgksAHSqG93mbJ0nl1RhCKn005/wPW1Msa1R7aASIK73UZsQbgzJHZJEYi4Uz1gnfbsuHYpMu6UfXu2IbtOz6p6dtWahElbmbYgz46/iXFWF6PDboq96ZhjjvIwS9dFbljbc9LNOjIk9VhHyH5HqF5kJLRH/D/tpnSE"
}
[info] CPU 38.1% | Mem 1.6GiB

[run 3/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.002,
  "requests": 199686,
  "bytes": 17772054,
  "achieved_rate": 9983.18,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9983,
  "bytes_per_sec": 888502.82,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 34, "mean": 86.4, "stdev": 412.8, "max": 36639,
    "p50": 71, "p75": 94, "p90": 101, "p99": 121, "p99_9": 2273, "p99_99": 24472
  },
  "status_codes": { "1xx": 0, "2xx": 199686, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAq14nC1SXUgUURide2Z2x3Eb12XwZ3f8yZZlXQ1i3SRCTBYJEdIUyyTLhGQpzSR6ih4yWBLKYFED+wHDRMoixJekZJGIniIipAeRHsIHWXqQqAjpoXOv7eyd+93vO9+559w7ZelJR9P0EW33p/+fhVpMjmlN27uJZmjwhmpOL4llbGIH7/QF75pvoygT20r+7V7qzrblWqePTrV8PbEzsN0/1/eh93bPi45vR6brFmOjkYnw7/B8VaZi1v1Tcqs4V7wWWnZnQyvux7LV4IYzWjhbkLFXC7LOeOlmxZe6bMejs+t90/3ve362p5Mr9Qu1U1WL+3LRTDQXWdn7MjRf9CAwsSdtbXl/eD57Fo05Y11/qn/CW2TwXeTEazEuLl8aHEyduZA6NpDqTmWZXBOPRVq0H6wuLCutrtkfKs0z8vK9+ZoB/sGXaUAGJuCDx9Dol7MXOh+TC0vmA7LuMeDhUlMoP4oAB5Us2gwtxn6WTOMc+1qYLUEzqiSY9XIcRhwRtZa8zQiDLQ2E6SwFCUogxvd5zkHCWSzhjmGOSlxlshbMd5IgjEYmHXZazIxw2ErmXcE2PynuCK4tuCRw1OaNGBO4wslPlgY8EeiiFBNRg5bY72PcCUUjGyMylHZ6OUstFlEudUrOBGO1HXWEaVuj1SZ1JsO4CMrzA/eEahmmIRPHSdDK9UOBIZwkLgEkSW6SLE78IR6tQ/IEbsq2OHBfGomgTZ5vC3E2CHklqL2ccmhT3hC3iVKAjVPExHnqveRw5R2RxFbCdCIktwQfAI/RVNvqZFbKdi2xKG8goq6li0lpwkY9h852D3SjllElN7H4+ChY5yCwiU1vhPoOgvgFzIACA7xal28/rtP6M4Fr6iuy2RiUDofIGKCVGcHJ5EnEccPws4muY3gu8A82bIaj"
}
[info] CPU 39.0% | Mem 1.6GiB
[info] run 2 wins on score

=== Best: 9983 req/s (CPU: 38.1%, Mem: 1.6GiB) ===
[info] exact CPU: 7.02 core-seconds | 35.159 us/req
=== Fixed-rate: cpu/req 35.16us | p99 104.0us | p99.9 5142.0us | rate_ratio 0.9983 ===
[info] saved results/latency-10k/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] skip: ktor-kronos does not subscribe to latency-500k-8cpu

==============================================
=== ktor-kronos / async / 32000c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   59.96ms   50.90ms   58.20ms   281.70ms   803.50ms

  5312402 requests in 10.00s, 5280402 responses
  Throughput: 527.95K req/s
  Bandwidth:  33.23MB/s
  Status codes: 2xx=5280402, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5280402 / 5280402 responses (100.0%)
[info] CPU 5709.2% | Mem 11.2GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   51.83ms   50.70ms   56.00ms   132.60ms   214.00ms

  6157768 requests in 10.00s, 6125768 responses
  Throughput: 612.48K req/s
  Bandwidth:  38.55MB/s
  Status codes: 2xx=6125768, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6125768 / 6125768 responses (100.0%)
[info] CPU 6307.7% | Mem 11.2GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   51.98ms   50.90ms   55.50ms   105.40ms   115.60ms

  6127905 requests in 10.00s, 6095905 responses
  Throughput: 609.48K req/s
  Bandwidth:  38.36MB/s
  Status codes: 2xx=6095905, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 6095905 / 6095905 responses (100.0%)
[info] CPU 6210.2% | Mem 11.2GiB

=== Best: 612576 req/s (CPU: 6307.7%, Mem: 11.2GiB) ===
[info] input BW: 28.04MB/s (avg template: 48 bytes)
[info] saved results/async/32000/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/ktor-kronos.json - 16 new, 16 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

…s own encoder - encodeToString queued every reactor on one process-wide lock - and Ktor's gzip run on the reactor rather than Dispatchers.Default; the diagnostics add a Flight Recorder summary every 10 s (temporary)
@MDA2AV

MDA2AV commented Oct 31, 2026

Copy link
Copy Markdown
Owner Author

/benchmark --save

@github-actions

Copy link
Copy Markdown
Contributor

👋 Benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ktor-kronos | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 2,734,656 — — — — 6457.2% 6.0GiB ~0% ~0%
pipelined 4096 7,045,830 — — — — 6280.6% 6.8GiB ~0% ~0%
limited-conn 4096 1,073,006 — — — — 6532.5% 5.1GiB ~0% ~0%
json-comp 4096 99,587 — — — — 6189.4% 5.9GiB ~0% ~0%
json-comp 16384 88,317 — — — — 6431.6% 7.5GiB ~0% ~0%
json-tls 4096 948,246 — — — — 6422.9% 7.0GiB ~0% ~0%
8gbit 512 49,352 0.9870 56.91us 150.0us 3981.0us 253.4% 4.5GiB ~0% ~0%
echo-ws 512 325,144 — — — — 6435.5% 2.5GiB ~0% ~0%
echo-ws 4096 319,125 — — — — 6392.4% 2.2GiB ~0% ~0%
echo-ws 16384 2,220,264 — — — — 6055.0% 8.7GiB ~0% ~0%
echo-ws-pipeline 512 5,049,206 — — — — 6308.2% 4.8GiB ~0% ~0%
echo-ws-pipeline 4096 5,104,345 — — — — 6197.2% 5.1GiB ~0% ~0%
echo-ws-pipeline 16384 5,165,334 — — — — 6170.1% 8.4GiB ~0% ~0%
latency-1m 1024 998,094 0.9981 25.16us 195.0us 2353.0us 2756.8% 3.6GiB ~0% ~0%
latency-10k 1024 9,979 0.9979 35.92us 130.0us 2329.0us 34.0% 1.6GiB ~0% ~0%
async 32000 569,953 — — — — 6189.2% 6.6GiB ~0% ~0%

Composite score, main against this run, in the board's default view:

Family main this run Δ
HTTP/1.1 - 4316.2 (#15 of 23) -
WebSocket - 306.2 (#15 of 15) -

The results on main were measured in another session, so a few points up or down can be the machine and not the change.

Full log
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 1000000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 19965264,
  "bytes": 1776908496,
  "achieved_rate": 998094.27,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.9981,
  "bytes_per_sec": 88830390.47,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 47461,
  "latency_us": {
    "min": 26, "mean": 104.8, "stdev": 403.1, "max": 48511,
    "p50": 85, "p75": 101, "p90": 122, "p99": 195, "p99_9": 2353, "p99_99": 20536
  },
  "status_codes": { "1xx": 0, "2xx": 19965264, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAEwl4nDVXDYjcZnqe75tvZVlWdKqsTCeTzZ6zdZyt8+8GN7jGNWbZbpdlGYbpIIROFUIIoQpViEEM02HYbve2i7M1vs02dd3U3bo+XxqMCcYUX87kjJMG1+QSN4QQcj7XGJMzac41bs6YNPX1ebXX3Z0d6dP3vT/P+7w/Gl18ZWul8uh3Khs/1V9/s/Lmlb+s/P6djYXf4WJ0X+cEu8/eqy5LX25e1Q/X18dPvnB//2d/dOhPV1fZ/Dn23i129Af87G1+6cPqyR+Kjy+MnPtQuvLfmy6c3nzuz7csfq5e+1fty3P6Fz8xVv/dfOtq7fbP6x/db5z/wWP3Ln77s88fP/VX2+98f8eXP5548PrO6ytP3/nfZ946/tzy6eevvfXC59/ddf+nu9b/c9edX+668OmuY2d33fnurqunX3jzp8/fvPbcVz959v13njl04ek333zq0vzOxdsTtz948oMTOy4tP/H1+79198Px6//w+N2/2bb087FrHz52/OLo1b999OYrja+XHjm/XD/+8m8eX6wtLzz81SvmmX/aeu+fjVPv/Mb1m/qhX33rjb/71sHL2ue/fOib1x868pl6d0U9+W9bXv+LLUfeUVYebF69tPndlzcf+VRePymf/cWmW+9v+nh909IvpMMXpWOvScvz0sVPR1Z/NPLpkZGL98Xiz8S9i+LO98Xp74mj96uLP6sefbd68YfVqyeq69+rfvkrfvELfvk/+N0r/PjbfOUMv3mcP/hr/snLfPV/2P3/Yqe+YB9fZd98xNYusyM/Zrd+xD4/zU6/wdb+kS38PTv6Cjt/iC0eZFeG5//senE7++BPFqOT3o0/nv/OinWzda751ezZP7z8B69OXtu/svfj3/vgpU92P9j1xfPrz379zI2n7v/2jSdPP7n2xN3xbx6ff/zi2Nejy6PHGscePfnIG/W7tfcfXqs92Hpn60dbzxsnjDP6Vf197RPtm4cua0fVy+pd9cqWM1uObflq863N9zbfka9vPiefkdflB5te23RXOiudky5Il6UFaV36ZuSLkbMj98TKyB3xgbgk3hWnxIPqKXFeLInPq7eqN6ofVS9X16tvV+erp6qHqjf5Z/wqv8uv8Qf8bX6DX+Hr/B5b4cv8NX6Yf8XusCP8HL/NjvG77By/jvvD+L/Cb7HL7F/YDXaXfcTeZh/j7hb7hL3F3mTn2XvsCruA/5ew43V8zuL+OFZOsjfwOYX7FawusFfZYTx/lZ3AmXV2lF3ErlN48gZbxd0R/L7KltkaVpdxbgV32Tqbx/JRLPZW2BL2zbPBKh4UKyw/woLBPIQVx7D/MDvIXmO9VRw7zPLDOLCGy4Msnmd20e31+knSncf9IdjR83K/H/RJVZz3+8kCycqH3cjrxos4VWQ9rMVLLFxgiyyax75wGLlBOFiCyiUWx14366VTcZC387ibxP6g4xS5nXndaNANerETDbv+oNf3l1kQpYus8NpBnHfyMB6488yKFllqJ8MwsKM4i6PMdhdZ2/anB3MDzw86szOuH6Vpnrp5mAxCb57l3SiJ3XyepXnkd/M0L0hL2M6seBissWE/TvtessSOsU4/iRzfSfJoMmzB4aHnQbGdRlknHS4x1z/EmmnQOpBmrSDywoGVZp7tDPpLzM/mWTt3w8k8S8N24a6wYbfbLZLEsUIrTrt9L2ynPSDSDTMvnY7C1iAN7NTuDuIo9O0s8V3PK4J2FKW2PfS93JqJiyKyQs93sHHgFvYwOMSGTuQm9kE2F8Z23up33WGn7YX+ZAxQIjdstadnk2FwoLBsJ3P8uaybeF2nE8R+HBatReb3Wj6UtZx2HuWDpNdM82bgpaEz14YLbjuNmnPNtj1wfLfj+7lFZoVToR15PXdQRPujfjOOWn7Xs/wgKbwgjayON9VxLIDhJX3Xt9thNw9WWOCnk00r74WpPRdHQ6vVbwfBPAs9BCDK/agNRqW9IJlupo7tRM0IrhcLzImdot9LOp0wivMgn4yWmd1pJ1YBtPY6uZcFnp0XUeL4vXzO9ttWHPcRXzeN0tDN4k7LzwdOFFnLzF9kfXzmWbbCkpkUPAaFHDtzWlkQeJ08cRDeAKj1iiCOBrllLbF+N3EgzrU7HWACLsdumjTDuAWr03Ce+VGRpbFV9KI48ltIjkEeDKM89oZWNJNEiFTs9LNkFsK9FNJDK+qnTgz5Xq/IAjd3250s6YWxF/jgaD+MErudxN3ZbJgU8WzeDZIU1iM7Oous2VlgxUE29IdOklrZITZIs6AVLbE08LJe1m/lrXSBudNZlsUl8cN8iXmB68CRoOhlx9gw6vXA6nw2CqKiE2dLrNXvp0usGy+zxOlkVgasg6ztLcMTb9gqsNkq3GKVDWBzksZ4Wjh22EudwQILc88HGXu9IMZngaUDx82zRZaBAyvA2UUAmsAo99JkEZkSDazOoJvZPauVkgIfrE6CNAhyq/AdFynZS+wQLmRZMAi7Dg7FRepmFliQo0qAHYDQASbOQebPsyQOeq6Fp1nuOvEaC1Lb89KuayGz06ifYEs650coJ0k6F851/cxdQvmBpVbP80Abz+paiL3l2ll/kYXNKM8Q/oFlhVkYt70iDl0QBrWnkw8HIFoLIbRDt5tHBzzXiZzI7oR+J+zaHZzI/bS7wJKpwGknhR+kwwAJ1F5GCchnrcOsiIt51iq67TSOM6+IiM+RXST7UQDaDkpi5iK8TuAWYQRipSkC6PndrDtApXSy7lw6lwdWGORREmTdqU7PsoBAHjZjO0C166EIh71gOk8KFJeICOLaCephGgVp14+cIrBtlMJDLA4Kr+OknSxqFu2omcx5qesmUUpZP4zbMejYzT1Ed2aFNeOs6GbNXjKVW3baT+1WlvQXWNB1ezbKQHAgaCe+41izrhXErhdOelHbsS3HyrwwztPOXsvtuC487fmDucD1Er9ld71m0fId2256lhuHrXgu8puBZR9wWyBeM7Jg6+zMrBVO+9PN2QPRgfaMFfZaLeSSn067PTeZTXOvaXXc9v7M8/f1gplpe86OLURjFsKnAqs9Od2eQdWaimZcx59ptaabVrPjvTQ9tW92emrugDc34+2daieOO7V3ptXutK2p6X17nVarDfWtTsvt7DmDzraMzrWGVnkKXD6KuyOsdwJL/TX00iV8XsWefI0NVkCqJeyk1rqIZrmKE+im88zLh0PfpTaLnAvRBpK06K2hXw5TZ4j6A+Z6vo2qgh5gJegt0Uw0Zzt+Z25oOa1gn9WanbLi6bblTdLPgbnZzotWNDHdnHxp74udydlZ227Buem9O5+e3r+neWD3nj37d4/vfvGlqV3Tz+97cf+efZN7Jiee3bl7556nn96+4/nde57dM75r547dL+3avn1ix7ax8dGJ3dsn6vXd23ZPPDs6+uLO8Xpt+9j2HRPj20Yn1IltjYmdRq1uGjvHzPHRxjbDHB2vGapRb5imXFeNWkOr63Jd0TRFqwmhqqquK6pumLjnqiHhpqZImhC6zA1FEtzEkqTJuq5pQtUUBVeyLis4KGuqLGRFwmNJ0vCjcFniBh6rkqwohgaBii7VhKboKvbKKtdlTRaGkLhQZEWWZC7hn6xK2C8kWQhZKPhSDAVSBR7pQihCUTg2QJqMPTJMkvBIwjXnQuZaBcbCA+zSuMRlLuijQikuoEVS4QUdrCiQzLkmkwbFkFRBj2QuaxKdESRRUbAVG2EKlypQWxrG8QzPpVKpoZE4oUNShe5pXVEUuIeTECxIKM4JXlG5BuRgMCcRCmlXuRAVgkmCfWS3TOuEhuAKAUH7SJ5c2TgKA2k/XcAmwkRUSFDpbnkvAwNOZkKtKghNhJXMEkpFRgQqnJyGSVAq4aAKtQAeqDQgRK/QIUmlRxIQ0lQoL2VpQBFLhB6iDbAJfGCvcg4lFAUEBdIkRa0IuYJnUA5JFYqcRB7jZBkFmYAn6wk4QQgJsqUCH0EgLqm8Ql4AY1AKmmEfIofwQAFObQCqIwbEENgBO2FgpdShcvjLKxQcrpSw0y4KPWQKXYLhgiDncLsCSRwslHUFdAJ/DaGC1nBJVwyjLhuqjASQFbOhGkqZCnBHbhjARFPrqi4RjDrx3lBNsB45QfCbAkSXDV03deQJtiJNEAU6BcshCjmmmpBuGDiM5NE0Q4MzigoCQnVNwVnkCIxSNJ0CiGzBFkVVSD+BLxsy/iE/ZYjX6ziiGsCW9Pw6tWRVrWs6kCN+44TJsdNQdKjVDFWqaWQ7aAbToQYZJnQUhA3DiL1QD3Vqmc6KimQ2VUoTuAv7NVpR5Rp2wX5gg6eoE8AKGnQZ9UUSBtzWlDoyr9yhajLQ1sAglYTjnEEVQkENALmBJLChEqLAXl0ReAaWaWS6SvqQibohmQS8ZgIBhSghQb1mEuIEnUbpouk4XYNcxB9AEOTYSnWM1JgKPUSNgvVUo3QT4g2SCWMlqNZxIemmQd6p5JumjKqmVCc0BGzUABhlmlxTySAKjaIQ6UFMhTSB6uQH6hwij1SRDCpScFToo+CNjg/xl2KF8mkIRRccyuC54DpiD4fhOsw2kEhCJboYNdQDnVNIDRV5rkkQohK5QBOZqAGzdOiF1npNITRAWYiExaakGRQKgASFpqDoU4GXVKNCdFEpr+AcBYeCoZTRJV5oXEfuk2NY5RR2DQo1JATFmE7KlA6C18nfmkSJQH6jHCJnSTQ04V9dKp2qwUCQi4KiC0M2gb5sQhMKga7BQKrMFCCKqgrXUA5looROFAVkcBCRwh8CATNqYFDNkAxEm0hAzMWiRtWKIJGpciOVQBmVkCbHVERI4zWVehHoib6DBCnrNCKpmEZjzKw1THRFVTWNUVBgVKupY0qjhh5Zq4+aegMq6yZwx71RMxq4MwxjdFujXldHG+ZYzUTRaIzVtDFjtK6YOphj1BHTUbMOxMxtJat0Xa0rionQgTg1BWJQKKSGYtTGZa1u6HVQDoUDZAJ8RgNbZOhoNMbVUV3ohm7WazriO4YGDZZjAekOo0ECHcfVMk74bRh6Q0H+47CsGHKJtk4ZVIc7yGuiGrhb15CyGhVgqDUoXxEa1AGzoagNRYA9AnIBoGQqpjKKG+w0gQ+YUdMM5LCpChPPDeKFSWlEpYcGArBfp5zEjIHKUKc+SnxWRgFCo2aUhONlkVOI5TJy0aB0JVaCzhJqoAobVHKMiAcpMAKFAfMGZT9lo6Gj9lPSl6MBkZjqoqhR8YP6Wg1isCrGqJKaapksCqe+S7UVpAOiVHJgK7mAHEbBBvwgNHVL1HJySKLaXRpJk4xMFZqqlShHHxVVChmpUQvQTJ0mH3RUbMVxThNNjaYBSk+qLTqSjSoLQII3VKgF8pOoD4glA3jgMToiFWeBvKFWIbhhUL8G8kgsCKGJRaPeDB6hhBnUntHY5HKEolENgSBQJapY1FDJDQS6JLugDq4R51GEEQ5OFVWhPqKQcHgtkFYVHU2R/3+Kl2WALKdSRouYkQA6zUYYcTAvlVMbJRy+FVPQbIN9NF+Qn2UBppEGpzTUS43mG3ipUdOm7ky2It0xRtB5+EbdGabR7EMGIRZcxpAj06xQ4ZqBQxoNETjCqYWTAIUqLqYJTnMJzQwwnwYmmgHIZFmpluaS5XI5xMFDqRRNcwyKGtV/ig61ebVMVkhAfpgURmoQyCAajASVsjr2KNRc5YpOUYdyUZdpJCDmURtGVgmDJl8qsZpR9mYaQEBzNAUwEEVVKgdjoIRsF9TtKoIYRFyjUYAoR61PgE1qRS4rs6jgNI2/FD5c0DhGJZymUo2mH2IVfEPtlGjqg88a7JFLTSgONKFWAK9aTtnkOccASeMdxmYCE4iRTprmKB1pwqPRmKY2qUJzJ416NAwjkyS5Sl0Kw145j9JgjmGPmi8VXKmcUWlwk4gqOIPZFd8KzYaYGiu0SA5RLOkNAGYbGO82RuByaKNZuYwavjDUcdoDU+gYjYzQh3lWogmP3JPLGVMqS02FaEBsKD9YlWjKhnE0c5JQgKOWM2e5vZzI6TnNhiWkvHRTITJijuelbrEx+5d2025R3gFQoimxtTxLgy1GWLKEZtAKB2PoQFUiXZhTEY6RUlU5vmOVpFbI9Aq9DmwQHhpL6TCfkKrQoC2IzzTwEqSECr2I0ONyVqdAchqhyWhRFVWYiJNyCUXpUIV2UyDoZUlgiyhfQIAW+U1TcSmiTCJa4BR3XgKwkVmwnsJAL0hkBb0XVEkZocTpfOk25G2EjwIulXJojyjhKed0EiBKMoyUcslv7FVKb0W5QN9kInRXZcJBoitRogF1lVI/LzlC4JXWk6HVkh+bUbFKSRAB7VJ5YkP6BttKhCUyT+Ybr3QVUiDK96uSDvRShOq2EeRK6cUGshu8gBmIAJArXStpWaIgbXCwsnFVLQNKnlHcYAcfoeCKDU+kcn+lfLUs/aK9BHp5QSGkhyO0bWRjjfPNpSv0twlLVTzYRDcbFw/jssr5E5xv4d/mW8v7x/i3+CP43sKf4r+L3+f4/wEq/fmF"
}
[info] CPU 2756.8% | Mem 3.6GiB
[info] run 3 wins on score

=== Best: 998094 req/s (CPU: 2756.8%, Mem: 3.6GiB) ===
[info] exact CPU: 502.42 core-seconds | 25.165 us/req
=== Fixed-rate: cpu/req 25.16us | p99 195.0us | p99.9 2353.0us | rate_ratio 0.9981 ===
[info] saved results/latency-1m/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos

==============================================
=== ktor-kronos / latency-10k / 1024c (tool=zrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199640,
  "bytes": 17767960,
  "achieved_rate": 9980.36,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9980,
  "bytes_per_sec": 888251.98,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 39, "mean": 111.3, "stdev": 1043.3, "max": 74495,
    "p50": 67, "p75": 76, "p90": 85, "p99": 133, "p99_9": 15804, "p99_99": 41552
  },
  "status_codes": { "1xx": 0, "2xx": 199640, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABK54nD1VW2gdVRSd2WfPmZk7mcy9uW1vbm4efRpjCDUFtdKPGlsoVGMUEmgtVQQfPwoKCiJYaqltfPxoQz8kiAQRCcWvUsSP6peUCkWKiEgp4kcpItKPfvRDxLX2mZvMvXfOYz/WXnudk9HT59pRlA1H4c/V79gm585G+++EhXkdyLY//uyb71yMV+QbvZF/NvT3zuV9Pz5xc+nKsZ+P/rD0++KFxVvHr7/639urH8UrK/HHn8SnTsc33vjqxStHLi+sLlx75u7S+uJ3iyef+ufA2sPLM5fuv7r934m1sS9Hb4+sDn/YOb/l5tAv1aflvcb1/HZ6If3c30ru6F39Vr/Qe+6UXnR/uqtyRX6TM/JXfF5+jf+I1+Jr8aX4xHq8HK/HX8cn4zPx6ycOP/3ykecee/LgwcN7d+558L49e8cfGB7d2tw6Mj4+PNJsNrdkm5oDo80BvykbGPDZ8GDWzLKhoWzQDw5kjYY2Gr4hXkR9JtrwKpkIv5Fm6lQFH4m8ZE68+iiDQSMSLnsHQ9EIlmahGKj3XnyEOR5nOxiIOAxSGEiCMT/cz+mnKdcKM0Fcp7l5pTSTnBmwTBunDJRa1hTfxJLDHSNuYV2dbRX8TTShO6JW3E2kQpwC75aK84UnBEOEdIDlkwCJ2eiaIpajW2QAEksabJizMnsPk4QBAnrQw/SRtGvIaeAhZVjthwnMOCxYjczJ4lzNQCodxJ4CoRFgJCDE0wObqYEVc04CzlR6gRFntTKU8dkmmiLkzMmzIQ/hnRRaR0QkNbJEaZArSRHD57Fa0AU7ZJy9TEL2yJoe2sI6cpDFhrTwSI3FWW9CV6yJZN7XNFM9hTWbKWCSmj4KLQMlbKmictFeoKtt6BOrAqupBVYTpuHZTBd2zFpZI8vZ6ZLTxIQBAQR0zGarJBKJnVaGGLYmvKCDIgRSwHIbPWPccoMFziprdLLRxrxWeLAPwUyIuU2JJEf2FuFROSE2slWUc2naK5Cj6gOEeFBwp05OnqWLp6hLL6zY3YECyxXBGwYTFDEVkCgxutDHxJrY9YQMHyYpyRKLQvaafEwqDSqrz0DJ2EVdTb8RPAiTWCXIUvmbWJus/MoYrChGJor6x7jAnKtsoguwCyuUBHWxNYeNaeoaK1387pNdOA5tfHPsbuPRQBlT2pL9yD6P+SHsdjF+Sz6IYTIFtD3rZw+l75AOHOflIezM4FvBcAzco2JdgNULhpCp5uRYUHSCLBHcJjHajXdk/ejII8hQGZb3Y4PoEIcb2wCRUcwylQMyga05vB0wVn29TGHoqJ82kk5YvSRCpkFjiemMzJr+W3TW43B1KN6ZtHhSusjZFiqhwMohq2EeXg7Z5WyMI1WAz1xn5HmsTYXrZhavV+wq6qFsyzNmrEMFnO7AA9uusPlsMMJ28DBFR47KmG42tVk/03DPFAaJ0bTLWQ55Vv37MWHT1LrawlKbXCrFjksT2ijtSM5ajDKsBoVNMEnPhDhb957C4VHZZUfc2TWQGFDcS9WGGMN1A988XFYGzWlbjXmT3aOWoGsx7NIP/wraKK5UHrfU0k3bmZsE6zkZ1vdieQn4X0PAd+V7lZ9E/gdc/Ibc"
}
[info] CPU 66.7% | Mem 1.3GiB

[run 2/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.003,
  "requests": 199554,
  "bytes": 17760306,
  "achieved_rate": 9976.43,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9976,
  "bytes_per_sec": 887902.71,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 37, "mean": 95.0, "stdev": 782.0, "max": 49119,
    "p50": 66, "p75": 93, "p90": 102, "p99": 118, "p99_9": 2623, "p99_99": 42352
  },
  "status_codes": { "1xx": 0, "2xx": 199554, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAvN4nC1Sz0sUcRT/7pvvzOw4uztOtrvuTurKYquso4kuskotGVSLhyK1H1BUoFiIR09ePBiFSZRKdQiJTiEdQiUWkfAgi4iIf0AnTyIRIp5CqM/3rTPsft978977fN7nfS9Mz9cIIVOi8mhnZ4Cd+ZeicFQJFCnUen14MTBLp1TSNuWUOR3ZSi30bdz7M3A8+Grw4PbU/bkn22NLY+WRhdGD8dLo4VDp5pcrv7o/dy117PqrzeXUb283ueEtJ97Wbsfex9ZjP6KH7rHz1fnr7FafhD9Flt19b6Z5wS9fOm5b7DzNr/Xsd2y1nmS+Z/f8o+xm035qNvkxthbdObcTWbXXrdXglvHGmNHLclmb0Ur0k/YCc4FvgWd3Ht4dHuzraeu6mEzVJ2P1taFYdSgYrDovjVB1lQwZIRkJkiTDECQlUVBKaQhDSMSEFFIKItLwksAryTYoTLryLI6YBAOPzr4mXdiO+lyHn0M2wjqSBLlUAw8GPI3CEgEVNKkBCY5MsI1QFodOUYKfBZSDUJyuUkGCgodKndL0mBIKVUOaTi3c2EaZj4hJRSSYTNLGf4V7C5OwYAI/jrClmjXSLabYgT4PEKxBVj/8OrrM1TryHRpA3xa6Bn8IeVFG86mdxhB16QblkecqHA+dqVOJkweFRhgYDOkCorhMjwfUeMgEj6IUBLDNM9usmGDFLFSoRJ2alGouC+oCQhVYKEnwGC7shMxwNwugcUQUqIXstGLVwCJr9DqAWo8VyNMkciYwUTeN04qSbILeEb0waYT+EWh+CFCBASroUfyb9JxJpDFPmGd9iq8FyhEGNZlHnD8BsQnC9FMGdYLUWjO8gyKsHD1CUh7i+UomF7WVdrzqnNKqstcs9TKckk9Jk0VsEraDpo3MPgxwtd8sk/MA24vTlO3YptpjDpkW3iJ4NaCuE3doxUBLJZ26VmHeicNbUvywOxtHGjWO2okSXIGrG1y5dz4qwjyufnafBUfURYnzrmzMl6D/9I58mg=="
}
[info] CPU 41.4% | Mem 1.6GiB

[run 3/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.002,
  "requests": 199601,
  "bytes": 17764489,
  "achieved_rate": 9978.87,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9979,
  "bytes_per_sec": 888119.76,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 35, "mean": 89.3, "stdev": 673.5, "max": 42815,
    "p50": 63, "p75": 89, "p90": 99, "p99": 130, "p99_9": 2329, "p99_99": 37136
  },
  "status_codes": { "1xx": 0, "2xx": 199601, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAtV4nC1RW0iTYRj+v+f//p2+5po7qdPGXBK2xBMyhqkl2cioFoEdhKKLSKIoiQKlIpYoSEToChHpyisRCgkhBCvvugmvxgiJLkxGiHThhUhEz/fb/n2H93nf53kPX/XIZMAwzM/G3s/8fwrbmBwzun7vAT1SHmw50jkhhpfFd8zJLeu9ehOZOfw1O3p7e6DUt3Ihf3F0oDj4dHjlUXG4MJS/V7i62LvZOZ3KtTxv+dS601SqX4sXqn6FZyO74R+hxeDr4ExoOTjtX/VuqLzKqYLKl40E/9SupxaO7qbH08vpUlspOZ8Yr1mpmqjK1axXT0WnK+bK82XbnqJr0/HO2jAX5YhcMP9iFVN4gTXxTRTErd5stu/S2eyTeTEr1sXDnNgVL7EjtkRRTIkrJ090dx+rbao4EA6Xl++T+6XLJQGXwwM4pISkpQ+P4ZBweFwwNGo5IGFIJwzAIuSEqS/cuCv4NK43L3cvTzf4d0qFSgKaFeAOvx16CEgS8aEdOI64dBM9RSkfV6UMUDBEWlQLoNXGfWggxWQUMmjWKWHKEHADDLtDrQQpbt4TeMwqo0BKtjOqmbVEmbWD7Biz9IPCMcL36WhEPdokzaTuiOoWnYrRGcRYk+7BIDOG08zvJn6GK8Wbm82QVM9GLOrEWQyvylbRvStEpK7Qno/T7tzgd56OvSb9XF7KmFw+dNGOYYhp03psCTwTTLVkYkzgrdDWXTJfCbSRcFPGEcEDziXDxA2U6WDugF13CJf5GXo6Buvr19QA0Ub8FHboF0FYEVGMa2UDToJ2yXVcUVy3WR06q36PQfp9drQCD5OTTjKt306maH3UNQU4Th96WNUpaur3jVM5RJka/Z60Y/RZRK8R7WKEl7giz41zrD1CK2lPuxEUoLSbEWksgbXoYX8QesTMpPTDx+nUZfttn5t0xUQ0/ZD6ARliUTuq25Ixtl2npxGSGfwDJ6iKLg=="
}
[info] CPU 34.0% | Mem 1.6GiB
[info] run 3 wins on score

=== Best: 9979 req/s (CPU: 34.0%, Mem: 1.6GiB) ===
[info] exact CPU: 7.17 core-seconds | 35.918 us/req
=== Fixed-rate: cpu/req 35.92us | p99 130.0us | p99.9 2329.0us | rate_ratio 0.9979 ===
[info] saved results/latency-10k/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] skip: ktor-kronos does not subscribe to latency-500k-8cpu

==============================================
=== ktor-kronos / async / 32000c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   60.12ms   51.70ms   69.10ms   205.00ms   791.30ms

  5309386 requests in 10.00s, 5277386 responses
  Throughput: 527.64K req/s
  Bandwidth:  33.21MB/s
  Status codes: 2xx=5277386, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5277386 / 5277386 responses (100.0%)
[info] CPU 5783.8% | Mem 4.8GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   55.60ms   52.10ms   71.90ms   182.20ms   248.00ms

  5697018 requests in 10.00s, 5665018 responses
  Throughput: 566.37K req/s
  Bandwidth:  35.65MB/s
  Status codes: 2xx=5665018, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5665018 / 5665018 responses (100.0%)
[info] CPU 6113.7% | Mem 4.4GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   55.68ms   52.40ms   60.30ms   151.00ms   226.40ms

  5731530 requests in 10.00s, 5699530 responses
  Throughput: 569.86K req/s
  Bandwidth:  35.87MB/s
  Status codes: 2xx=5699530, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 5699530 / 5699530 responses (100.0%)
[info] CPU 6189.2% | Mem 6.6GiB

=== Best: 569953 req/s (CPU: 6189.2%, Mem: 6.6GiB) ===
[info] input BW: 26.09MB/s (avg template: 48 bytes)
[info] saved results/async/32000/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/ktor-kronos.json - 16 new, 16 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

…hared by every reactor - a job per reactor (async had 62-73% of its samples on the one root job's list of handlers), the application resolved once rather than under EmbeddedServer's read lock on every call (half of pipelined's), and kotlinx-io's segment pool sized before the reactors are pinned: first used on one, it had a single slot for all 64, and limited-conn, echo-ws and json-comp spent 40-96% spinning on it; the diagnostics add the pool's slots, the hottest stacks and who takes each contended lock; the native path's GC floor is 64 MiB a reactor, as ktor-kronos-native's
…InitialRAMPercentage=8 -XX:NewRatio=1) - G1 started at 2 GiB and each young collection copies every call in flight, 32000 at once in async: async +15% locally, echo-ws +5%, json-tls +2%
@MDA2AV

MDA2AV commented Oct 31, 2026

Copy link
Copy Markdown
Owner Author

/benchmark --save

@github-actions

Copy link
Copy Markdown
Contributor

👋 Benchmark request received. A collaborator will review and approve the run.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: ktor-kronos | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 3,281,035 — — — — 6330.5% 11.9GiB ~0% ~0%
pipelined 4096 14,541,568 — — — — 6316.6% 14.3GiB ~0% ~0%
limited-conn 4096 2,570,242 — — — — 6011.0% 12.2GiB ~0% ~0%
json-comp 4096 236,085 — — — — 5604.3% 16.4GiB ~0% ~0%
json-comp 16384 243,933 — — — — 5802.4% 25.7GiB ~0% ~0%
json-tls 4096 975,645 — — — — 6416.2% 12.2GiB ~0% ~0%
8gbit 512 49,255 0.9851 54.71us 146.0us 5550.0us 239.5% 4.3GiB ~0% ~0%
echo-ws 512 3,199,050 — — — — 6063.8% 22.8GiB ~0% ~0%
echo-ws 4096 3,046,019 — — — — 6246.3% 23.6GiB ~0% ~0%
echo-ws 16384 1,678,940 — — — — 4841.2% 18.5GiB ~0% ~0%
echo-ws-pipeline 512 28,903,942 — — — — 6653.5% 12.1GiB ~0% ~0%
echo-ws-pipeline 4096 25,131,027 — — — — 6347.9% 33.2GiB ~0% ~0%
echo-ws-pipeline 16384 18,787,984 — — — — 6065.9% 34.9GiB ~0% ~0%
latency-1m 1024 997,808 0.9978 24.57us 178.0us 2747.0us 2691.6% 11.8GiB ~0% ~0%
latency-10k 1024 9,980 0.9980 39.54us 116.0us 928.0us 37.6% 2.4GiB ~0% ~0%
async 32000 1,723,447 — — — — 6232.6% 36.3GiB ~0% ~0%

Composite score, main against this run, in the board's default view:

Family main this run Δ
HTTP/1.1 - 5581.0 (#12 of 23) -
WebSocket - 1009.2 (#14 of 15) -

The results on main were measured in another session, so a few points up or down can be the machine and not the change.

Full log
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 1000000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.004,
  "requests": 19959778,
  "bytes": 1776420242,
  "achieved_rate": 997807.92,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.9978,
  "bytes_per_sec": 88804904.88,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 54665,
  "latency_us": {
    "min": 25, "mean": 102.3, "stdev": 481.7, "max": 55711,
    "p50": 83, "p75": 99, "p90": 119, "p99": 178, "p99_9": 2747, "p99_99": 26424
  },
  "status_codes": { "1xx": 0, "2xx": 19959778, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 2691.6% | Mem 11.8GiB
[info] run 3 wins on score

=== Best: 997808 req/s (CPU: 2691.6%, Mem: 11.8GiB) ===
[info] exact CPU: 490.48 core-seconds | 24.574 us/req
=== Fixed-rate: cpu/req 24.57us | p99 178.0us | p99.9 2747.0us | rate_ratio 0.9978 ===
[info] saved results/latency-1m/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos

==============================================
=== ktor-kronos / latency-10k / 1024c (tool=zrk) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.005,
  "requests": 199639,
  "bytes": 17767871,
  "achieved_rate": 9979.29,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9979,
  "bytes_per_sec": 888156.99,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 37, "mean": 538.8, "stdev": 2452.9, "max": 87167,
    "p50": 68, "p75": 77, "p90": 93, "p99": 10612, "p99_9": 33328, "p99_99": 58640
  },
  "status_codes": { "1xx": 0, "2xx": 199639, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "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"
}
[info] CPU 92.3% | Mem 12.1GiB

[run 2/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.002,
  "requests": 199672,
  "bytes": 17770808,
  "achieved_rate": 9982.41,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9982,
  "bytes_per_sec": 888434.07,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 34, "mean": 86.7, "stdev": 512.8, "max": 41087,
    "p50": 65, "p75": 91, "p90": 101, "p99": 120, "p99_9": 3747, "p99_99": 28264
  },
  "status_codes": { "1xx": 0, "2xx": 199672, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAth4nC1SS0hUYRS+97v/vTPOk2lejdMkk005juM4ilmYqBRFpZSUmkFJgdqDFhXSohaCRmAPIkGEjKJgFiFh0WqQCJMWIq1CZKhwIQYh5WoW0aLv/6e5c+45/3l83zn/udvGJvyaZnzUSj/jv9bVYeKu1rpZchywwx7Yc+7M4OV1fQaTxrKZd8yFN7NTncWeD91rXT97x7v/nv56fvbiwuCjCxtXJq8uDhT6ih25g9P73zWu149kVqvzicXtX2Kvyh9GipFPWzeCucDnwKxv3jvtGXHPuL97VjxzgaWK8V3LVWup93WvM9N1z2uXan7V5GruJxd2zMcLFcVoIZQPvvX/8Y55p1wzjlVb3nphFsSqkTNGjAKmsKGv6Jv6rP5Yv357cO+Jo6d6Og61tdVX1R6q3lkeCjmskBWwb3F5LCEcAsKyLCpL2AHhsgDNZRdCaHDAsiCggX6KRYsPA6IMyvaiDE7lMWHARpGWKKkmhvmvwGH66cnAxxQTbqSpg0q8lCg9/fQ74RNu5sQYYSUpmtHLc5DiY30QcUZY7EYlExrocjPLpLgZsOEaebKIYBQ4S9o+3NOpbCx+oGMfgyYx0EhjmJJW1DxmVDHPcSK+kSVxvNTJkEI3m/GiBbsRFJKjX02cYF4TbtIrB42gk5EIECZEF41ephDvEo0E7uhMk73TThItDcKlyDmAG/SHWVHJUJmCilLHqA0OFIQhsqpnk7lOduXnKayuXV2jX11gRFJJnAYQ1MtZ5UXyleDR4CSGYJuihBMj16hOt7y9JBsZJmGUKGnOkGZCSbwEbKQ41U6zEkSxgeWVktzPbkwCMEeutAlybRpOIinaZfPChGw9osYw2Zyp9tTKt+QL8/FxcCeOMMeJZzpusfypLuIYwg/gm+zQ5BL53bSrJWsKQN5MMwH8OE4AJ1IiLo4pkiE80Tmy5JLra2GS/KxkqIHXHeHov2VCFv8AXyWFQw=="
}
[info] CPU 39.2% | Mem 2.4GiB

[run 3/3]
{
  "zrk_version": "2.3.0",
  "target": { "url": "http://localhost:8080/baseline11?a=1&b=2", "method": "GET" },
  "config": { "connections": 1024, "launched": 1024, "duration_s": 20.000, "closed": false, "target_rate": 10000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.002,
  "requests": 199611,
  "bytes": 17765379,
  "achieved_rate": 9979.51,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9980,
  "bytes_per_sec": 888176.37,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 35, "mean": 90.6, "stdev": 684.8, "max": 62431,
    "p50": 69, "p75": 93, "p90": 100, "p99": 116, "p99_9": 928, "p99_99": 39408
  },
  "status_codes": { "1xx": 0, "2xx": 199611, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAnN4nC1RXUhTYRg+33POzjm2zZ+2NfdjWy0b25DDqCgTsT+TqPWrw1KxSIeFEhhddVO2MEJI0IS66CpMYoogdBElIRKjFtiQiKBuiorYxQgpuomes/W9fH/P+z7vrz894ZAk/JHKS/5/i9JnYlRqKZaBVtj8W7qPpC4OPhZpeVn9YL3vzjastE0m1g4W9rxrGz80l1wZGh/OpjKp/ED+bDHxvjlnTEU+hZdjhej81q/BvG+y9tf6p66i/1Zg1fe9dtG15Bipnq6cq5yyz9hz1ZkNr0IPW6/1POlePbPS9bIzd3ymaSz6N5QPZgMjm4uhn8EH3i+usZo5W1EvqLfVZ5YfSlZ+Ia8hg2ksiXmxyJ0WA33JXQfatyePJk+2Dw/2de7b7Y16NzrXOb1Om2pToKo2XVWh67qqQK+GrPCWYG4ZMF/lS1bKQGlVmJACeKBRBUUDXHATlmHhtsIHxKixKFWA3fTF+xg0xdTZEaayjtR67KSKZgjBwGG+GjEqEIGDKo3nVXRQiRriDjIfCeJ1RPaTIKOJQR1UnqJVPbAXAcaoYKhvAnHKDcH3BJj4BUqcBhruCVxmBgY+C/SaddTht6Afug6hh041LIhSOnEGvCkYOYHT5ISZXxU24bnArCAxRNIb04eEZu5eynm24K5gFv2kG6zxukALuvBWQLmE1wK4I7CD0behjc4jzJY9oa9++u6g9wj75iNi4ArOEU0wSswsrZEgm23A7IbMfNwsXiIzTqbZmR7yDP4DWNAIDuEEORUlsdNYo4mHXDfJ5pjIsZSGpyl21lGjWHlaKC5OyMXhh2lkpd5DelVpYjIa8FHHP/RlhBM="
}
[info] CPU 37.6% | Mem 2.4GiB
[info] run 3 wins on score

=== Best: 9980 req/s (CPU: 37.6%, Mem: 2.4GiB) ===
[info] exact CPU: 7.89 core-seconds | 39.541 us/req
=== Fixed-rate: cpu/req 39.54us | p99 116.0us | p99.9 928.0us | rate_ratio 0.9980 ===
[info] saved results/latency-10k/1024/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] skip: ktor-kronos does not subscribe to latency-500k-8cpu

==============================================
=== ktor-kronos / async / 32000c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   25.73ms   16.70ms   18.40ms   222.40ms   699.30ms

  12199249 requests in 10.00s, 12167249 responses
  Throughput: 1.22M req/s
  Bandwidth:  76.57MB/s
  Status codes: 2xx=12167249, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 12167249 / 12167249 responses (100.0%)
[info] CPU 5309.3% | Mem 36.3GiB

[run 2/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   18.42ms   16.70ms   17.90ms   118.10ms   145.20ms

  17266475 requests in 10.00s, 17234475 responses
  Throughput: 1.72M req/s
  Bandwidth:  108.46MB/s
  Status codes: 2xx=17234475, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 17234475 / 17234475 responses (100.0%)
[info] CPU 6232.6% | Mem 36.3GiB

[run 3/3]
gcannon v0.5.3
  Target:    localhost:8080/
  Threads:   64
  Conns:     32000 (500/thread)
  Pipeline:  1
  Req/conn:  unlimited (keep-alive)
  Expected:  200
  Duration:  10s


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   18.84ms   16.80ms   17.80ms   144.00ms   412.10ms

  16867558 requests in 10.00s, 16835558 responses
  Throughput: 1.68M req/s
  Bandwidth:  105.95MB/s
  Status codes: 2xx=16835558, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 16835558 / 16835558 responses (100.0%)
[info] CPU 5863.6% | Mem 42.2GiB

=== Best: 1723447 req/s (CPU: 6232.6%, Mem: 36.3GiB) ===
[info] input BW: 78.89MB/s (avg template: 48 bytes)
[info] saved results/async/32000/ktor-kronos.json
httparena-bench-ktor-kronos
httparena-bench-ktor-kronos
[info] rebuilding site/data/*.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/frameworks.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/results/ktor-kronos.json - 16 new, 16 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant