Skip to content

neton: update to 1.0.0-beta13 - #1465

Open
zoujiaqing wants to merge 2 commits into
MDA2AV:mainfrom
zoujiaqing:neton-beta8
Open

neton: update to 1.0.0-beta13#1465
zoujiaqing wants to merge 2 commits into
MDA2AV:mainfrom
zoujiaqing:neton-beta8

Conversation

@zoujiaqing

Copy link
Copy Markdown
Contributor

Description

Two allocation fixes on the request path, both found in a flame graph of the arena baseline.

  • percentDecode allocated an ArrayList<Byte> and, for every ordinary character, a one-character String and a ByteArray. A query like ?a=3&b=4 went through it four times and nothing in it needs decoding. It now returns the same string when there is nothing to decode.
  • The parsed request-header map was built for every request, because dispatch reads one header on the way in. The block now stays unparsed until something actually needs the whole map; the single lookup scans the raw bytes.

Framework side only — the entry itself is unchanged apart from the version. Locally about +10% on baseline over eight interleaved runs.


PR Commands — comment on this PR to trigger (requires collaborator approval):

Command Description
/benchmark -f <framework> Run every test the framework subscribes to
/benchmark -f <framework> -t <test> Run one test only
/benchmark -f <framework> --save Run and save results (updates the leaderboard on merge)
/benchmark -f <framework> -t <test> --save Run one test and save results
/benchmark -f <framework> --compare <other> Measure the deltas against another framework instead of this one
/benchmark-multiple -f <fw1>,<fw2>,... Benchmark several frameworks in one run — takes -t and --save too; saved results land in a single commit
/benchmark-multiple --save No -f needed: benchmark and save every framework the PR touches
/benchmark-test -t <test> Benchmark all enabled frameworks subscribed to <test> and save the results

For /benchmark, always specify -f <framework>; the flags combine in any order. Results come back as a comment with a per-profile table of RPS, p99, CPU and memory — one table per framework on multi runs. A new benchmark comment while a run is in flight queues behind it (one deep) instead of cancelling it. For multi-framework PRs (dependency bumps, same-language refactors) prefer /benchmark-multiple, which runs everything in a single job and commits all saved results together, so no run overwrites another. --compare works on single-framework runs only.

What the deltas are measured against. By default, this framework's own results published on main - answering "did this change help?". When you are tuning a variant or a successor entry, --compare re-bases them on another entry instead:

/benchmark -f genhttp --compare genhttp-kestrel

The reply states which baseline it used, and profiles the other framework does not run show n/a rather than a delta.


Run benchmarks locally

You can validate and benchmark your framework locally with the lite script — no CPU pinning, fixed connection counts, all load generators run in Docker.

./scripts/validate.sh <framework>
./scripts/benchmark-lite.sh <framework> baseline
./scripts/benchmark-lite.sh --load-threads 4 <framework>

Requirements: Docker Engine on Linux. Load generators (gcannon, h2load, h2load-h3, wrk) are built as self-contained Docker images on first run.

@zoujiaqing

Copy link
Copy Markdown
Contributor Author

/benchmark -f neton --save

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: neton | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 469,635 3954.8% 1.2GiB -38.2% ~0%
pipelined 4096 326,129 4163.6% 1.2GiB -11.4% ~0%
limited-conn 4096 472,239 2731.7% 1.1GiB +1.9% ~0%
baseline-h2c 256 557,034 4714.5% 1.3GiB -3.5% ~0%
baseline-h2c 1024 557,465 4974.3% 1.6GiB +4.6% ~0%
baseline-h2c 4096 507,379 4858.9% 2.2GiB +4.5% ~0%
json-h2c 1024 263,490 4348.3% 1.4GiB +1.9% ~0%
json-h2c 4096 256,451 4240.0% 1.7GiB +4.4% +6.2%
latency-1m 1024 813,146 0.8131 ⚠️ 64.77us 3470336.0us 3550208.0us 5361.8% 1.1GiB +4.1% ~0%
latency-10k 1024 9,767 0.9767 ⚠️ 42.38us 189.0us 13204.0us 41.9% 982MiB +0.5% -3.6%
async 32000 105,310 766.5% 1.4GiB -0.2% ~0%
Full log
  "achieved_rate": 807903.79,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.8079,
  "bytes_per_sec": 94524743.04,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 3863593,
  "latency_us": {
    "min": 50, "mean": 1807613.0, "stdev": 1087196.0, "max": 3866623,
    "p50": 1790464, "p75": 2753536, "p90": 3302400, "p99": 3666944, "p99_9": 3752960, "p99_99": 3804160
  },
  "status_codes": { "1xx": 0, "2xx": 16164169, "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 5435.4% | Mem 1.1GiB
[info] run 2 wins on score

=== Best: 813146 req/s (CPU: 5361.8%, Mem: 1.1GiB) ===
[info] exact CPU: 1053.82 core-seconds | 64.771 us/req
=== Fixed-rate: cpu/req 64.77us | p99 3470336.0us | p99.9 3550208.0us | rate_ratio 0.8131 ===
[warn] offered rate fell short: rate_ratio=0.8131 (target 1000000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-1m/1024/neton.json
httparena-bench-neton
httparena-bench-neton

==============================================
=== neton / 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": 195378,
  "bytes": 22859226,
  "achieved_rate": 9767.40,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9767,
  "bytes_per_sec": 1142785.86,
  "error_rate": 0.000072,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 43, "mean": 109.0, "stdev": 763.3, "max": 36223,
    "p50": 71, "p75": 83, "p90": 104, "p99": 189, "p99_9": 13204, "p99_99": 30168
  },
  "status_codes": { "1xx": 0, "2xx": 195378, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 14, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAA9p4nC1TTWhcVRR+97x77/ubNz95GfImmSQdJxOb2J+krYaiterCWEQUoTVYNMFqrOhCqaAWpUHqKCEEaoLELFxkEQItUqSGMoiEGkJwEVyEUERCFlKiuBCRLlz5nTPzLu/de8/5zne+e+555atzieOYj5zm47ZmJZu5z53TfzcNZ0k7Nh26eEOtqmladWfMV95e2Ghbquw/dvOl7fe2r6x/oTbm1N1rar+uGpduTH4zvnf+7vjaRH185pWNF6fPLD7x58jS0OyR+4NTB+/0z/QtVRoHtnrWy1ud6+nPxZ325WQhmSqsFrbz07md3HfZtXgpXoga4b1gOdjx5r3f7Ka9ZW6bH82/+j9dN7/oZbNmNsyvdt/8YFe8hl20C3bWbpot862pA3Vfr+mb+qr+3V10/6Epd5f2aJN2aQVjT+2qHXVPrau/MG6p21jdUfNqRdXVgppW78yrT9WM+vj9WRhevzgx+e5rX6pXL2Nx+cOxc2OTYy88/fLjJ56aeOTciWPPDB3o7zvUd7C/r+fYkUPp4ANpub2/rac8mObTznJnvi2bhm1pmg3z+bDdz2Szfh5P6IeZTKgzOnRsGGrrh36GrJ+BwdewWK2t1T4s1hImn6y1hjQeh4hncnyN2bds8Agfx2qrXSIEwGYDhpGjIyJDFFCku4BysHGwwqIAo6NzeMGIvUux9ihqgSL5eoQ4T1fpDBWJYuqiYVg/0ANUoUt0mMmIaf9QNEoPgfJRAFwWdAUMJykHXJWuKzpOwHl0FM7vFT1HI3BFVKKfCAFv0ifgBtlb9DYr6UUyaKMHqaSvKeqArBE6DZ8BpYR5SPQsBlIV8SnBG9MFekNEu0IQ08OcM25tq/SZ0ga0BtlhwcmeB1UEkgS6C4AlAFcwB1IaDvTAXEUxa8AdpTmlY7hAohNJABSCugm8OA57TkndYih3MbiSOQTmWEoCNoYkhLodhyfCZhiDMTlxR5hrsJ6FPheKC9QhNezFHCNr3GJlRlcOWBDRntxUR+vWhqmgm/Jj4e6VXNw2OSAqWJ8ng5IOILqLK1iDsSTbig40h3CaAJDDUk0PTQL+XmFhJxtdGAMZCYYj/cRQESF6DE7AuUt4i3xPHpesKlfAt4vPCKcvIb6GN4J7lL5WfMOBFF9zWSJRg8eVLuXrTjRkPIkiGy2nj4QvkvNxRzq6mwVjlUiVjXR3B6EwrkCbN8HGmujiUgWsrUvO4YlGFw2ti3K0kgiqAJvI8R3Zdzc7Hb2kOaKGaMNHD4CPdYm9/FvKL3JScnC/cUtWhSVoZjXSzaeQ7QI3LIJhGsA7Sv8Dp8imDw=="
}
[info] CPU 41.9% | Mem 982MiB

[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.005,
  "requests": 198152,
  "bytes": 23183784,
  "achieved_rate": 9904.91,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9905,
  "bytes_per_sec": 1158874.38,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 46, "mean": 228.2, "stdev": 2222.0, "max": 55199,
    "p50": 71, "p75": 82, "p90": 101, "p99": 192, "p99_9": 41296, "p99_99": 52656
  },
  "status_codes": { "1xx": 0, "2xx": 198152, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABPZ4nDVVTWhdVRA+Z87cc+99L/e9JC+/Jm1MWs1fq2LqT0OrtEiooC5KFX9Aa7DVgit/KOhOn20N1U01SCkYSnERpJRYpAQXUkRCEJESolQoXdQsXJQisYQuxG9mbnNzzzl3zvzPN/P6m6cazmVfOvsL5e7149Rx9+QtI7zCcevLX/mf/DwthPPxv+xMcaFz5b65qWNHbh+d+dhfmPErn/u1k/5i088fvfLmnenFg1enFw5fe2Pp1ZvP//HM+b1zO89OfPvA6bGN4etblwd/GWoOntw8t2m172rPetdsx+X2M21/1+7UZuurxVLto2K5mCvWWjZamsWN4tfiRHGi+kVlPfshvRFX40ZyO1lKbvEaL/IGX+JzfJn/Cb+F9dAMy+Fi+Dms0zdhkS7RWZql72mBrvkZuu5v+h/9ir/ij/l5f86/98Fp3/TvHH77rYMvTB3Y/+L+yX3TBx6devzhp57b+9D9I7t2TI5M7hsa2zE2smtb/8gTQ5vv3TbW39/fNYK3456WnvbWWocsldbWWld7T601q7R2dWGJMatVslihSsyySNwSs+hiRlgcVyJF0Jg4OgIRW8aOY6CMyOFh8MkBXPanhJQpYXZEAZzYHLPc4wxinZURsgklZGpk7SZ8Bkopx4otxYYHEg1qo0EaxcVrRH1UBzmhQ3j76BNP79NLIBW47QXnIfrUC7WgPz3Ru7SHjnvaDd7X6V9Pj0HkM6a/POjDIA3Q756+Jkg66B6E4lHqxLkA5UPse4gegfJRXIxTFSaq9B3h9mncT+B5FpdteAoYqCMCxCPcu2kTJKr43I5L2NxOW+BbL8ip+upwGse3Bl/Hm4M3F+EGHiQvgTLR1EY7cTsIXZAyOw7vAOQfhKcpuCeUNq76j8BSDrG6Ckk8YkBS2qlJk4wSdaOEoZQOxH3QnkK5U8cCVA/gEtxm0TEc09xKYcEWESunuEmpF5qkUlBXUIOlcqnECx7GaUKLmKsLATxQnQhDDjfFGxaftPwATqoIAbNSE4NLULcTiT7RT3FAGSVdTuiq3wJVO0LNcRDcYINsm5ZC6GmZf+VLNCE5HlYAqmRVpaIUKGjADTGm5ooyFjZTVeRc0qY4R8ny0gVNGVRXoxS1KpoLC6eu9/BGUqGsTmvHukrypB4ahXgDDXAzshxj2SahzJE+CTozlI0lnptgLo0lNtGBrEKpUaT5LFRzOYjr0oF16TIObBFTwepZVZitCROtUFJGXxYlB9tA6bdllsW1RBidcqS4DxY/NDY01ZZmgYv8K+gdamoJCoBOYrpUdVBVdYtPEFcmXt2U0qYsViQ0Mjt18xXoAxuXMFSpXByGy51lLFUTE/XwAcHXFRAimZequg2rVIboLDaxZ9gU6U5zTl7mwmrKaoCGZQSqI9KwOAXeIkEB6VUNQydjANYwVln7oSoxqiIbkmKr16YkpBywYMjQV2ZwkHErC2Y01AAMUIhpmyUl4oPl2CaueiqoEKczyEgMxJnRiSuWEeTAICDj1wa5M3XSgGoqVwghuaBEIQPWQdGi2EYginfLhDNHSqAa9vA7ob6Xvx/iI2toUiPOZJVUWQCSGBsTLmoHUKUEnSsr46KsUXFuYJfB66T6yd2GVc1RW0DzJKFmEocMYiuGdVUiNZPWluLKqEus8rnoDDoU71rV+SdIoT6u2++WMwClJdADLq13/wexZZxX"
}
[info] CPU 34.8% | Mem 1.1GiB

[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.006,
  "requests": 198117,
  "bytes": 23179689,
  "achieved_rate": 9902.96,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9903,
  "bytes_per_sec": 1158646.49,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 47, "mean": 288.3, "stdev": 3178.2, "max": 86783,
    "p50": 71, "p75": 80, "p90": 96, "p99": 192, "p99_9": 54736, "p99_99": 85792
  },
  "status_codes": { "1xx": 0, "2xx": 198117, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABXB4nDVWS4hcRRStd+u+eu/169c9PT2TzmRmMg4x3cmYqPnp4ATjKqBx4we/JIIKETEQP7hwobOIMUQQMfEH6iIMQaKLbBRXIqERGUSChCGEGEJw4UaR4EYJg+fceummu+tV3bp17rnn3uqpIye6zhWHXHz5+jexhxPvuD1/x4n9Y2P9xxaTX5KrcklXs7PljdFzt5xeuHzg6itX37rwbnLmw+TYx8nR95LVN5cPf33w24PHX1x9afmFn58/9fTSI6t7f79v6a7F7ce3HJs7MjjaP3/r6ux3M5+sX5kYrlkZvzY67JweGbbOV9+3blRfVMPqVHOlPNk41vio+Ck/kq9kw3AyXEivpP/oYvqfv6hDvewv+R/8qvzqlzFa8hf8+/6aXJej/rosyTlZlrNyRv5IVpK/kivJxeTH5FwyTD5Lvkw+SA4sJq+9fviNB5996oktD9yz+9F75x+e37R979z87Tvv7PfXzc1t2bl7vr9p/Vx/amp0at3UurG1a/prR8c2NVuN0Xys1Ww1G2uaI62G5nmj2QwjYSQPedCRoLnTXJuNlo1DK6iEkGvwKqJclTxIUKdO8Ar49pqqF1UHUzxyPi9gLJqJlxQfr4WmmLBF/qTiVFLMpXCT0rAtBRadaEWbTDqCKScTNkkfC1LKVhnguyuzeJYe3m0sjcuMTGJ3iq0exrtgADgFvrrYz6lSKjkkG+UO21LKq9g0K9+I/JvIn4l8JfJbCuf3y8tYqGRSJ+QhYPg0kc8TeUb2YeM+uKLnCu+t+JSyA08b5e0E/jfA4x55DtM92Sb78RkAr4OTiiFXwvjaAufjAJphzeP3NoKWEsGXFuUMnnownkbwhdGBM+mhg2HbJgeATTr4PM41PqRY2iGbMdUlgV42K4PGE314chWzUmI44CiVSjsGKTWHs8Y1g9tA69QYZEbIKPBipw60hwWYZZzpYmzzTGsKS6B2Bosn9oymrgH1poFpi9VDJLbZJFAZcvqBX5zTVVoTaKoGGBpwpg+HbI5ryCwk2HPW4RRvfmw/SWzjuzDHGUHJwMzI/WSMg7au5iwDgc7y0dFZoZw85ctYIBrNdDyk2gad2g60J3kWLuXkKefUcgnfhB1zCFZ7UHiGt2cIrk5kqbabei6xJ7P8U2swjPL2puAujZQgpVDyhkicEmyb8Nrm0tm5mWVPbKs34KwoDK12UkNj8eNVmIWnYAoTTWkKibmwcuOC5Y5btMizWjIoUwlMiMaA6DTKyQXbryXg+WA+XZ2ayhzyFRtA7u1QBhXrXNuKIOu4Waz0QE6tO7BHgFuNubLTcHxhKQYeI8SCYb4CtcLAU7NMOU4DEzFBY/Iilg36qoiV3oIRRFDsa0QxE8sEM51aJBFaoaHGAOg9ZcJ9rbmYCxNtVHckyFIgpo/IYoXKqZVdWvLMINM48EwXvcTq6OhAzNbdrN1Jk7q7SUYBJ2VtYT8sow04zOX0IJEIx309NtZA0VnUlk9OGQziNzosIXXV1TB97D5lTAR5zGLtN0y+og21LBggo6msxVFGFiyUuBZ1ZtoMSCPukDxQYzhdQpkbnw7dK4udgxREEFTTNjHpMLvTqFKWZpbPRNGSsxDLB7HGoqJ0fH3ppEZwEXthVjNmEnMAMIlBg9UQairBFso7562hvLvaWqfdhY6YEx4RcJPlkHoDkOAFgqDItKNWb87umoL3pIOwjJnMkmd1ZdUUhWgdSdmD2IHvZgpxyeyKNtN2WMfiKNnH6fNJeRzHscnBZME6HSO1O3eCScSpGy0nqW33phLrehqzbxXrrIii1sVucUt+VncIH28QV68FogyOHQBCClGTLsZe3dSKtWtp5Pi3wP8BLob4P5e9m6g="
}
[info] CPU 37.4% | Mem 1.1GiB
[info] run 1 wins on score

=== Best: 9767 req/s (CPU: 41.9%, Mem: 982MiB) ===
[info] exact CPU: 8.28 core-seconds | 42.382 us/req
=== Fixed-rate: cpu/req 42.38us | p99 189.0us | p99.9 13204.0us | rate_ratio 0.9767 ===
[warn] offered rate fell short: rate_ratio=0.9767 (target 10000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-10k/1024/neton.json
httparena-bench-neton
httparena-bench-neton
[info] skip: neton does not subscribe to latency-500k-8cpu

==============================================
=== neton / 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   101.70ms   94.10ms   112.00ms   215.70ms    5.00s

  1085106 requests in 10.00s, 1053106 responses
  Throughput: 105.29K req/s
  Bandwidth:  11.85MB/s
  Status codes: 2xx=1053106, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1053106 / 1053106 responses (100.0%)
  Latency overflow (>5s): 1447
[info] CPU 766.5% | Mem 1.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   279.03ms   261.20ms   424.10ms   440.40ms   443.10ms

  956009 requests in 10.00s, 924009 responses
  Throughput: 92.38K req/s
  Bandwidth:  10.40MB/s
  Status codes: 2xx=924009, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 924009 / 924009 responses (100.0%)
[info] CPU 627.4% | Mem 1.9GiB

[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   293.76ms   254.00ms   419.60ms   425.50ms   613.70ms

  895739 requests in 10.00s, 863739 responses
  Throughput: 86.35K req/s
  Bandwidth:  9.72MB/s
  Status codes: 2xx=863739, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 863739 / 863739 responses (100.0%)
[info] CPU 597.5% | Mem 2.1GiB

=== Best: 105310 req/s (CPU: 766.5%, Mem: 1.4GiB) ===
[info] input BW: 4.82MB/s (avg template: 48 bytes)
[info] saved results/async/32000/neton.json
httparena-bench-neton
httparena-bench-neton
[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/neton.json - 11 new, 11 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@zoujiaqing

Copy link
Copy Markdown
Contributor Author

/benchmark -f neton -t pipelined

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: neton | Test: pipelined

Test Conn RPS CPU Mem Δ RPS Δ Mem
pipelined 4096 380,088 4109.5% 1.2GiB +3.2% ~0%
Full log
[info] available CPUs: 128
[info] framework: neton (neton, Kotlin)
[info] subscribed tests: baseline,limited-conn,pipelined,async,latency-1m,latency-10k,baseline-h2c,json-h2c
[info] building image: httparena-neton
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 1.27kB done
#1 DONE 0.0s

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

#3 [internal] load metadata for docker.io/library/eclipse-temurin:21-jdk
#3 DONE 0.8s

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

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

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

#7 [build 1/8] FROM docker.io/library/eclipse-temurin:21-jdk@sha256:85f00967bcc624fc19fa9c2cf124ea426a5363898e267141726f31f358c2e14b
#7 resolve docker.io/library/eclipse-temurin:21-jdk@sha256:85f00967bcc624fc19fa9c2cf124ea426a5363898e267141726f31f358c2e14b 0.1s done
#7 DONE 0.1s

#8 [build 3/8] COPY gradlew ./
#8 CACHED

#9 [build 6/8] RUN ./gradlew --no-daemon -q dependencies --configuration linuxX64CompileKlibraries 2>/dev/null || true
#9 CACHED

#10 [build 7/8] COPY src ./src
#10 CACHED

#11 [build 8/8] RUN ./gradlew --no-daemon -q linkReleaseExecutableLinuxX64
#11 CACHED

#12 [build 2/8] WORKDIR /app
#12 CACHED

#13 [stage-1 3/4] COPY --from=build /app/build/bin/linuxX64/releaseExecutable/neton-httparena.kexe /app/server
#13 CACHED

#14 [stage-1 2/4] WORKDIR /app
#14 CACHED

#15 [build 4/8] COPY gradle ./gradle
#15 CACHED

#16 [build 5/8] COPY build.gradle.kts settings.gradle.kts gradle.properties ./
#16 CACHED

#17 [stage-1 4/4] COPY config ./config
#17 CACHED

#18 exporting to image
#18 exporting layers done
#18 exporting manifest sha256:afa12754bbcfaf8b46040d4ee631c8b38d6a462b2c076abcc2bd4ee3c54af693 done
#18 exporting config sha256:5f5cacc55535c06b22c7b43ad9e8c8b87b37e87bd479e828d34bf2cd3cde8946 done
#18 exporting attestation manifest sha256:da57e2121d5d3df40b4e738be7f7ef005682d055e98c3a457aa31cecd7bba79a 0.0s done
#18 exporting manifest list sha256:7daadaafaaf13a3ff182d5e91e5172528bbe8251b26778dffb0225153f33deb3
#18 exporting manifest list sha256:7daadaafaaf13a3ff182d5e91e5172528bbe8251b26778dffb0225153f33deb3 0.0s done
#18 naming to docker.io/library/httparena-neton:latest done
#18 unpacking to docker.io/library/httparena-neton:latest done
#18 DONE 0.1s
[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

==============================================
=== neton / pipelined / 4096c (tool=gcannon) ===
==============================================
[info] waiting for server...
[info] server ready

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   54.59ms   12.20ms   100.00ms   522.50ms    3.48s

  1928856 requests in 5.00s, 1868264 responses
  Throughput: 373.52K req/s
  Bandwidth:  42.03MB/s
  Status codes: 2xx=1868264, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1868254 / 1868264 responses (100.0%)
[info] CPU 3595.6% | Mem 1.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   59.35ms   14.10ms   104.60ms   500.70ms    3.77s

  1772654 requests in 5.00s, 1722254 responses
  Throughput: 344.33K req/s
  Bandwidth:  38.75MB/s
  Status codes: 2xx=1722254, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1722232 / 1722254 responses (100.0%)
[info] CPU 4018.4% | Mem 1.2GiB

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


  Thread Stats   Avg      p50      p90      p99    p99.9
    Latency   62.72ms   13.70ms   139.30ms   603.80ms    3.35s

  1957498 requests in 5.00s, 1900441 responses
  Throughput: 379.95K req/s
  Bandwidth:  42.76MB/s
  Status codes: 2xx=1900441, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1900423 / 1900441 responses (100.0%)
[info] CPU 4109.5% | Mem 1.2GiB

=== Best: 380088 req/s (CPU: 4109.5%, Mem: 1.2GiB) ===
[info] saved results/pipelined/4096/neton.json
httparena-bench-neton
httparena-bench-neton
[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/neton.json - 1 new, 11 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@zoujiaqing

Copy link
Copy Markdown
Contributor Author

/benchmark -f neton --save

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: neton | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 386,002 4160.6% 1.2GiB -49.2% ~0%
pipelined 4096 342,092 3186.0% 1.2GiB -7.1% ~0%
limited-conn 4096 475,938 2655.0% 1.1GiB +2.7% ~0%
baseline-h2c 256 588,737 4916.4% 1.2GiB +2.0% -7.7%
baseline-h2c 1024 532,158 4751.0% 1.6GiB -0.2% ~0%
baseline-h2c 4096 516,060 4739.4% 2.3GiB +6.2% +4.5%
json-h2c 1024 253,747 4215.6% 1.3GiB -1.8% -7.1%
json-h2c 4096 247,844 4174.4% 1.7GiB +0.9% +6.2%
latency-1m 1024 728,668 0.7287 ⚠️ 76.35us 5113856.0us 5216256.0us 5724.1% 1.1GiB -6.7% ~0%
latency-10k 1024 9,708 0.9708 ⚠️ 40.53us 195.0us 24232.0us 38.0% 943MiB -0.1% -7.5%
async 32000 102,454 800.2% 1.3GiB -2.9% -7.1%
Full log
  "target_rate_end": 1000000,
  "rate_ratio": 0.7266,
  "bytes_per_sec": 85017367.78,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 5463572,
  "latency_us": {
    "min": 51, "mean": 2546943.1, "stdev": 1607413.2, "max": 5468159,
    "p50": 2470912, "p75": 4011008, "p90": 4737024, "p99": 5199872, "p99_9": 5306368, "p99_99": 5363712
  },
  "status_codes": { "1xx": 0, "2xx": 14538401, "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 5595.1% | Mem 1.2GiB
[info] run 2 wins on score

=== Best: 728668 req/s (CPU: 5724.1%, Mem: 1.1GiB) ===
[info] exact CPU: 1113.08 core-seconds | 76.349 us/req
=== Fixed-rate: cpu/req 76.35us | p99 5113856.0us | p99.9 5216256.0us | rate_ratio 0.7287 ===
[warn] offered rate fell short: rate_ratio=0.7287 (target 1000000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-1m/1024/neton.json
httparena-bench-neton
httparena-bench-neton

==============================================
=== neton / 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.004,
  "requests": 194189,
  "bytes": 22720113,
  "achieved_rate": 9707.67,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9708,
  "bytes_per_sec": 1135796.90,
  "error_rate": 0.000381,
  "max_schedule_lag_us": 106810,
  "latency_us": {
    "min": 44, "mean": 138.7, "stdev": 1371.4, "max": 209279,
    "p50": 71, "p75": 82, "p90": 105, "p99": 195, "p99_9": 24232, "p99_99": 36144
  },
  "status_codes": { "1xx": 0, "2xx": 194189, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 74, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABF14nDVUXWhcVRA+Z87ce/fe3b2b3e1ms5tka7JJk/7EVKMUSU1ipBUV0UK04E8parVUK4hQRVFisTEoFLUh9CGEUEpBkVghqA8hSCkiJfhQfCh5EIkQfAhLKBKK9MFv5q579t57zsycmW++mXM6PrlQNMa/aJKfa36tLi58aka3EsFRMn5cOzZvV+0qbblJ/1LqSma1cL574cDcke3Xb3xwedoufmWnv7R3z9lrZ754484rGy8vnZg/efvVxZe+nfj38J2RSwdm7/9nYGPPrf6lnuvdn3Ut1xqdv1UWyus7Voor+bmWa/Hv8Xx8Ob6a/Ts7E9/MTGdm0tvRWjQbTUaN1K3U+dRksO5P+Q1v2bvqbfKUt+jN+hveN/6f/qZ/JdjyzvorXoM3+Qav8xpGw911N92iW3W36QfXoHVaomWao237h/3VXre/4L1mF+1PdsH+jO+8nbKz9qy9aM98dGrGztlpe/L4+8efe+3Nt957/tiLE6eeeGZsfHxs4vDY+MGD4/eOjI/s37f/gZFd/ff09LTt6a/u29VRq3bX2jpqLW2thbZCa1yttVZrcbXaWthRqEatBfyiQiYTx5koijLkpzJ+3EIxY54iTkWZjGGKjM/km1Tkk4kMM/vMZBgaghXp3Gco8Scfa5/FyoMOP0/MYAKdY0dwpGIsjSwd1hwwNhpOQ0gOOziAQUieGJGI5B2wp7MAGidh1UJ8Gk4snXilvLiAVRmzQcqyx0OUpYcgeRzyry3l6CkaoJ3US2KMUMNqPQrFj5Z2w8cQ5Hvhpp3eoY8tPUuPQTtIf1n6ztLbdJqeRuwuPJ9b6oTVIzryUOURqh07j1IFwep0hEp41+kE4gn4XjwDjG0eIHQibhbiXjoE8TDtRR4lmKaJXiAAED5CfXfh8ehB+pDeBcAsxmm6D5IQoy4EBVyCgxBK6HLQeMpHuxCSRmyJHoKoPigrSMVhPAxJDuZFqvNO4jIW9CSkHg2B1D5ohjXsKAFrSfOFnxDY0hioK9fxzinhCfsOtiGCShqwd8hQ8qtgWSZ2sA2g65RAWmlMpJ5CjDgJknoHqtKaI2JduiQtM6dpQS6MZHWvyAP0DchwslECABoiZpPMNb7GggOgN+DJaQNJICx2J3HRwZKBlE+Ye1S6jqEowraiDDrlImCIPHWgYLCjrIp2ECadKBgwNcpURYXSXKHkEoIHg7qKzSHdX5F0yhAZHiSsjA6BqsUTKElLC01SQIjrya4mACdJSjWLQgoLvzh9ClUYQolKCj1UF/AFvUuOI2EPTlEZk5KklcfjFI84zSZMC69hsx4SUk5wkFRJjpZRTj0WBHA2AHFF8DV7UHf5CcCEdJx1MGsoVWw6BNxmSQN4ybM4l/gajJVbVuxCI2tF0/93CtovmzRRERpuXgLSAEIBhSy9JffAAKkjINNWNTgBmmEX9XGoveKnFWSu6TjJ3WveW3oKgV9vIGKBrya45VR8rg2f73NQ/gfedqhJ"
}
[info] CPU 38.0% | Mem 943MiB

[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.004,
  "requests": 198120,
  "bytes": 23180040,
  "achieved_rate": 9903.79,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9904,
  "bytes_per_sec": 1158742.92,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 44, "mean": 183.0, "stdev": 2036.1, "max": 65503,
    "p50": 71, "p75": 80, "p90": 95, "p99": 165, "p99_9": 39856, "p99_99": 64688
  },
  "status_codes": { "1xx": 0, "2xx": 198120, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABKF4nD1VXWgcVRS+99wzMzszOzsm+5fNdhM3ZbNugya1NFasSaVCi4JEVPJQ1IeCaLQPCiL6FGNJQ8FaqRSUUEIpPgqGIFJKqVCCFIlvRUKRInkIUiH0IYhI8TtnxmZ25p577/n9zk/2nL5QNiY4a7I/l69WNxfOmOmd7GCWqXJ47he7SBt00W3yWX+tsF1cqq2ObR/fPbnx4Q8Ldv1zu/6l/ecLu3nGPvh49d1zby+/s3jqq1O7c9+eXDjx28ylY+emfp+8M/7d2JXe1ui1zrWRtfbu0FLr/uB6/c/qRmWrf6vv3/THdDv5OzmP52J8NV6JvgkvhXeDe8Gt4Hqw6M/7D/gGL/Ntd9XddMvuPt2hy27B7dAtOu/+oFXapOv0M63RCs3Tabz37F27bW/aG/a23bHrdsXO2yU798Enb73x3vMvzL306szM8akjk0cmD48+cWjPoX0TIxOVyr4np2oTQwOPDoyWBkcGB0Zqj/XXapWhaKC/vzhYKdUqkV/yS48Uowi/QqFYKkVR5Ee+X4i4QFzEU4ioxAVTZPa5ZHwuMCiSP2YCjyF9yWDjUbZzusdPSIcDXzbC5nFA2LFcO4pZJITBsFP2mFJoCYWLqAqS+iigKlMDlx5EEqwh3gCUA3OAb1dE1FamDswhdJYphdaMUYRipcDCIfwQYUdNavJeFY1hLqEe1oZ6nxmJ9Su/EB95h8XxhrLv5w7cm8XRyxD9yRIdhS8HcT9G+3GSQrgBSoJqUJteg7mDNE6fWXqcXhe3uQF/PHoWmuVx9KmF2+IOnKf3Ve4p0MMaKfgBW4zbNjR1KQ84wZWg5CmeIFVBqPAlSsWKbVWRhkW/DnEw15UhZNm2wZSj1JfFTIJgBxfjWMVOL/dRcpVoKpzCH2ug3xP8DekVvAegogP2vyzOp+lN7lJL0Q/BidsUmMDAMJa98MdhHQceL4LnGLwUuMX2CQ2+qsxVeg7SIFsaXE/T04WIlMzXFkoDPXoG7wHNoOS3ynJt4Mw0XKqDI8G3jWjqQL6MfQP7GNUmcdQ1Sikz5BhgAhmYbKpmTzxPoFpgTBX4lqJHWR2ZvPxSlZeClkQNS9m0uCoNEetNIATy6KkVD3G7HEXxNGAURhtkS0sTUDyd3yZatymnkpZALWdJFk5E3YejPgg0ERVyG2pLSVd0ACNJfNKjQrD6MqsNWRVM1VdNPwGCRLW3ZRNqB7KEqHAEWh1YUlVm1Ad8YKcuZSd1kOUYAqmIdSSErPkymGJ9mlmFItpyDhl0QYtUPjKSPBSpi26BNRsESLC6XMZFHXJajCqQ+VLHXiaLWKqiBz3FyQPd0kED24zu6GlHM9hb2lEBx5IxnQieOmk4T6h8uZzNOkh4Ei7p+GtiMdIq7DEbNpEgFTkOWGRjsPueloFmT8PAhXKloKQafBZEga/vBCVoEfVGTBEGLW5YmkFT1BCsDARYRkA5A0ViQ8cYQUkz7LSWjRiRAQctOmWJQ5YyQwgmGxqpuIy1Icg6UZhXvgA3jrJvajehN+hXi6MYUEm70EcsxdlV7v8f53s6EnVmO0U9L2fJkPpBD/9PsEx/QZr/A2vLmkA="
}
[info] CPU 33.8% | Mem 1.0GiB

[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.005,
  "requests": 198728,
  "bytes": 23251176,
  "achieved_rate": 9933.73,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9934,
  "bytes_per_sec": 1162245.91,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 45, "mean": 226.2, "stdev": 2241.5, "max": 54527,
    "p50": 70, "p75": 80, "p90": 97, "p99": 178, "p99_9": 39312, "p99_99": 51600
  },
  "status_codes": { "1xx": 0, "2xx": 198728, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABMh4nD1VXWgdVRDeM2f27N7du3dz7801uUlqvCYxNiZYU38SfwhKQCtpJAiKIKi1gWIeFRFEDXLRGqLYVEMIfSh9kFAklCISfZAiEkSklODPiw+lSNGApW+KFvGbORuzd885O2fOzDcz35n0tU/WgyCmwP/ZYjb6cfLdYOq6FzxDQTz+2Ir5zazadrgZnSkvV5d6V8a35i4urL3173tm54S58LFZ+tB8u2iuvLxz7KP5lSOfz7999OLzPz379ZO/zHw5fW3y6t3boxsj54fPD7UHjw9cbl3bt9i31bPbPN043rhcW69tVi/kn+U3Kmez3XS9vJluJudKq8k7pdPxcvxDdNadcdvhVvgXL4Y3+Bve4Uv8KV+yS7zGV+z3ds1+ZVftdTqF929q209onT6gDby75ldz1WybU+Y7s2HWzLJpmzePvfTKq0dfm5058tT0zOwjE7MPTk+MTzx+YOT+28bvHR8cHTkwevvoSPfg4GD3LT21m/s6b+2p9XR0VjpuqlUq5bLriDu7yx1xHFOc9MXOuVqlnFQSjl2MlxxxkCRMzM5SkDjMDvJyOXBEsWy7gJkCggEmrAORYI8iSDkkJ2v5C/AZkZUFYbKwaUWIJ9RNnVj2LeX4thRRnfoLnb1HpCHeEvnTJRrSVYaxjrlOXdgvQSOgKWroahj23jdY3ENz9LPB8KehEwbSOfrC0Ot0kFo4Nk9/GFqgfwz9aOh3Q3fSizjRC9N30CHMA7qOMPbC+ILCa+FsE4bqcD+FrxTPG4BUpX3Q6cL7BD0N+TDRc7SfXiCAO0T3QTelSTySkRaNQZrBSoZzKSRVnGvCn5XEVbGUHFmYy3GkRI9ia4wPw2kqkXMOMDhb10QIxv1YH8b6IHzdBTQNTWlOD8GEhUaIpx8oWphhY47gwurpAUBsAHEXoh8jKIXwbzE+oFmfZHxk0B5WdFVFnDN8sxRCYguKjGARQRRovSWoHDiRZpCgqa5AEQ00Vx1JRIp9qWsJ1c/gMVI5fAAEiFWVDYUjhR5TvkQKENMAAbMkSDL5sOYihX6KVQ6NUF2lGgrkjEGSgIORRm6VnUpOq9kOpVIAwOJTaK0yGHdK0hB2MYk7bgrXldSR6GUkVBaeqnUfXE4wlGmsloeQBRIQulUiJakcFMcsbkO9L3IfIoUN4wzjAlGiVtDQ4cK6omRFrpmVH+yoKJTDTogiBsQ9rpZGFRW0KsmltYKfvL6/j3IQe1avohhEE4jkhrvixuIQC3A0gIy8M6seWRS8BppBom1AEwj8jn3lNTynGWfWDgJ8UofCtugS1/GGLEZ9zP6U9QZS7wMdyimdQp/Pok1YiUpjADInAUqcWt8SIGJimVjzGUqCaa/GOBj8TwCfT/bpUni2aGGaCKeOQE2nkehWw7cx7Giw2o/QPxnKUoREZM4JQSVbaJdoq5p8p8lE/qQ+TqwQmq+WHabQkoV7hdHEx8tKuD2+caJc9u0xBN18v5VyOuGe8/KQZQyUaoFSTIKWujUw91NxKcQBqy2GE9/EgU5LrpwPPbvIN20/6C8oLoQtrqj1tAULORUqq0LmodW9otTR20Kd2EnhfUaLsut/FBsXySCtpfxXKitKcdOUi6TO+n06ZGiIMNMK+wL+By11lrE="
}
[info] CPU 37.6% | Mem 1.1GiB
[info] run 1 wins on score

=== Best: 9708 req/s (CPU: 38.0%, Mem: 943MiB) ===
[info] exact CPU: 7.87 core-seconds | 40.526 us/req
=== Fixed-rate: cpu/req 40.53us | p99 195.0us | p99.9 24232.0us | rate_ratio 0.9708 ===
[warn] offered rate fell short: rate_ratio=0.9708 (target 10000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-10k/1024/neton.json
httparena-bench-neton
httparena-bench-neton
[info] skip: neton does not subscribe to latency-500k-8cpu

==============================================
=== neton / 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   83.11ms   61.30ms   82.80ms   95.80ms    5.00s

  1056544 requests in 10.00s, 1024544 responses
  Throughput: 102.43K req/s
  Bandwidth:  11.53MB/s
  Status codes: 2xx=1024544, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1024544 / 1024544 responses (100.0%)
  Latency overflow (>5s): 2445
[info] CPU 800.2% | Mem 1.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   288.92ms   257.50ms   422.70ms   438.90ms   671.50ms

  872914 requests in 10.00s, 840914 responses
  Throughput: 84.07K req/s
  Bandwidth:  9.46MB/s
  Status codes: 2xx=840914, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 840914 / 840914 responses (100.0%)
  Latency overflow (>5s): 136
[info] CPU 651.0% | Mem 1.9GiB

[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   291.81ms   259.20ms   419.60ms   430.70ms   666.10ms

  882450 requests in 10.00s, 850450 responses
  Throughput: 85.02K req/s
  Bandwidth:  9.57MB/s
  Status codes: 2xx=850450, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 850450 / 850450 responses (100.0%)
  Latency overflow (>5s): 201
[info] CPU 635.3% | Mem 2.1GiB

=== Best: 102454 req/s (CPU: 800.2%, Mem: 1.3GiB) ===
[info] input BW: 4.69MB/s (avg template: 48 bytes)
[info] saved results/async/32000/neton.json
httparena-bench-neton
httparena-bench-neton
[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/neton.json - 11 new, 11 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@zoujiaqing

Copy link
Copy Markdown
Contributor Author

/benchmark -f neton -t baseline

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: neton | Test: baseline

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 4096 627,990 4333.4% 1.2GiB -17.4% ~0%
Full log
[info] available CPUs: 128
[info] framework: neton (neton, Kotlin)
[info] subscribed tests: baseline,limited-conn,pipelined,async,latency-1m,latency-10k,baseline-h2c,json-h2c
[info] building image: httparena-neton
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 1.27kB done
#1 DONE 0.0s

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

#3 [internal] load metadata for docker.io/library/eclipse-temurin:21-jdk
#3 DONE 0.8s

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

#5 [internal] load build context
#5 transferring context: 69.22kB done
#5 DONE 0.1s

#6 [build 1/8] FROM docker.io/library/eclipse-temurin:21-jdk@sha256:85f00967bcc624fc19fa9c2cf124ea426a5363898e267141726f31f358c2e14b
#6 resolve docker.io/library/eclipse-temurin:21-jdk@sha256:85f00967bcc624fc19fa9c2cf124ea426a5363898e267141726f31f358c2e14b 0.1s done
#6 DONE 0.1s

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

#8 [build 3/8] COPY gradlew ./
#8 CACHED

#9 [build 4/8] COPY gradle ./gradle
#9 CACHED

#10 [build 5/8] COPY build.gradle.kts settings.gradle.kts gradle.properties ./
#10 CACHED

#11 [build 8/8] RUN ./gradlew --no-daemon -q linkReleaseExecutableLinuxX64
#11 CACHED

#12 [stage-1 2/4] WORKDIR /app
#12 CACHED

#13 [build 6/8] RUN ./gradlew --no-daemon -q dependencies --configuration linuxX64CompileKlibraries 2>/dev/null || true
#13 CACHED

#14 [build 2/8] WORKDIR /app
#14 CACHED

#15 [build 7/8] COPY src ./src
#15 CACHED

#16 [stage-1 3/4] COPY --from=build /app/build/bin/linuxX64/releaseExecutable/neton-httparena.kexe /app/server
#16 CACHED

#17 [stage-1 4/4] COPY config ./config
#17 CACHED

#18 exporting to image
#18 exporting layers done
#18 exporting manifest sha256:12d22b2ed7798fe8e44af3dc16d88d5b8eba49b08ee2f33cd2a68af59a2a6fce done
#18 exporting config sha256:48622d7b9ebd3867d22a2523763e8a3d72b5ac9d1adae4b634903a603293aee7 0.0s done
#18 exporting attestation manifest sha256:a51e8feaad14dd48abc4d3258f822941e52593fcb19644034cb61af4bd2161e3 0.0s done
#18 exporting manifest list sha256:975f7a25ce8623bd2f59b4798ed4f47bcd169a627ce6ae45bbc850a2e0e45c99
#18 exporting manifest list sha256:975f7a25ce8623bd2f59b4798ed4f47bcd169a627ce6ae45bbc850a2e0e45c99 0.0s done
#18 naming to docker.io/library/httparena-neton:latest done
#18 unpacking to docker.io/library/httparena-neton:latest 0.1s done
#18 DONE 0.2s
[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

==============================================
=== neton / 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   4.49ms   1.15ms   4.63ms   91.70ms   252.40ms

  2266063 requests in 5.00s, 2262402 responses
  Throughput: 452.31K req/s
  Bandwidth:  50.90MB/s
  Status codes: 2xx=2262402, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2262393 / 2262402 responses (100.0%)
  Per-template: 790609,853970,617814
  Per-template-ok: 790609,853970,617814
[info] CPU 3150.8% | Mem 1.2GiB

[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.55ms   1.09ms   3.23ms   22.80ms   170.50ms

  3017873 requests in 5.00s, 3014743 responses
  Throughput: 602.80K req/s
  Bandwidth:  67.84MB/s
  Status codes: 2xx=3014743, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3014717 / 3014743 responses (100.0%)
  Per-template: 995693,1195726,823298
  Per-template-ok: 995693,1195726,823298
[info] CPU 5622.9% | Mem 1.2GiB

[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   1.71ms    886us   1.92ms   12.70ms   153.90ms

  3143345 requests in 5.00s, 3139951 responses
  Throughput: 627.80K req/s
  Bandwidth:  70.65MB/s
  Status codes: 2xx=3139951, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3139943 / 3139951 responses (100.0%)
  Per-template: 1064804,1197889,877250
  Per-template-ok: 1064804,1197889,877250
[info] CPU 4333.4% | Mem 1.2GiB

=== Best: 627990 req/s (CPU: 4333.4%, Mem: 1.2GiB) ===
[info] input BW: 48.51MB/s (avg template: 81 bytes)
[info] saved results/baseline/4096/neton.json
httparena-bench-neton
httparena-bench-neton
[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/neton.json - 1 new, 11 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@zoujiaqing

Copy link
Copy Markdown
Contributor Author

/benchmark -f neton -t baseline

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

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

@zoujiaqing zoujiaqing changed the title neton: update to 1.0.0-beta8 neton: update to 1.0.0-beta10 Sep 7, 2026
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: neton | Test: baseline

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 4096 640,941 4372.6% 1.2GiB -15.7% ~0%
Full log
#20 11.58    Compiling tracing-core v0.1.36
#20 11.58    Compiling rustls-native-certs v0.8.4
#20 11.58    Compiling rustls-pemfile v2.2.0
#20 11.58    Compiling tracing v0.1.44
#20 11.58    Compiling http v1.4.2
#20 11.58    Compiling indexmap v2.14.0
#20 11.58    Compiling syn v2.0.118
#20 11.58    Compiling jobserver v0.1.35
#20 11.58    Compiling socket2 v0.6.4
#20 11.58    Compiling mio v1.2.1
#20 11.58    Compiling cc v1.4.4
#20 11.58    Compiling dashmap v6.2.1
#20 11.58    Compiling http-body v1.0.1
#20 11.58    Compiling http-body-util v0.1.5
#20 11.58    Compiling cmake v0.1.58
#20 11.58    Compiling aws-lc-sys v0.45.0
#20 11.78    Compiling tokio-macros v2.7.0
#20 11.98    Compiling tokio v1.53.1
#20 14.58    Compiling tokio-util v0.7.18
#20 14.88    Compiling h2 v0.4.15
#20 16.68    Compiling hyper v1.11.1
#20 17.68    Compiling hyper-util v0.1.20
#20 26.88    Compiling rustls-webpki v0.103.15
#20 29.58    Compiling tokio-rustls v0.26.4
#20 33.68    Compiling hyper4k v0.6.0 (/opt/hyper4k/lib)
#20 39.58 
#20 39.58 > Task :kmpPartiallyResolvedDependenciesChecker
#20 52.68 
#20 52.68 > Task :hyper4k:cargoBuildLinuxX64
#20 52.68     Finished `release` profile [optimized] target(s) in 43.04s
#20 56.28 
#20 56.28 > Task :hyper4k:cinteropHyper4kLinuxX64
#20 56.28 Kotlin/Native bundle directory /root/.konan/kotlin-native-prebuilt-linux-x86_64-2.4.0 is not empty. Native bundle files will be overwritten.
#20 60.38 Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed only on the first run of the compiler.
#20 60.38 Downloading dependency https://download.jetbrains.com/kotlin/native/x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2.tar.gz to /root/.konan/dependencies/cache/x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2.tar.gz
#20 61.58 Done.
#20 61.58 Extracting dependency: /root/.konan/dependencies/cache/x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2.tar.gz into /root/.konan/dependencies
#20 63.48 Downloading dependency https://download.jetbrains.com/kotlin/native/lldb-4-linux.tar.gz to /root/.konan/dependencies/cache/lldb-4-linux.tar.gz
#20 64.08 Done.
#20 64.08 Extracting dependency: /root/.konan/dependencies/cache/lldb-4-linux.tar.gz into /root/.konan/dependencies
#20 64.88 Downloading dependency https://download.jetbrains.com/kotlin/native/resources/llvm/21-x86_64-linux/llvm-21-x86_64-linux-essentials-116.tar.gz to /root/.konan/dependencies/cache/llvm-21-x86_64-linux-essentials-116.tar.gz
#20 66.58 Done.
#20 66.58 Extracting dependency: /root/.konan/dependencies/cache/llvm-21-x86_64-linux-essentials-116.tar.gz into /root/.konan/dependencies
#20 69.78 Downloading dependency https://download.jetbrains.com/kotlin/native/libffi-3.2.1-2-linux-x86-64.tar.gz to /root/.konan/dependencies/cache/libffi-3.2.1-2-linux-x86-64.tar.gz
#20 69.88 Done.
#20 69.88 Extracting dependency: /root/.konan/dependencies/cache/libffi-3.2.1-2-linux-x86-64.tar.gz into /root/.konan/dependencies
#20 70.08 
#20 70.08 > Task :hyper4k:kmpPartiallyResolvedDependenciesChecker
#20 70.08 > Task :hyper4k:checkKotlinGradlePluginConfigurationErrors SKIPPED
#20 72.08 
#20 72.08 > Task :hyper4k:downloadKotlinNativeDistribution
#20 72.08 Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed only on the first run of the compiler.
#20 72.08 Downloading dependency https://download.jetbrains.com/kotlin/native/aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2.tar.gz to /root/.konan/dependencies/cache/aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2.tar.gz
#20 72.08 Done.
#20 72.08 Extracting dependency: /root/.konan/dependencies/cache/aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2.tar.gz into /root/.konan/dependencies
#20 72.78 Downloading dependency https://download.jetbrains.com/kotlin/native/qemu-aarch64-static-5.1.0-linux-2.tar.gz to /root/.konan/dependencies/cache/qemu-aarch64-static-5.1.0-linux-2.tar.gz
#20 72.88 Done.
#20 72.88 Extracting dependency: /root/.konan/dependencies/cache/qemu-aarch64-static-5.1.0-linux-2.tar.gz into /root/.konan/dependencies
#20 72.98 Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed only on the first run of the compiler.
#20 72.98 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
#20 74.38 Done.
#20 74.38 Extracting dependency: /root/.konan/dependencies/cache/msys2-mingw-w64-x86_64-2.tar.gz into /root/.konan/dependencies
#20 84.38 
#20 84.38 > Task :hyper4k:compileKotlinLinuxX64
#20 84.38 > Task :hyper4k:exportCrossCompilationMetadataForLinuxX64ApiElements
#20 84.78 > Task :checkKotlinGradlePluginConfigurationErrors SKIPPED
#20 87.18 
#20 87.18 > Task :downloadKotlinNativeDistribution
#20 87.18 Kotlin/Native bundle directory /root/.konan/kotlin-native-prebuilt-linux-x86_64-2.4.20-RC3 is not empty. Native bundle files will be overwritten.
#20 97.48 
#20 97.48 > Task :compileKotlinLinuxX64
#20 97.48 w: file:///app/src/nativeMain/kotlin/Main.kt:229:14 This declaration needs opt-in. Its usage should be marked with '@kotlinx.serialization.ExperimentalSerializationApi' or '@OptIn(kotlinx.serialization.ExperimentalSerializationApi::class)'
#20 127.6 
#20 127.6 > Task :linkReleaseExecutableLinuxX64
#20 142.8 
#20 142.8 [Incubating] Problems report is available at: file:///app/build/reports/problems/problems-report.html
#20 142.8 
#20 142.8 BUILD SUCCESSFUL in 2m 22s
#20 142.8 10 actionable tasks: 10 executed
#20 DONE 143.3s

#21 [stage-2 2/4] WORKDIR /app
#21 CACHED

#22 [stage-2 3/4] COPY --from=build /app/build/bin/linuxX64/releaseExecutable/neton-httparena.kexe /app/server
#22 DONE 0.1s

#23 [stage-2 4/4] COPY config ./config
#23 DONE 0.1s

#24 exporting to image
#24 exporting layers
#24 exporting layers 0.5s done
#24 exporting manifest sha256:2b00857e9e590a8b14a49c23d59532aae5ea2b0a8877006593c363b4f5670535 0.0s done
#24 exporting config sha256:b6274b8adaa804f10fc329551b62049017d89f471646f44f4290af3ae384feed 0.0s done
#24 exporting attestation manifest sha256:543ed24a0ab967d2f6081c881b94cc66240d69b11344d965b832a1154474030d 0.0s done
#24 exporting manifest list sha256:f2f92fd09e43041b58d2cc0f16223e0a1bbf090c18fed30444292028243748f0
#24 exporting manifest list sha256:f2f92fd09e43041b58d2cc0f16223e0a1bbf090c18fed30444292028243748f0 0.0s done
#24 naming to docker.io/library/httparena-neton:latest done
#24 unpacking to docker.io/library/httparena-neton:latest
#24 unpacking to docker.io/library/httparena-neton:latest 0.2s done
#24 DONE 0.8s
[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

==============================================
=== neton / 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   2.14ms    855us   2.54ms   16.20ms   140.50ms

  3124271 requests in 5.00s, 3120703 responses
  Throughput: 623.92K req/s
  Bandwidth:  70.21MB/s
  Status codes: 2xx=3120703, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3120694 / 3120703 responses (100.0%)
  Per-template: 1043612,1190927,886155
  Per-template-ok: 1043612,1190927,886155
[info] CPU 3707.4% | Mem 1.2GiB

[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.55ms    962us   2.45ms   20.00ms   220.40ms

  2584019 requests in 5.00s, 2580962 responses
  Throughput: 516.00K req/s
  Bandwidth:  58.07MB/s
  Status codes: 2xx=2580962, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2580935 / 2580962 responses (100.0%)
  Per-template: 846953,951621,782361
  Per-template-ok: 846953,951621,782361
[info] CPU 4546.4% | Mem 1.2GiB

[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   1.55ms    811us   1.78ms   10.50ms   167.90ms

  3208382 requests in 5.00s, 3204706 responses
  Throughput: 640.70K req/s
  Bandwidth:  72.10MB/s
  Status codes: 2xx=3204706, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3204702 / 3204706 responses (100.0%)
  Per-template: 1064154,1210721,929827
  Per-template-ok: 1064154,1210721,929827
[info] CPU 4372.6% | Mem 1.2GiB

=== Best: 640941 req/s (CPU: 4372.6%, Mem: 1.2GiB) ===
[info] input BW: 49.51MB/s (avg template: 81 bytes)
[info] saved results/baseline/4096/neton.json
httparena-bench-neton
httparena-bench-neton
[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/neton.json - 1 new, 11 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@zoujiaqing

Copy link
Copy Markdown
Contributor Author

/benchmark -f neton --save

@zoujiaqing zoujiaqing changed the title neton: update to 1.0.0-beta10 neton: update to 1.0.0-beta11 Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: neton | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 615,732 3406.8% 1.2GiB -19.0% ~0%
pipelined 4096 345,117 3911.2% 1.2GiB -6.3% ~0%
limited-conn 4096 483,458 2615.4% 1.1GiB +4.3% ~0%
baseline-h2c 256 575,520 4816.7% 1.2GiB -0.3% -7.7%
baseline-h2c 1024 537,489 4812.9% 1.6GiB +0.8% ~0%
baseline-h2c 4096 511,223 4880.6% 2.0GiB +5.2% -9.1%
json-h2c 1024 266,720 4372.3% 1.3GiB +3.2% -7.1%
json-h2c 4096 0 5268.8% 1.6GiB -100.0% ~0%
latency-1m 1024 823,422 0.8234 ⚠️ 64.28us 3304448.0us 3378176.0us 5445.4% 1.1GiB +5.4% ~0%
latency-10k 1024 9,614 0.9614 ⚠️ 38.55us 193.0us 29384.0us 35.5% 911MiB -1.1% -10.6%
async 32000 107,129 782.4% 1.5GiB +1.5% +7.1%
Full log
  "achieved_rate": 819309.64,
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.8193,
  "bytes_per_sec": 95859227.54,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 3583507,
  "latency_us": {
    "min": 52, "mean": 1644450.6, "stdev": 1005573.8, "max": 3586047,
    "p50": 1649152, "p75": 2526208, "p90": 3019776, "p99": 3365888, "p99_9": 3447808, "p99_99": 3494912
  },
  "status_codes": { "1xx": 0, "2xx": 16392939, "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 5359.5% | Mem 1.1GiB
[info] run 2 wins on score

=== Best: 823422 req/s (CPU: 5445.4%, Mem: 1.1GiB) ===
[info] exact CPU: 1059.25 core-seconds | 64.281 us/req
=== Fixed-rate: cpu/req 64.28us | p99 3304448.0us | p99.9 3378176.0us | rate_ratio 0.8234 ===
[warn] offered rate fell short: rate_ratio=0.8234 (target 1000000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-1m/1024/neton.json
httparena-bench-neton
httparena-bench-neton

==============================================
=== neton / 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.004,
  "requests": 192318,
  "bytes": 22501206,
  "achieved_rate": 9613.94,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9614,
  "bytes_per_sec": 1124831.00,
  "error_rate": 0.000795,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 42, "mean": 153.9, "stdev": 1470.3, "max": 50271,
    "p50": 71, "p75": 83, "p90": 106, "p99": 193, "p99_9": 29384, "p99_99": 45936
  },
  "status_codes": { "1xx": 0, "2xx": 192318, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 153, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABF94nDVUXWhcRRSeOXdm7s/+3GzWuG5+NsnaNsb8SFvTxqZQEaoSFRRRSa1aFE3xoVaJVYpK1bSWWktppdjgQywiJUiUUHyQUIpUkBpDUVEf8hBCHvOw+GLMQ/E7Z6737s7MOXN+vvnOmds+eb6slFtQ/gmyWYtw/iO1p+EVT5IyiattOzCjj9EKzZo5N5VMp9OtK/1n906PLb569mjjuL50Uq99qNffmj+0OH764Or4pfHVl2b3Lz9zYnTugbXhz7dO9y3edXXLzU1zm2bq1+vHuqZry9WlykbLSvmz5sulc00X0g+Kp9KNwo3iyWIjv56fzP+Qn8nPFhbzq8lK/GV0OfzLfeuW7Kq9atftNbtgf3eTbt7dcotu3X7n1uwNe8s0zJJdMZ/aK+a6aQSNYJ1u0t94Twe/0jxN0Rna0Mt6Af8/9Nf6Gsaf9BX9PVZf6Sl9Ql/QR945oyfee/vo4TcOH5o4+PQpPTGp97346PNH9o3uP/DwK7sfH93x4P277t51b/+24cEdw1sGB7vaW+v1/v5avd5au739jq6k5mrN7bc1FZv5KSaJa24qJlGSd/mic035iDC4hCKDJ0oipyKjHBRkkiSKHJQmAufOUUAwUS4giNjG65xRpLDmEQN2IsW7AWtZhqAI/olinSEr5jKKTWACDiWmRDniQFbUDhI2LXZzbBKQCBhMCqPAlKlAmymmEBtleoqoDeoR2gr1ANYlbOWoj/pML6QQcifGjzWN07v0i4bLj0RP0Cea/tX0vqaLmn7W9JuG0QDB1sLiBeqgOyHm+DDd9Bj1YN5Lj0CdUoVoTLI8i4zfaPpT0xcaCceoCtcy4lixrlILbP/R9BpEduQXu88he4UewipGkhDAOzGndFwjKrveh7i9OFwn5NC0AUUBfw4bGCEqh2UPYgxBOSLk9VAVDBmfmvkkpB+iPfBkXqsw9NRj38QAZvFymABhYs4jrFn4lKB7ExLRTiBgj+348z4ChIbr6YOh8obrHPp8qJPxEVE1v0gpNowOvzBrDC5+4K08U6gRRgleEF8susVXgYQUJwuQMwboWCD67iHxIw/Gd89mOVUBPZYCdwGJOUSJzfl4HQb7MSdk/lA+FwKBKFI5OScrIWYsjCiqGPSC4Tpztm5hkpuuA9avM4Sc4WNZeYVNRUNmO3EVKDV8xNgIAlTP+AOFWeFQrQp7dUsTc0zf/mlGLXpcMavZfcnBpUqmKrIyHmVvljwg1+a9/WUyqeFThYyjRW5PAGd0jjwFklKEWHCjG98IIOseARIKIMv3TqAYHkO5z76ABbmljFxl/L8sRSmQaUEcJj+Vr4LKPCvC8v8BbFYuMwLDDrASOD7zTqkNX7UUsfgWyB3nhuPeYgAGGsZmGKaSfvMcIVgsnyVB4b9B4N3k+DYYtudSBU5lTav8Z8gjZFvesvJpE3bZOSLPpyckltoXMJdFGhAEsbQtRxcCrPDHKua4hXzdSh5U5s7zEK73f2qKqk0="
}
[info] CPU 35.5% | Mem 911MiB

[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.004,
  "requests": 198210,
  "bytes": 23190570,
  "achieved_rate": 9908.35,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9908,
  "bytes_per_sec": 1159277.37,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 44, "mean": 170.0, "stdev": 1668.2, "max": 48511,
    "p50": 70, "p75": 81, "p90": 99, "p99": 169, "p99_9": 30760, "p99_99": 47120
  },
  "status_codes": { "1xx": 0, "2xx": 198210, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABFF4nDVUXWhcVRA+Z87cc//27k+TuE12a9rY1KS2jbE/iZiSYiNVqlURGhXE/mkJQUX6JPiQaogRShWqIKFI9aHEIiJF+hCkLEXig+JDKMWHkodaQhEtQUoJNYjfzN3u3XPv3HNm5nzfzHduffJMizG+YfKfaz6tvpz5yAwv5xOj5DcfPGuv2Ot2mn53N/lmuJIutS31/DNy+7XpE+dO2jsf24lP7NRp+8OknT3x5djVw6uv3zh2+c1rx386NDX66XP3Rn4cOrXr2qNz2y5vubVpvrvRtbjhs8479bO1pbWnqhdbV9YsVi5UPiifK98oXijOFFeze4XJ7Er6azqTLCZTyUy8EC2E8+Gf/rdgNrjLXweL/H2wyhPBHP/HDb7Ks3zbNdx1N+1W6KKbccu0TPO0QJfoPH1Bf9lVe9c27C07Z7+1l+x39rydsJP2/Vl72h579e2XDx058sLBA88eGHp6ZGRw154nB4ce21Ffv3nb4MZNW7o27ljf8WBPT8cD9bX1ele5WEgwWstrfLHQkSTF1kJUKEeFyHuKWhNf9sVyUigkxYiTJPIJR4lPPPkkIs8sgwnDYATkDZHxlP9MBNsRk2GZ1gVYhjBp9JI/h3LHcOoQs1pEgaagWEfAjihDKrx10gD14xnSYTj1U4lqGC/BHqc36F0ahVWj7VhNaT/8KvBJkeMXi1uVTlrqhkcVETWkfIS+svQ8/WHh8yI9QbuphTbQOnqPttLPlp4CmIzeQpoUV4BNU2CknXiUsFMbHaW/LQ0rHAH6jcXcOzAqQN+J4GEaI8DaT3tpH/1r6XNLzyBPAO+akobZqekdYvLC9Oo2LbhneBqOwTjDlRctUL99eA7Aow9vIew+4AlJsDk8x4CrnY5j2wqyjcNOwbQP2B6HXwb87RhtIP6hVGUvQoTnVmBCOAu67UQOhkDhceX3sG7UTcrNwSjJ6jqYCgnODqBbtFJYiLV/eRdDwmrASjiTiRL8hBG4iYBMLgDSdveSLMZyQ6actsBXZlWS3FJsSMJJWE1qBDcRTMypJooVlGQIQUQ2Q1yvYHmFMnaMxaNoX6gFr+pwKEmI9odNMWqLAM5pM4JcxDLBgcodq6i/78fO3ZomQGajXXCKVDPVmi1DnPGSDIkFI+fVNVpfekgFLpQEW6YF0xMQazNioZ6qvkqsIaHWlRWTz2WRHxWtOJBAw/lZw4ykxhkNxBH1dnKW7p9Jp6XMm4QVySggvWIWKeia02QUsfRKwYuJDdnnJ1vzoL8q17xWgRJgr7253+BmZTDRrj2KOYN0KqQcM2wnznBi6XhIFcCVomqcAhIVyaRylJwo5m4Et+dayLScBq8GPa/wTtFqFes1PU5hs0lKWUg1IYlyBbIX0PqRSYW6NMWBgURwxCqGZrDIWz90sdLnpiZJKxzkWJWGRjjysaSTupjm189JbJzr2KBdovSSuA7AlDKLj56M/JOjmVTe/wMEe56j"
}
[info] CPU 34.5% | Mem 1.0GiB

[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.009,
  "requests": 198364,
  "bytes": 23208588,
  "achieved_rate": 9913.88,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9914,
  "bytes_per_sec": 1159923.94,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 45, "mean": 228.5, "stdev": 2322.8, "max": 62015,
    "p50": 69, "p75": 78, "p90": 95, "p99": 180, "p99_9": 42192, "p99_99": 60112
  },
  "status_codes": { "1xx": 0, "2xx": 198364, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABSp4nD1VXWgcVRS+99wzd2Z2Z3azu1m3m02ypmmsTWtLbE3rbwW1qagolYpifRFaEQQrfVB8CpJaK6GEVoqEUEqREkoIxR8EkSDBpz4oljz4JFJKkRIkDyKhFPE75066szNz77nnfvec7/xM/9S5hjHJmgk/V7ytTs6dMvuLlTdK9T1Tdt5O07f0GV/wt9Ibldn2f2OLh6+f+OOkXZuxSxfsDxft5JxdOWUXPlp978o7a0evHbv57uLRpTcvv7p0cPWJHx+ZHru545Ntd7asDH1+/0z3Rme+b7613pxt3qmv1H/p+bT6RWWy8ld+NVvNvsp+Lk+Wz5b+TWbSi8nl+Mv4b3/Jz0Qz0W2+xct82y3yGV53f7rz/I/72t11v2N0xi27Kbfg5t0C3aUrNEtzdInW7VW7bK/Z6/as/cmet3N22h4/9vbxI699fOT1QwdeOXDoxX3jzx58et/oU+Pjo3seG9z5wMObBwd39O/s31IffbCvv+++vt56vXdTqVLq7cs295ay3kpPPSn5JMl6NmWUZFnWk1SSUuIh8PiVMk4I/yzxlJBn9oaYMrwJA+OJYsxj8o6IcEdkEpYVIsMx48GOnGjE2GBEvUwEENHPsYYNHIkslb9IR/CsEtWoCeU2dTgnUReEAWpAtQPALg1BPSJZ69J2Ooy7hlUHiWiluE5bjvEaoW30JNSep18tbaXvLUC3Q/4W1L6x9Ax2xJC36EP6zdIEtMsAbtIHsEsWWyQo75NY+Z3FsEtj9CipVhUYJy2OeJyg18ApbRpWRyNcLei06AWdVTGuCkVjdALgAMAjhyilvUIFpmXaDfUJ6AxBVhZlWY4hHMYzwi3zNhztYAPB0TY9B6IhEOr2KktDuEcwb2EmR7Yw6wJ9l+CJWg0KNVKnwCC3lMsBXIjObipzDSbQy+puBJcGWExwPKRu1IAY6yg4OSJODShyg4ZZg/iQUMZN5VV2ydIujE9b0NTFJQ6+pKHs4knqmYAqTSPCbJNS3oroNSDQpInCMiARFTUcKEZvo2NZEZc7iHMa0CbU/poMRU/VhQAv5Dk9lULaGs21pgyH4Y3CSw7BkhSLguvUEUMeHHBgTyHjgAtC8W5oyHLJeoyFrUiRXTikKkekGiUpCqeuGwVvyxAKHXkFZMWOxAZMqeHLiM1GZmkZOY1RylVN8io4bmjF1Ji1qlgp0xJBwaWgE/UasYiFQalZI7UabCAWeKcXG5ZzHasEqlhluF0LNRyxpmJcUCJaCAEr6WKVV62yugmkSAhXugrnoA7nm0q+rMOuXMWsrgOHNewaOKcEmGDyvaBrLpCa6jWKaiT2sZeGUxJpCDkHJlN5C+U4BS7pSc0AJIZBkIbzhCuhJaQIssV4lo0IKRYTaVksYBLyUAVyVTlwGBfz4BfnMC8EKqfch5wt7BB7vMZS08jLyMgZ4fzQRMWMQJKGTaaw3KMRS1BxqcCpubKHi1YZ8rUrGxs4ejgkDc7l0GRzecQqI3Av7NU0YGVlHt1DIDnknvITKkdbujfBWQrJb/RMH1wLkCFGwSrJnyprC5GlVhEDiUxwz2ixwWo90tzzIKSlFFMiJeclEfRjIdtyuN5UGqshY1uhbMowTssUygF/KLyNNrg4JE9NyQKAUNYoypaorRYb7QLCd1vb14A2wpY6Utb1tGgfamxVYRFkjZumjEriEDmtE/QClqOlhEOIoo3+kYu5XpNCnWcpXqhFoTeZIvtbBatySf+5l55IMv1Ayndh4zNZlA6izfQ/JWyZlQ=="
}
[info] CPU 34.0% | Mem 1.1GiB
[info] run 1 wins on score

=== Best: 9614 req/s (CPU: 35.5%, Mem: 911MiB) ===
[info] exact CPU: 7.41 core-seconds | 38.551 us/req
=== Fixed-rate: cpu/req 38.55us | p99 193.0us | p99.9 29384.0us | rate_ratio 0.9614 ===
[warn] offered rate fell short: rate_ratio=0.9614 (target 10000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-10k/1024/neton.json
httparena-bench-neton
httparena-bench-neton
[info] skip: neton does not subscribe to latency-500k-8cpu

==============================================
=== neton / 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   103.04ms   84.30ms   128.90ms   318.60ms    5.00s

  1098494 requests in 10.00s, 1071294 responses
  Throughput: 107.11K req/s
  Bandwidth:  12.05MB/s
  Status codes: 2xx=1071294, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1071294 / 1071294 responses (100.0%)
  Latency overflow (>5s): 1203
[info] CPU 782.4% | Mem 1.5GiB

[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   143.77ms   134.10ms   238.90ms   250.90ms   252.30ms

  1081153 requests in 10.00s, 1049153 responses
  Throughput: 104.89K req/s
  Bandwidth:  11.80MB/s
  Status codes: 2xx=1049153, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1049153 / 1049153 responses (100.0%)
[info] CPU 678.8% | Mem 1.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   153.37ms   139.40ms   243.70ms   262.60ms   434.00ms

  1091920 requests in 10.00s, 1059920 responses
  Throughput: 105.97K req/s
  Bandwidth:  11.93MB/s
  Status codes: 2xx=1059920, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1059920 / 1059920 responses (100.0%)
[info] CPU 720.3% | Mem 1.8GiB

=== Best: 107129 req/s (CPU: 782.4%, Mem: 1.5GiB) ===
[info] input BW: 4.90MB/s (avg template: 48 bytes)
[info] saved results/async/32000/neton.json
httparena-bench-neton
httparena-bench-neton
[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/neton.json - 11 new, 11 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@zoujiaqing

Copy link
Copy Markdown
Contributor Author

/benchmark -f neton -t baseline

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

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

@zoujiaqing zoujiaqing changed the title neton: update to 1.0.0-beta11 neton: update to 1.0.0-beta12 Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: neton | Test: baseline

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 4096 685,767 4785.8% 1.2GiB -9.8% ~0%
Full log
#12 40.53 |         |         |                   |         |    \--- io.ktor:ktor-network-linuxx64:3.5.0
#12 40.53 |         |         |                   |         |         +--- org.jetbrains.kotlinx:atomicfu:0.32.1 (*)
#12 40.53 |         |         |                   |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 (*)
#12 40.53 |         |         |                   |         |         +--- io.ktor:ktor-utils:3.5.0 (*)
#12 40.53 |         |         |                   |         |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.3.21 -> 2.4.20-RC3
#12 40.53 |         |         |                   |         +--- io.ktor:ktor-utils:3.5.0 (*)
#12 40.53 |         |         |                   |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.3.21 -> 2.4.20-RC3
#12 40.53 |         |         |                   +--- com.ionspin.kotlin:bignum:0.3.10 (*)
#12 40.53 |         |         |                   +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 (*)
#12 40.53 |         |         |                   +--- org.jetbrains.kotlin:kotlin-stdlib:2.3.21 -> 2.4.20-RC3
#12 40.53 |         |         |                   +--- io.ktor:ktor-network:3.5.0 (*)
#12 40.53 |         |         |                   +--- org.jetbrains.kotlinx:kotlinx-io-core:0.9.0 (*)
#12 40.53 |         |         |                   \--- org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.11.0
#12 40.53 |         |         |                        \--- org.jetbrains.kotlinx:kotlinx-serialization-json-io-linuxx64:1.11.0
#12 40.53 |         |         |                             +--- org.jetbrains.kotlin:kotlin-stdlib:2.3.20 -> 2.4.20-RC3
#12 40.53 |         |         |                             +--- org.jetbrains.kotlinx:kotlinx-serialization-core:1.11.0 (*)
#12 40.53 |         |         |                             +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.11.0 (*)
#12 40.53 |         |         |                             \--- org.jetbrains.kotlinx:kotlinx-io-core:0.6.0 -> 0.9.0 (*)
#12 40.53 |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 (*)
#12 40.53 |         |         +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.11.0 (*)
#12 40.53 |         |         \--- org.jetbrains.kotlin:kotlin-reflect:2.4.0
#12 40.53 |         |              \--- org.jetbrains.kotlin:kotlin-stdlib:2.4.0 -> 2.4.20-RC3
#12 40.53 |         +--- com.netonstream:neton-http-hyper4k:1.0.0-beta12
#12 40.53 |         |    \--- com.netonstream:neton-http-hyper4k-linuxx64:1.0.0-beta12
#12 40.53 |         |         +--- com.netonstream:neton-http:1.0.0-beta12 (*)
#12 40.53 |         |         +--- com.netonstream:neton-core:1.0.0-beta12 (*)
#12 40.53 |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:2.4.0 -> 2.4.20-RC3
#12 40.53 |         |         +--- com.netonstream:neton-logging:1.0.0-beta12 (*)
#12 40.53 |         |         +--- com.netonstream:hyper4k:0.7.0
#12 40.53 |         |         |    \--- com.netonstream:hyper4k-linuxx64:0.7.0
#12 40.53 |         |         |         +--- org.jetbrains.kotlin:kotlin-stdlib:2.4.0 -> 2.4.20-RC3
#12 40.53 |         |         |         \--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 (*)
#12 40.53 |         |         +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 (*)
#12 40.53 |         |         \--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.11.0 (*)
#12 40.53 |         +--- com.netonstream:neton-bom:1.0.0-beta12
#12 40.53 |         |    +--- com.netonstream:neton-core:1.0.0-beta12 (c)
#12 40.53 |         |    +--- com.netonstream:neton-http:1.0.0-beta12 (c)
#12 40.53 |         |    +--- com.netonstream:neton-http-hyper4k:1.0.0-beta12 (c)
#12 40.53 |         |    +--- com.netonstream:neton-logging:1.0.0-beta12 (c)
#12 40.53 |         |    +--- com.netonstream:neton-routing:1.0.0-beta12 (c)
#12 40.53 |         |    \--- com.netonstream:neton-redis:1.0.0-beta12 (c)
#12 40.53 |         \--- org.jetbrains.kotlin:kotlin-stdlib:2.4.0 -> 2.4.20-RC3
#12 40.53 +--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0 (*)
#12 40.53 +--- org.jetbrains.kotlinx:kotlinx-serialization-json:1.11.0 (*)
#12 40.53 +--- org.jetbrains.kotlinx:kotlinx-serialization-json-io:1.11.0 (*)
#12 40.53 \--- org.jetbrains.kotlinx:kotlinx-io-core:0.9.0 (*)
#12 40.53 
#12 40.53 (c) - A dependency constraint, not a dependency. The dependency affected by the constraint occurs elsewhere in the tree.
#12 40.53 (*) - Indicates repeated occurrences of a transitive dependency subtree. Gradle expands transitive dependency subtrees only once per project; repeat occurrences only display the root of the subtree, followed by this annotation.
#12 40.53 
#12 40.53 A web-based, searchable dependency report is available by adding the --scan option.
#12 DONE 40.8s

#13 [build 7/8] COPY src ./src
#13 DONE 0.1s

#14 [build 8/8] RUN ./gradlew --no-daemon -q linkReleaseExecutableLinuxX64
#14 22.78 Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed only on the first run of the compiler.
#14 22.78 Downloading dependency https://download.jetbrains.com/kotlin/native/aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2.tar.gz to /root/.konan/dependencies/cache/aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2.tar.gz
#14 23.78 Done.
#14 23.78 Extracting dependency: /root/.konan/dependencies/cache/aarch64-unknown-linux-gnu-gcc-8.3.0-glibc-2.25-kernel-4.9-2.tar.gz into /root/.konan/dependencies
#14 25.68 Downloading dependency https://download.jetbrains.com/kotlin/native/resources/llvm/21-x86_64-linux/llvm-21-x86_64-linux-essentials-116.tar.gz to /root/.konan/dependencies/cache/llvm-21-x86_64-linux-essentials-116.tar.gz
#14 27.48 Done.
#14 27.48 Extracting dependency: /root/.konan/dependencies/cache/llvm-21-x86_64-linux-essentials-116.tar.gz into /root/.konan/dependencies
#14 30.68 Downloading dependency https://download.jetbrains.com/kotlin/native/libffi-3.2.1-2-linux-x86-64.tar.gz to /root/.konan/dependencies/cache/libffi-3.2.1-2-linux-x86-64.tar.gz
#14 30.78 Done.
#14 30.78 Extracting dependency: /root/.konan/dependencies/cache/libffi-3.2.1-2-linux-x86-64.tar.gz into /root/.konan/dependencies
#14 30.78 Downloading dependency https://download.jetbrains.com/kotlin/native/qemu-aarch64-static-5.1.0-linux-2.tar.gz to /root/.konan/dependencies/cache/qemu-aarch64-static-5.1.0-linux-2.tar.gz
#14 30.88 Done.
#14 30.88 Extracting dependency: /root/.konan/dependencies/cache/qemu-aarch64-static-5.1.0-linux-2.tar.gz into /root/.konan/dependencies
#14 30.98 Downloading native dependencies (LLVM, sysroot etc). This is a one-time action performed only on the first run of the compiler.
#14 30.98 Downloading dependency https://download.jetbrains.com/kotlin/native/x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2.tar.gz to /root/.konan/dependencies/cache/x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2.tar.gz
#14 31.88 Done.
#14 31.88 Extracting dependency: /root/.konan/dependencies/cache/x86_64-unknown-linux-gnu-gcc-8.3.0-glibc-2.19-kernel-4.9-2.tar.gz into /root/.konan/dependencies
#14 33.78 Downloading dependency https://download.jetbrains.com/kotlin/native/lldb-4-linux.tar.gz to /root/.konan/dependencies/cache/lldb-4-linux.tar.gz
#14 34.38 Done.
#14 34.38 Extracting dependency: /root/.konan/dependencies/cache/lldb-4-linux.tar.gz into /root/.konan/dependencies
#14 42.88 w: file:///app/src/nativeMain/kotlin/Main.kt:255:14 This declaration needs opt-in. Its usage should be marked with '@kotlinx.serialization.ExperimentalSerializationApi' or '@OptIn(kotlinx.serialization.ExperimentalSerializationApi::class)'
#14 DONE 88.6s

#15 [stage-1 2/4] WORKDIR /app
#15 CACHED

#16 [stage-1 3/4] COPY --from=build /app/build/bin/linuxX64/releaseExecutable/neton-httparena.kexe /app/server
#16 DONE 0.1s

#17 [stage-1 4/4] COPY config ./config
#17 DONE 0.1s

#18 exporting to image
#18 exporting layers
#18 exporting layers 0.5s done
#18 exporting manifest sha256:ce612b473923343b454df350d7289af9090630a08e696fd172e7174ee8a92d43 0.0s done
#18 exporting config sha256:d1553dad99b4b70ef4a381683b58081ca41d8421610b8e110a169bea7258dca2 0.0s done
#18 exporting attestation manifest sha256:8fcf835a6835e26ab4031d0c8dab9cdf6f7bc897502b86746d63eb4390a2627f 0.0s done
#18 exporting manifest list sha256:5ff3003cc2da7f9b4c579eb3a56915585bbbf29dfca6741c91f6c4aa7737dbaa
#18 exporting manifest list sha256:5ff3003cc2da7f9b4c579eb3a56915585bbbf29dfca6741c91f6c4aa7737dbaa 0.0s done
#18 naming to docker.io/library/httparena-neton:latest done
#18 unpacking to docker.io/library/httparena-neton:latest 0.1s done
#18 DONE 0.8s
[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

==============================================
=== neton / 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.01ms    871us   2.81ms   19.50ms   235.30ms

  2566429 requests in 5.00s, 2562711 responses
  Throughput: 512.35K req/s
  Bandwidth:  57.66MB/s
  Status codes: 2xx=2562711, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 2562706 / 2562711 responses (100.0%)
  Per-template: 884700,922531,755475
  Per-template-ok: 884700,922531,755475
[info] CPU 3268.5% | Mem 1.2GiB

[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.00ms   1.02ms   2.47ms   18.10ms   151.10ms

  3431928 requests in 5.00s, 3428836 responses
  Throughput: 685.58K req/s
  Bandwidth:  77.15MB/s
  Status codes: 2xx=3428836, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3428826 / 3428836 responses (100.0%)
  Per-template: 1174954,1254755,999116
  Per-template-ok: 1174954,1254755,999116
[info] CPU 4785.8% | Mem 1.2GiB

[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   1.98ms    941us   2.26ms   14.20ms   174.60ms

  3135203 requests in 5.00s, 3132217 responses
  Throughput: 626.21K req/s
  Bandwidth:  70.46MB/s
  Status codes: 2xx=3131998, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 3131965 / 3132217 responses (100.0%)
  Per-template: 1098872,1126646,906447
  Per-template-ok: 1098872,1126646,906447

  WARNING: 219/3132217 responses (0.0%) had unexpected status (expected 2xx)
[info] CPU 4477.0% | Mem 1.2GiB

=== Best: 685767 req/s (CPU: 4785.8%, Mem: 1.2GiB) ===
[info] input BW: 52.97MB/s (avg template: 81 bytes)
[info] saved results/baseline/4096/neton.json
httparena-bench-neton
httparena-bench-neton
[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/neton.json - 1 new, 11 total
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@zoujiaqing

Copy link
Copy Markdown
Contributor Author

waiting for me push new code ;)

@zoujiaqing

Copy link
Copy Markdown
Contributor Author

/benchmark -f neton --save

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

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

@zoujiaqing zoujiaqing changed the title neton: update to 1.0.0-beta12 neton: update to 1.0.0-beta13 Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: neton | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 858,481 6019.6% 1.1GiB +12.9% -8.3%
pipelined 4096 336,940 3364.7% 1.2GiB -8.5% ~0%
limited-conn 4096 493,348 2698.8% 1.1GiB +6.5% ~0%
json-tls 4096 286,810 6275.5% 1.3GiB NEW NEW
8gbit 512 49,301 0.9860 121.18us 12220.0us 20328.0us 539.4% 1.1GiB NEW NEW
static-tls 1024 380,137 6198.6% 1.2GiB NEW NEW
baseline-h2 256 584,458 4760.3% 1.2GiB NEW NEW
baseline-h2 1024 544,308 5050.2% 1.5GiB NEW NEW
static-h2 256 350,163 5392.6% 1.3GiB NEW NEW
static-h2 1024 267,476 3642.4% 1.4GiB NEW NEW
baseline-h2c 256 584,312 4756.5% 1.3GiB +1.2% ~0%
baseline-h2c 1024 538,751 4798.9% 1.6GiB +1.1% ~0%
baseline-h2c 4096 534,358 4760.9% 2.2GiB +10.0% ~0%
json-h2c 1024 264,714 4403.3% 1.4GiB +2.4% ~0%
json-h2c 4096 0 3730.0% 1.6GiB -100.0% ~0%
latency-1m 1024 848,610 0.8486 ⚠️ 60.46us 2757632.0us 2827264.0us 5267.2% 1.1GiB +8.6% ~0%
latency-10k 1024 9,669 0.9669 ⚠️ 39.16us 176.0us 10396.0us 38.0% 840MiB -0.5% -17.6%
async 32000 108,675 783.5% 1.4GiB +3.0% ~0%
Full log
  "target_rate": 1000000,
  "target_rate_end": 1000000,
  "rate_ratio": 0.8401,
  "bytes_per_sec": 98295381.56,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 3137727,
  "latency_us": {
    "min": 49, "mean": 1452613.8, "stdev": 906271.5, "max": 3139583,
    "p50": 1464832, "p75": 2241536, "p90": 2692096, "p99": 2972672, "p99_9": 3052544, "p99_99": 3099648
  },
  "status_codes": { "1xx": 0, "2xx": 16809448, "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 5236.7% | Mem 1.1GiB
[info] run 2 wins on score

=== Best: 848610 req/s (CPU: 5267.2%, Mem: 1.1GiB) ===
[info] exact CPU: 1026.60 core-seconds | 60.464 us/req
=== Fixed-rate: cpu/req 60.46us | p99 2757632.0us | p99.9 2827264.0us | rate_ratio 0.8486 ===
[warn] offered rate fell short: rate_ratio=0.8486 (target 1000000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-1m/1024/neton.json
httparena-bench-neton
httparena-bench-neton

==============================================
=== neton / 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": 193416,
  "bytes": 22629672,
  "achieved_rate": 9669.31,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9669,
  "bytes_per_sec": 1131308.95,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 44, "mean": 104.9, "stdev": 826.0, "max": 43263,
    "p50": 70, "p75": 80, "p90": 100, "p99": 176, "p99_9": 10396, "p99_99": 38512
  },
  "status_codes": { "1xx": 0, "2xx": 193416, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAA6N4nC1TXWhUVxC+Z+6cs/fu7t2b5O5mza7Jdl1NYkoaqyX2Jya0Vqyxoi3YYBD7Y7SlIEKhlIoPbQlqQ9qmNYRQxIcgpYSy9EFkEVqkSJEiQbCIhD75IEVEgmgeRMRvxtyz52fmfDPnm59dPX468Txb8J59/spuVDh90htaeqYYCfJrXz72xDw2yzTBi+5yeCH3X+uVzt8Hf903+9nVr83UD+butLk7Zc6Om3NH/x2rf3T1w8bH9cN3Dk6MPt49vf3M4M/98y+c7bnUNdP597ortRO185XJ9mul5eJ46+38Xy0LLf83NeK5+FI8G9WjG9nvs/PZxfRCWA+XgpngTDDpnri6rdsbfI0bfJFneY4X+Be+aW/ZO3bJTrhH9oSOOXuP7/MpPo+x6N/yL/iP6AF94y9Tg37D+Ikm6bb5x/xp5k3DXDY3zTlzEXMa8yszY8bNKfPBseNTZv/Y8U/Hht8e+2R0z+jwm+8deGPPu8NvbRzYOPhSd/+GgVf7Bzp7ejZ0l7o71nSsKuVzq3ItLc+tKbWmXWuwuqPkSi6Xy2ebsi6fyzWlKS0fUxAEzrmAOZsOGJvH5Bw7WfAR6+oREwFMOBGx85yFwCL6WY+tHCwFWDOKICdKp3AnIOfLUVSeWhEUFnsKU4Yvvq1YcwxLX5xHVKBmrG2KXM812gx8iqgKRZusLE7W02uwO2loF71CfdQFRDNdN1iq8BMCAXAZ4kH6girAbKOYvqR2GsFUQ5++NfQ8MF24+ZxqRDtgu5W20HeGjgDTSztpOxAWXtpwH2u4cFzgkP4w8NgLzxEMEiAytA6oGHsNuiJGFTQS4jKBmyQipBeBSNgD3xC4BDFxM67aQULcb1F3u8Aho8YxvY/nehXcDtM+SBEi92gISfJgEyr9iHYDH2kmY6wx9OJ1K0jEQJYRTgJNGRThRi53KrciI4t0CPJe4iG8BEo+YimoW6G2GbghuD6iTqUiBWjfgaNNOFVcjCdCzYqFbLWcFk9XgJKyZhC75UiKn+CijCHJCkm6R+oUQSOcfb2vwnFGKZaxS0MUsVShkXgibZ2URin5EoL4bYP6de2nFNQ/GqnNUZgUYCKZl2ZBYH0A7AUlYeKJZUaHkNqElpJWHIFchF1RWAMmtfK0A4oad/NKOXxQ2UESm/Rmoo35kLUJayuJqsBdrJBIE5KsJC9STVH+DIkmgDAlIUrUlwYRoSCyXsfan3gTTeexxJPSQmc0ARkU+Sn6lKEq"
}
[info] CPU 38.0% | Mem 840MiB

[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": 197932,
  "bytes": 23158044,
  "achieved_rate": 9894.90,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9895,
  "bytes_per_sec": 1157703.29,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 46, "mean": 113.0, "stdev": 960.4, "max": 43263,
    "p50": 69, "p75": 79, "p90": 95, "p99": 154, "p99_9": 13804, "p99_99": 41360
  },
  "status_codes": { "1xx": 0, "2xx": 197932, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAA+N4nC1Tb4hUVRR/99zz/s2b996+GXf++Bx2Z2dml1mrXY3ZzAQp+wNRWKGCBZZQRFBE+aUPIuu2TSJlmSIUi1iIpMTiB6Pow9KHkFgkJKQPS4SEiCx96EsWIku/c8a5M3PvPff8zv2d3z1nw/yJsuO43zqDj703G92c+NDZ/vfA8JI39tys+dP06Ve74l4Oj6VLeX/mzp6zB/rvm/lj5vsvzNcLZu24uTlvlg+cev3GK2v7l1/967W5/Uf2XXnh9lMXt12cOTf938bV7tmJtc7v7bnWwuhq46P8TO2b6lr5dKmfXUuPDl1ILyTL8d3kUnw0ni0uRv3o58KtwtXCj+Edf8G/6952++4vfItX+FNe4pv2B77E1+1vGKftop2zV+kGrdJJWqEzdN0coVnq00/mD3PFXDbXzJJZxPjKfGYOvXjw3V3v7Xt615Nvbtm655nHH5veMtOeHBsb3zw5Pf7AZHv0vsna6Pj6Sq1dGW+Prasl64LpodpQUkoqpUplfbGQBEmhVEyCoMRewQuo4FFCXAiCInue43HR8QLP48Ahh4k8fJmJHXwxU8BY4iQg9iw5+DG7njg6gZyHROQSXKz8CQgr693bkcsR0ORjEPkI5eB4GIhhBVjqEE2xWjKqSpSMUjjHtIlGqIuZ6hIQS7g2qYHzhsJzHMA6gqW49tiFV5k20r8GqM8N7YVbDxD6wFAkYRwYqsBncHyLHsHsCrfvDJweoi8NTSCbXNz30g56m94Ajx618F/Fmuq8G0Bh0xpc3gG4i20Tl9bpecCtyNEDwU2a8bPKwMdFsu8o10+M4kYo4xQ8n8CBsCoTUMALv0gFbeI/hOWwgUsEQ1nNogXCxBouhCliMbpQWs/KmlZMosZAuTos8BWeAIWS8oSSiuEsgTOkIw9wP1y7YODDbulhuIpikc4+sY8AFk5whNYunDt4KtSJZVGoJZKIyNBaksf7d1km4dSSS1gwVQ0XsqQGeA9buY80B+EWespdz4W1TynX4ZlLKFYX1FgE9QaIjEWW7Th34f+xQSpNCejgKpzHWOSiGOZUI/vYVLGWBCcwXLZKYqfKkeInFepoPQ1rKWZSuyoCstOa97V6HY1OU9jsRMhhTf9lHLagYw7rO7DthmT/GMSeUjEb0i6+jkyDpAjXABqNlbO0SUPeyJXmCfUmRzlnahM+qV7Q1AccPI2rz6jKy1bZWUXBlLFUSSzLB0XxDClLCM7xCrBD5gzEQzCE0Ohf7eUORg96lllqIJbQls4bSj2lnYJwhH5GbG11jrUwutpCpJQy9NijUEG6Vfp1UL1QFcAYUb1I31LrDfP/bHyUxQ=="
}
[info] CPU 40.9% | Mem 972MiB

[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.008,
  "requests": 198214,
  "bytes": 23191038,
  "achieved_rate": 9906.88,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9907,
  "bytes_per_sec": 1159104.55,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 42, "mean": 213.4, "stdev": 2317.0, "max": 65983,
    "p50": 68, "p75": 77, "p90": 91, "p99": 165, "p99_9": 47024, "p99_99": 62576
  },
  "status_codes": { "1xx": 0, "2xx": 198214, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAABQJ4nDVVTWhcVRS+77z77nv3vZlMxunkbyaZjkmobWKdUGqMtoYKBqQL/1KoirpRiwvdqCtFpYQoGkqxIiUErSiCUIILkVIkVAnBhUsXXZQQShdZSRfiokjwO999ycubd++55+c753z33vbSpYYx2W8m/MXlN+Lk0idm/m4QPC9xno9Mv/hVtBttxZfdWrF8392xK7M7Z/97d/fz6PZqdPO76M6P0dI30a8r0c33L7y18sbym7+fWz53/fWNlzaeu7qwdfKvh3/qrU5deGBt8sr4te5S50Z7c2RvaGXg/IHr9eX6Wm2n72r1l8pGZa/YLG7la/meX/Xr2XZ6Mb3mLrofknv2S3ve/h1vxnvyj3wcb+N3S7bltuxi9C/GO/K13JB1+VTuRPeiP6Iv5Fa0Hv0cXY7+jD74Pvrws+i1t8++srC4+PjiI9NPLDxz4kTv0aO9oYmBid79R6anR6YHjh6caE+MHewNDbVH2v29sXb/kTw/0F+p5JXc9fUPDeS2L7NZJcuc9FvrnMtz57LM9lmHx+TinAgGmRUrxmJojXXG6sQaETGCGVQwFOshiiESq78pRAUUpQ5hFd/EFRjBMtaPJKJfIwXeGrSNzEhX1fjEkNdpPI6nkI58hNkgxi9D+1V5R56G02PQhDCWYWmIjGI2I2guNFryrCKYxOS44OchqBiZx28qc/IktGrw8J54aB6XByHzsDXQg7gL45PSlG8jkSnMxuUpOYWgCYxqgOTlEFwmHAMFk2jaKlx3IFWXZ+Ay1hwfw7riOc1sa1aVT0FehelJmM1jfgjvGeRhVQ3pVFm9WTiaxGwK30EBig6ATgEdQQDaKIro6bxQEFrLDgQNBdWCNMZkFFkAG9zV8cZ4tdAeb1MbZViVBgRAf5g2whZUkc8o86tCRZuh8GehY9kMz2AxgHWon6pZVWyClqeUKC4jSgivOXXLwnVQTHXfgptCgGJGvMVcMSjcBrufQjgumAR6DOJVB5qmYmxIVdmXYrFGYA0yyKtCQmr5QEQNoUKsUA9zRQ4Sw32LPYQgZSJJQES7QQDzDEv4haROcYScsMYKozCeARMuhUVFFKRpiBdTAU4s9Vj0OjEwlvWsbg1UTtk8hdMFe4wiE91SUGiF/RRjhfloxrAapRdTZhuzKg2tC6nn7f4W08BsPrWSkGMwAawUG3J/FYBoZEMLleIJJE08+A/bVNk0SDF9lHse/3WShxyDegxKaX0Tbn98bKhTQkAM54ZD1wq6cA2eDTgnkhJcyuWEJ0hXjYyyz+uhkpZNLkJySNkqsTwzTomlphZNxveEnqpenck1yvrK/klFkGkgv1KI+0WDFMrpEnRCoqFDLhxjioeIJZyF5eYxAWrNap0My8K6Wj3oAnI7G0qelHsusbGmBn3u5Tl2mFU1HNYJMyZDGDBRKmiuh0nbOExU+Zgl7436FNbbqx+rgNFqW+gZbkHpcGhgqVVyOFSjqVmVoTXxFDnOgWomPI50lKCkuniwmvJAmJSS5JoPHtW0xgXnuqC3htHDhnhtIG54bAZhmsFvzNLqjdLSM0WcD1QNulngvFQzwT2k8SBgqnqDSZ1CRghR80BNNUvp4HRIzZZsdR7GSmbDy0GRhHuK7A17wvKkCEwK/CPTErt/XIUtY3gBhr6W3TAl54vyvvN8w/2mHwQeLvevemlqwHCA1njAoqS6B17gNgdkq0SR/wHmb5SY"
}
[info] CPU 32.9% | Mem 980MiB
[info] run 1 wins on score

=== Best: 9669 req/s (CPU: 38.0%, Mem: 840MiB) ===
[info] exact CPU: 7.57 core-seconds | 39.159 us/req
=== Fixed-rate: cpu/req 39.16us | p99 176.0us | p99.9 10396.0us | rate_ratio 0.9669 ===
[warn] offered rate fell short: rate_ratio=0.9669 (target 10000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-10k/1024/neton.json
httparena-bench-neton
httparena-bench-neton
[info] skip: neton does not subscribe to latency-500k-8cpu

==============================================
=== neton / 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   76.75ms   66.70ms   80.30ms   87.30ms    5.00s

  1118754 requests in 10.00s, 1086754 responses
  Throughput: 108.65K req/s
  Bandwidth:  12.23MB/s
  Status codes: 2xx=1086754, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 1086754 / 1086754 responses (100.0%)
  Latency overflow (>5s): 1620
[info] CPU 783.5% | Mem 1.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   284.73ms   257.10ms   417.50ms   432.40ms   621.50ms

  890479 requests in 10.00s, 858479 responses
  Throughput: 85.83K req/s
  Bandwidth:  9.66MB/s
  Status codes: 2xx=858479, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 858479 / 858479 responses (100.0%)
  Latency overflow (>5s): 225
[info] CPU 608.2% | Mem 1.8GiB

[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   272.43ms   254.50ms   410.20ms   429.90ms   455.40ms

  911399 requests in 10.00s, 879399 responses
  Throughput: 87.92K req/s
  Bandwidth:  9.89MB/s
  Status codes: 2xx=879399, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 879399 / 879399 responses (100.0%)
[info] CPU 597.4% | Mem 2.1GiB

=== Best: 108675 req/s (CPU: 783.5%, Mem: 1.4GiB) ===
[info] input BW: 4.97MB/s (avg template: 48 bytes)
[info] saved results/async/32000/neton.json
httparena-bench-neton
httparena-bench-neton
[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/neton.json - 18 new, 18 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