Skip to content

update fib: solve the problem of low CPU utilization and optimize performance. - #1531

Merged
MDA2AV merged 6 commits into
MDA2AV:mainfrom
lesismal:main
Oct 8, 2026
Merged

MDA2AV merged 6 commits into
MDA2AV:mainfrom
lesismal:main

Conversation

@lesismal

@lesismal lesismal commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Description


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.

lesismal and others added 4 commits October 7, 2026 15:02
All three entries move to fib a241ac2 and run under its prefork package:
a master starts a child for every two CPUs, each with two Ps and a heap
of its own, and the children share the ports through SO_REUSEPORT. On 64
CPUs one process spent much of its time in the collector and on the heap
lock; prefork took baseline from 2.79M to 3.48M req/s, limited-conn from
1.63M to 2.66M and async from 1.61M to 1.93M, and latency-1m from 34 to
28 cores.

fib and fib-tuned serve /static through fib's FileCache, which keeps the
files and their pre-compressed twins in memory and follows the disk
through an inotify watch (static-tls 0.74M -> 1.19M). The pg pool is
split between the children. fib-tuned runs with GOGC=200, encodes JSON
with sonic, and drops the settings prefork makes redundant.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…RPC; update to fddcb68

fib and fib-tuned route their requests through fib's Router (chi's API
with fib's handlers), reading path parameters with Context.Param, and
answer JSON through Context.JSON, encoding/json's encoding in fib and
sonic's in fib-tuned through fib's JSONEncoder, so both now declare the
routing and response completeness axes. Context.JSON reuses its buffer
on HTTP/1: json-tls went from 877k to 983k requests a second on 64 CPUs
in fib and from 1.57M to 1.77M in fib-tuned.

Both subscribe to unary-grpc and unary-grpc-tls: BenchmarkService,
generated by protoc-gen-go and protoc-gen-go-grpc with its imports
pointed at fib's grpc package and google.golang.org/protobuf messages,
is served by fib's grpc.Server through the router, so gRPC shares 8080
(h2c) and 8443 (h2 over TLS) with HTTP. On 64 CPUs unary-grpc served
7.89M calls a second (fib-tuned 8.14M) and unary-grpc-tls 5.56M.
validate.sh: 116 passed, 0 failed, 1 skipped (HTTP/3, no h2load-h3).

All three entries move to fib fddcb68.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@lesismal

lesismal commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

After the last submission, the CPU utilization of fib on the HTTPArena 3995WX server remained low, but it performed well on my local 8-core and 16-core devices. I didn't reproduce the low CPU utilization issue on hardware with lower core counts.

Recently, we reproduced the issue on a 5995wx server, resolving the low CPU utilization problem and making further optimizations.

This PR aims to show the latest results. Thank you!

@MDA2AV

MDA2AV commented Oct 7, 2026

Copy link
Copy Markdown
Owner

/benchmark --save

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: fib | Test: all tests

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 3,237,664 — — — — 6512.5% 285MiB +198.6% +31.9%
pipelined 4096 20,944,707 — — — — 6229.1% 284MiB +353.9% -5.0%
limited-conn 4096 2,611,559 — — — — 5945.0% 304MiB +482.3% +300.0%
json-comp 4096 301,641 — — — — 6198.1% 514MiB +76.3% +25.7%
json-comp 16384 298,465 — — — — 6361.2% 1.2GiB +68.3% +63.2%
json-tls 4096 783,617 — — — — 6406.9% 377MiB +120.9% +11.5%
8gbit 512 49,316 0.9863 54.85us 118.0us 1777.0us 282.5% 246MiB +0.8% +161.7%
static-tls 1024 1,235,383 — — — — 5749.2% 336MiB +358.9% +68.0%
async-db 1024 195,248 — — — — 4401.2% 376MiB +138.5% +141.0%
baseline-h2 256 5,593,722 — — — — 2267.0% 517MiB +721.9% +161.1%
baseline-h2 1024 5,602,607 — — — — 2472.8% 807MiB +600.6% +89.0%
static-h2 256 958,042 — — — — 6279.6% 681MiB +845.8% +125.5%
static-h2 1024 942,829 — — — — 6213.7% 1.7GiB +579.7% +92.4%
baseline-h2c 256 12,946,069 — — — — 4677.4% 419MiB +1829.3% +136.7%
baseline-h2c 1024 14,374,463 — — — — 5830.1% 648MiB +1693.7% +108.4%
baseline-h2c 4096 12,345,841 — — — — 5158.3% 1.5GiB +1111.4% +161.2%
json-h2c 1024 1,108,383 — — — — 6106.4% 882MiB +288.7% +149.9%
json-h2c 4096 1,125,156 — — — — 6109.0% 2.3GiB +233.5% +259.6%
baseline-h3 64 5,935,558 — — — — 3456.5% 444MiB +725.8% +279.5%
static-h3 64 756,329 — — — — 4622.2% 1.0GiB +1942.2% +239.1%
unary-grpc 256 6,245,977 — — — — 5330.5% 597MiB NEW NEW
unary-grpc 1024 6,301,509 — — — — 6222.2% 1.1GiB NEW NEW
unary-grpc-tls 256 4,249,788 — — — — 3590.1% 564MiB NEW NEW
unary-grpc-tls 1024 4,179,370 — — — — 3606.8% 1021MiB NEW NEW
latency-1m 1024 998,208 0.9982 30.51us 196.0us 1384.0us 3449.6% 259MiB +4.8% +89.1%
latency-10k 1024 9,983 0.9983 45.17us 103.0us 221.0us 44.9% 201MiB ~0% +318.8%
latency-500k-8cpu 1024 446,828 0.8937 ⚠️ 17.73us 2393088.0us 2567168.0us 790.2% 48MiB +31.9% -14.3%
async 32000 1,805,436 — — — — 5556.8% 1.5GiB +73.9% +176.8%
Full log
  "duration_s": 20.002,
  "requests": 199683,
  "bytes": 20367666,
  "achieved_rate": 9983.05,
  "target_rate": 10000,
  "target_rate_end": 10000,
  "rate_ratio": 0.9983,
  "bytes_per_sec": 1018270.80,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 0,
  "latency_us": {
    "min": 37, "mean": 74.1, "stdev": 407.9, "max": 27103,
    "p50": 63, "p75": 69, "p90": 77, "p99": 103, "p99_9": 221, "p99_99": 23304
  },
  "status_codes": { "1xx": 0, "2xx": 199683, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAAAht4nDVQTWgTURDe+d7b3djNJm1i08SmjRKqxCK2iKRSatWDkkORgL+oUFEPIlREFAXRINFq66G0RVMpKiIeRIP0IKUU8STiUUQ89Ch6EGzAUEKI4reJfY83f9/M92Ymnp8KGwbuGI2j/mupO1OjxmCpEcjAH9k1nJMxeSdlKeKvqpgl/2R8Pr1ysDry/VolJ8W81HJy/3ohL3Njsjgj3x5JbVa+TMvsuDy7MnH29bFSdjJT2lva83nnQl+5Zyl1O/mrYyX6Yu1CqNr8JFhw8+5XZ6Lpo++l/cmatm5aRWvJvGeW9RtdUx9URb1VVVTwHHN4ioeYl/dSkOOXR44Mnz50oK9n4+bouvWdnc3RuD9iRaKhUKApENA+HyzLgE/zwNDa0oCmNnwKMHhBbVLQIuAJmjRUHSWotLVqETV0Cx3TC69mKGTQiy0Ig2I/YjR246egDYMYwCk4cHESo4JWdOCW4LHgPB4A5xhfNnEVv21cxIxgGy7hrrA8TSIH3QiSO0nKC9iAccEfRYIEaZKwqWM4g31E2tiF7f1t4jDLYix0CCmWJ9gYnS6cAMt66W9iznYMEY2hHVnWDMDrrQtH2Y7JlyWu+FKU7SRPAlupFAOvFH5oLAuZhtik91cCaKHRWk90tcsVpbWNfvZlky5IwjSftyuXk3UzlsIO1oQ5borzqMZmHQI20/sJYU39ktvbtFNHb3DJLv4Bg+Bt6Q=="
}
[info] CPU 44.9% | Mem 201MiB
[info] run 3 wins on score

=== Best: 9983 req/s (CPU: 44.9%, Mem: 201MiB) ===
[info] exact CPU: 9.02 core-seconds | 45.171 us/req
=== Fixed-rate: cpu/req 45.17us | p99 103.0us | p99.9 221.0us | rate_ratio 0.9983 ===
[info] saved results/latency-10k/1024/fib.json
httparena-bench-fib
httparena-bench-fib

==============================================
=== fib / latency-500k-8cpu / 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": 500000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.005,
  "requests": 8854668,
  "bytes": 903176136,
  "achieved_rate": 442627.97,
  "target_rate": 500000,
  "target_rate_end": 500000,
  "rate_ratio": 0.8853,
  "bytes_per_sec": 45148052.77,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 3478125,
  "latency_us": {
    "min": 42, "mean": 1136076.9, "stdev": 820206.8, "max": 3481599,
    "p50": 948480, "p75": 1602048, "p90": 2491392, "p99": 3091456, "p99_9": 3271680, "p99_99": 3372032
  },
  "status_codes": { "1xx": 0, "2xx": 8854668, "3xx": 0, "4xx": 0, "5xx": 0 },
  "errors": { "connect": 0, "read": 0, "write": 0, "timeout": 0, "deadline": 0, "non_2xx_3xx": 0 },
  "latency_histogram": "HISTFAAALvJ4nDV7b2ha67pnXdXsuJKTE5cramyapslyaRL/xXZnp2l3d09PT09Pd2+n7Ls5s7kchpk7w+UwHO63gfkwH0S8jiMi4hURR0TEEREJQYJIEJEgQUIQCZJxQggiIiISREREROb3ru5b63K97/v8/T2/51lpmqzZ/1X+4MGbf3nw9c/DXz9FwuJf/+eDH/pfN/6eklLfUHPz8w/mF+fmxXO0eHFxbm5ufomem5+j5ihKPCcWi7GBO4qaE1PzDymxmHpAPcD+Q5yTPw/JGi/YwvUbvMgn2RY/pMguFt9QT6nfUo+oXUpCyXG3gM1VSkNtUf+J+j8PqX+hqf9FUf/3IfUD9Z+p/yb+lvod9SfqGUz8PxH1v0WQXYAWln8P1X9PyajfwMwPeD+gvsPObylqG7ePscDeC0oqfoLFC8gtUFoomsQL1Aq1KpYggIdiKc4eIpwncLCCwJQURJ4IiiuUcPKY+q34KSJfwOljsiWhoIk/OCehSxA2Cek3uP5GSFiGACBKtp8IeDzE6xt8SsTk8+vfBxADGmIBHmIFWBLcpLiZJ6BosZATyd/iRvyrhW8Ee0RavPqraRkCIfpC8R4IMBCpla+ofyNsUILkA+JMTu4hKhYSWsWtRPD5UKwh8iQq6IhJCg//rZrEHrakxDEMiYUP4QAozi98LekDARpBQfw11AcCHYhbgRAkHjH5+zUXlOHhPKGEBLaJQWj9alhIQ/BOLYjJSjgXwvh6+yvFvpl7KH4I1IA7AVWIgCz/LW4BUkSNDzFZId6FX81jR0xsyebIhpjECJGvcmIhUSHGh1/9iv8tga/4SyiBy7AiFpR/herhHElELPgXNOaE3vi1KnO/FmGO2IbUnADlAvW1mgJYQgToNDGJh6Ln5sQ0lOaFWH/NAu1HGg3n+EQzEpWHOJ77amGOhjxpxznSoYhATJN7WBLDzNwDIv+AmqeEFbVIfTU1j2BoIkbU5og7IVviXsAEZsX0Q4rYwVyArvAHEZBgyEsM9QdC1PPzpMDIDUfCuKDIiMCtkMDXUGCDCIkFTEgcQskoASDBrfjBPJGeF88/+OoStufn5rCgyBVr4DKPoLD9gGyRUOYRA8lsjpRknn4AKISkiFfifV4YXgQvIXQhHjLR5skcIwNMTNawJ6A19yvsc8TkV+RJiMLNA5rYmidJEYvwM0cQFOKliRqQFZO60ciDeBPTNKISk/gIenMC5sCMHAqBCGFRAviE72JSAPEcGb44gXEsYZdAQBETYvrX8AUywA0BAgfzZGrjEOObFIloC5gSckNZPD8vBPM1/QdfKwLnywJd5oQkQARc5knlCYZzhI4PECkRoCmytSgUGxYeLMLwIg2reDwICEMV94tfnZDqz5NHBU0v4vGxOLdMCVHOz4NMQiFI+RdJXSghWKQ1T2owR/BALEIPwCNIME9KTcG1eFksEOMBiZGaYxCI+CsHBaDm5xdpYnD+wSJ5IJGeEDhHDAqPMIQ3T0CmScwCIQWHZIV78pwTLwosWhQvC/CRAhKGzAvkn5tHMkJ5BY/Aal68hOAX52nydESDLRJ6P6BpUj1idZ74hWmwc17QAl6LBF7YmUe+zLx4eV7NLi6zS8tLCmaeZtTLuC6qlhTrSwrcLM7RrEqxTDMswyzR84q1ZRwy8wytWlYwKkahUi8vMvQyDKgY3DFz7NLSIq1YWlukmcV5joFVxcaigmWXVdzy3OISq9hklzbVatUizaoXFesqehnSywxDK1RL64o1hKJgFmmaUalZBate3lAtL6mXxOzGEqtaXltbVq3RcKVWq5dZxRK7wbKL7OKSGpGsz0OaWVIpWOjCB61e2lheVi2yyyxRo4nDJXZ5idlgN9SKNYZVKNbZNdXS2oaKpVVry8tqRlBdZxkVnKjWltbUCjWzzrEEE7VOsa5Tc6xiTQV81jZZlsEhx28usjpkDRh0SyqGOFaol5GkenNNBT+Mek3BLq9xrJrZVK1vqNQqBb++xqpp9frGJlZqOFPz6+sb66p11dq+em1ZwavXdNyaCikp2E3FGr+2sYFA1tYY/drGJq9f45H95trmxoZ6Q6He2GDWsWQVCJDjFHpuneHUG8wSY1EpNhh+B3uqTf0mp17b5DfUyzynU21usrp1DsBurqmZNT2uRtWa+XBDv8bpNoHFmpHb4Iw7Owr1jk6hW1s38ir9+o5qfUmtZjcUen5jn1dzB/qdzY119RpSQvBq8+aOEXkpNp4fmC2M+ZDj1vnNV2bOaARq6/vrRvOGak2v2DHv6LiNg1dmfoNft3D7vGV/bYfX7eh3zNy6xcw/5zYQwsaOXn+gNz5/zxl1OovR/PrgucVsNB5Y1l4fcjrdBn/wwfwaV4ter3ulP9zXHb427uiNlo/6nfeWHW7/UK/ff3dgMe6rucPnh2bdwXMjf/CW2z94c2A+2DG/Ozy0mJ+/3nx+cPjq9euDd6+fv7e8PTj4oLfsv+LfHPyF28H+21/evXr++v3rN5ZXHyzcpzcf3+3o31o+v337/N0/vNvfebX/6fD9hw87B6/fvfr06s3P+x8+vX11YPl8+Ort5zdfzG/2P7z9cLj//vU/fty3/PzlE/5a3n15++rtu58+f/zy+c9//unNL68OXj3/9Ordl88/vX///sOXN5af//Hzx09vXu//8tO7X15/+Meffvrl/bu/vP/py4ePH758PPj87vDnt+9+/vT5y/6rDx/+/OnzL59e/9MvX778859//umL5cPffn7z/tWXNzD0Zf/Tf//8/uP7X37+5cPbf3rz6c2fP7179+bwr5/ffvrpn//pl5/++tPf/vrmpw8f/vJf/uvf/uHLf3j36cunLzZRAq+cqCgKi0qimOhKlBblRUeiU9EZ1mXsHItqWN9jPyaqYi8jimC/KrqEbE4UxDuJd1R0ISqIsqJbSBNLVdE57Pixd4HdI5znYSEDPzHs5HCaFsWxKuHuBj4y2Ctgh0he4+4EPgrYa+COWCkId3W88tA5hY0TIaqaaCB4Iu9rrC5h60JUwaqOGCp4TxBnC6s7UUrUxs4NbDmosqgPTZJPTdTD+S0sXOC+ibwL2Cni1cOKrFuiLt4tRNASTSF5j7sx7FyIhqIZJO7hoyOyUTN4t1IdnFZxcgPJvshNXeF8BO8dkZO6h/61KEh1YXsArRpkR7h3UCORl7oW7Axh10s1RR7KTjnwDlBe6oTqQ2YGey7KQ4Ww6sHSHWSt1BgnDspH3YmilJUKU1VoxqkYNcR6LLJTSdgYw6ebGoj8eIdhz0cdUzYqTUWoIN4BqgjbPcQaxzoKG2e4RvA5BWIhxJKgnHgF4ScKbXI6gucAbIZwb6dc0IxDYgafPnguQtJLJfC2wXYbuw7ITkVJXD3wHcC6AA8hnAeoKnVOHSFiJ1Y3Ip9gNw+7AdgbAosyVcc1BM1L2CxQt1QOPmJAJUTVRCeQjOHuWNBwI7IUanCOPS+VwToteAgBgxPKD58j0TFQSECa4OSgCM5+IfM6InAhkhx0RsDqBNIRoQIzVNcvoJZDDU8pkvsIeF2LItCJQZ5UJEP1EKeDSiE6km0EJxGhXh7EkoKlIKLwQ/sIfhK/5ndCTcAiF2S/SgbgZyYKUIRXM9SWyNuoW0gMkdkYvAlgx0ERDVLRI8g3sWuDlFWwlUE0VpxmKcK4Nl4z8MoKj/fgjAea97A7Bs+c8JfEm/CS9EAQMeYo4oEg4aUI31xCVoT7RGuAnTq4HUB+HjDEJ0Q8xllRiOZE0Ixjh8TSR35nQMYJW6QyDawJZwlPpkJMhBd21CuFOEaiLORqwpkdu3HYryGmOnLrC9z1wldIqAphtgMZEx5PcF+ERAinAUQwgF2PYDcpVIJ0RRhyJDuCS1DQTAGPmSgNbS9ibgDBGPrSCctu6DZFpC+SyN0FFpG3F75cAqsIql3kUQNX67AxExH2ZQV7YaECfsiTvh0h8q+dkkDcAyBBkA0I/PEiPxvw6+G8hSxnmAQj0RnOCCtvMAuGQHgsIoyMgQVe5OSHtRm4GwZ7e/DqRi6khk7sDwUORaFNOsiJeZCiCO59WE0jcjfs5IGcS+hAwji7UD03MJrCvw33DkiTqpLYhiIyC47RfWQi3CEn0s8OZDYWEY+kFm3gYIWdKJDLwjLppjBi8uDVB64F5EwYHBImGIkxiD0n/LqF3idMcAj9cId8A8JcmAgzbgIkR7DupU5xOhAY0EPuZDJY4c8PL2HU8BYSSdgjzLHCy0xEeOkRKh6CrgdRRyDthA0f1kTTRpWQA6lCGusQfJ0IEyAMSYIi4asDjEpCaiZUjGTrgu0BMiA5RpFFAjqky0eiOGxkYSUkMOxYqGtflBNmY1zoI1K7ErwlBSTDuCdzMC1w6gRxhLA/Bv9cuMtRd9SNMG2jgp8TyJHJQ/TJjLVTfYrMavuvkzqOEzvOHJDMAJ0M4spDLiysSZ2D4AXBKAfpDKxnIUGwHkLCJx6L8+Ky+BjvNO5a4izeefGF+ARXqziJz6K4JD6DRE98g/Wt2CY5FtfFGXEOUlHoTSBRhDSRq4i94g72b8V2CdlrPCyIU5B1SCYP4+Ih7FRgv4XzuvgacjfQT2DvFFp16A8fNsQF7J/ivim+FN+JG+Ku+ApSHegExOfwcgrNGk57iCAO3ap4gJ1TnF2K+2I3TgqQPRY7YfkcelnY80OuKdg4gveSOC4pY/cKOxnst5FlCUiMxf2HJayckpw4JrmEvQuxR1LBfQ17V+IR9G8QRUASk0Sh0xGHJRnsjaATkFThd4Ro3ZIZznKQbyHuoGQAu23IzsQ+yQ08NwQ0B+J7sVUyRgZnQNCKky783fxqieCfg95AfCZxwFsTMnfQjUkIckOcIj/Bml3ilVzgvoJIXZKQpA3EesCkJJ4i8z6QKaMWXWg5JSXYq8PHEC+fpA+P91iVUNEGsriEXl7sgizRnwCZIXCeQKcFqVNca7CVxe4N4gtAPwMffegQjWvYcEtskiNgdQ8cnJIo4mlDIipJIc8byNWBfgEWZ/DYEqeRGYnpHJEThs3g1QedW2RagY0kIpkJPHAhyxPs1uHJBnQriOIWrz50b2Azi6tfci3wpQcPJ4jPi/haiPIC2mXcxQTGzWBtgOgGqH0XkQ2FnCvwkhWHYDuEuBzYtSG2e9x5JEHk5ZBYJUWJT0L43YFWAvFUBWaEJBNYnMJbAMwcoR4OxHeD7LMSUu0spBviBPL0o4ZuCcnKjwynqAkwxTon7kMiBolTSRJe3PAYhN8k+GeFXwfQaws1dEmm4gKsFCQB3BM/AckIUXglcXDsBq8IrHhgzSa5EzAD7+HhGlF1gUATXHQAlaZQ0xBOC/BQAooB7NjnCLd9krrAlAgq6UOkDlgZim/B5WNEPoYHj6SD8zv4INY6krSkJMmj5m5EcQ5kprAcklwhsoDkFjsl6M+gURTYeQGJLOQvwZMzXKfic2R6jlUakVYhcY8ou/DTQQdFJFUJYWoNvkbgXQaZp5DBnTgL3DEjgKQDcZaBQU18AsYFENmlZIT1tYT0VEhCak761Cs5kYQlfckxbE2wjkF2DAt1RBTD9RLx2RBlD0hXJQ3YtAn5+FARq+Qe2SWh60DEGcgmoTNG1RKIfAQUy0C9g70WPA4R/RlsEDbkUZlrXF2oLqlSA/ekanboASXxEbELO2f4zMF+BPWNIe4kcE5BtgrJGTKYImKCxxTzAL0PRpDcgrBSgOY16lwDn2/xWRH4OAFqd1gXwA/SrydALCAhPPQgRjsidSDTCWpPuqmM/R7mRlDAKyZwi3BoDF4PBbbUcDcCw4G6pClElMD6GDE5JKT3MAFRuThOjsFbD+oSRaz34jx8ov8QbwIVjcN7QNISuEUyJxG1YGuCHrwGg0Ko0BmyuhGngJUVyHvxapLswMWB4D2CczLV/ZIxLGRgsSeuCJ0RwF0bcXpgv4vzGLzMxKTOVnAmiRy9YMg1sjkBViXoNDF9SVakZneQLEMyKiHMbiP3gFCTCfjYh10/POP5gBhGqIUHuI9xYkOV0pIKKncCXx4JsZSBDfJkIzXzQeseuqQvvJD0Sci8KWP6EM4cYXeInZyAyJ2YTIZzsKKHyMqofhjnZOp24fMevi+wcgpTJQdbAXhLCPlXkRkqAn0bYm2QZyTiINOljdys6DjMOzyPCboBoa+j4PYUmBzTJ3SY7tC2hRmdXDilY/SV9I5O0XV6Ku1LT+meNEt3Fkr0KZ2mI7SDTiyM6PiCl67RFfqKzkOyBt3QQoSO0zOpYyEKmRLtorvQvJfm6Zo0gZ0Q9AMLDrovddEN3HtoK/Zy9Ii+kA4h0ZQOpOd0QXoj9dB+ugHPFTpIH+F9i/iOEaGNDuDEBp9+uoqYykI8M2h46QJ9To+kGcTSQxQjmkRxD82B1EmnFkJ0S3oJL11pXdqgx4jgGO9T6bn0ir6WNqVu2LmG/560gb2QdEDXpSk6A38O+l7ahsYxnZaGpafwlaXvcK3hPCG9xb6T9tJB3E3hYSKtSAP0NWIsw94I2V9LbYipg/siMryG1kTqBwYlZDiRJoGlHVkk6TLk7PQUecUW6tBuS0kdosBwJA3RQ8TihGYJGXqBhg33roUr2o6YBkCqgMh6sAdMF4JYp6QROgxpK11E5h5YSkLSSZ9JO1KCYhDV6yOTAiroAsJ1RJ9GDWyoZlF6DKT60jKij0rH+Czg6qND0OzNd5DlGSR90ChKo8AxApt5nJ9hx00PpVcCDmeIwU9fSm2Iq4Dsy4L3CPYbsJaVxoHhBSQ70uF8DLjY6bzUi9P+fF/amZ9AuobdpPQElsdSD+o2hOwt9q5RxQjqdQJEyqjdBdZD8HWEkzJsgLPAO4vY3MishViKsNAHPzzA5Jy+AxqIbWEoPaFJnkm6CrYOgVJbGgcfgRV9CZSLYGlF4J4PtbwBx8t0FtwLo2JdOoF1EUyrwq4LFQwtdKRHCxPwrgneeqFZQ0cl0EE3qEkEd1fAu0RfgLsesPoWnPWAA3b6DJE3wa4mJEJgeY6+QUw5yFSRlwO7CbDfv5BGnl1pGrn5FlzwfAIZJ/zHhe5L4c6HfM9hv4gqFmBpAutFWB8D61s6Lr1EhmQ1Rp2OYb2C0wDtgdcpUCIMTUDrCFyqoKJ+uiKgU5NWgfwRsB4BH7BEOgPr71FLPzrMDpSjeN1KibcsPZ13gGlx9N0l7LalLdSwAAT8QNWO2AlWbdhNw8Id+FFAVFPYqEgv4PkCkXWlMTAvLHAqhWq1pGG6CVYGaGLRh05IQccuYHuJ6AnLmtI7wlag3gRTukK9r8Am0llV5BSjSQVGmEXHwOsY0jZgn8E7AbRtOBmh/nbsR4HqPaJoS2tAMYg5NYHFY2gTj0XE48GESdNHCyNgGli4wd1UOkTFA+BQFtMoApkKnZWSdRfXMToggXoU4e8CeI6AR4Pgj/maI7MDk7OE+tYWnAs5WD6H/QgmrH3hHBPSDnZN0Mc+5FBBpmVoXCIeP/Iogk9joWpHYOw1ou1A5h7aQ2Qapfv0DdiVxrWDyvgg5YWWE1hUFqwLA5pMTQ84i0gwIcewhu4Hvj2BRcS2DbpxZJmEFXQV9u+lPWiNpS1YiaHOcWThA+p5Mp1wSmZrENwqYZL3pMEFwr8y8ryChWMgM4AeniaYaFZEXIF9N+xN0bvZhTj2nOitFiZFDjplIFxFLarI0UtPMBmsmFBZeMqC0TPpEfhA8sPswpPEj8j74GqKdqHLa4iDzGgPcohgEs7wJk+zHHgZAANOwbVr1CMG/+QJUiFdB9mmNAgfd/B6iUjvpROcj8AC0k9gDiI8RV2r6Ic40LiBnVucuekT9G8SXdCApwl65Bqs9cJSFNyMoYpWoD+VBtAP4O38MZjros+lBC/CjQl4V0ImmKzgfV3qxnycINYG5hk5myK2lJQw1Yu4m5DyIlK/lMzIPKKdCcy144l2hCw9wOgIudUwPS/pEjrkBH5O0Vk32G1jqhSxn5OO5kfIFsySt9mi/JYNsKdsQO5m6+yJPMp4VpIrfjbGnrMz+Q07llvZLlOSN+Uh+URul+fkfWbITJkcM5BVmS6TZ06ZscwnP2Ia8hzrYMPysvwcryYTkQcgN5Wn5XUmIffLvXKfvMWcM0F5VH6F82PZGRNhjpkTpiCvybtMgHXKb+Q95lTeZq7lQ3lXnpF72SzTkXtXkmxNfiofMw5EEZcnmCqs3kPqmHVhfY+ojvF5wlih15fbkUdKHmftbBDyFXlCfsKWoXON2DuIa8CEkFdcPmLyuBbh85yJyWfI91Lelk9ht8Sk2Z7chnzK7BWbZW/kYTYhH7NROTCB5yD0h0wO3gbQvpf7VrrIKyG/RS5N6E9lR0wAJ3nZANhcyhqMlenIQkyLacqysmPcHzNl2bUsB4SSjJOZyWzMjLlhLmReJsDYESnJMsN45DNYSDFnsozMwfSX67IEU2AiMjvTWM4yBVlJ5mM8TIxxMdeMg2nIWrKEPCdrM3H5DexWmDsgXJVlGD9TZ66YKJOC5FhWhc006jbFnhMnLVmazaJuHqBzhTiOUS0PqnQjizOXTBseG8ydPCJvMFm5DXW0I8eJ/I7xsH35rXyGfO0rWda74maLbEteZTNsaWUkb7E91g4MC6jBLersZcJMFPy6gv2kPAxWZOUBeR65heVuJsFGBLSaspi8yJRkfuzHEXFaFpGXZBVUrSKzMj5oO5jxckV2t+yWBWVFYBrEbgFRTnA+lh3LiwKWOabEDGVH7EA+lVuZEd4d1L3GnKNiSaBwJXfJ83KnnHDbBsZ5mD7imzJNsK7HHIEHNTBmiPct2OUiWaJ6RdQ3CS7VmTO5hz1mbWDakD1iJ2wJfkrsUO5eibJH0OnKR/IsO4K/KHOBeh7LfWwZuyn4vJfHgOY9rBYQbQHxu4FtnBmDh1VZAzWuILe07EYWZtoyJzJOymqyAPK+kE1kJSYhy8vOZVHZiewUXRRmfOCKU34MtC6Q9xEynYITSbkDUV3Lq/IyuByTB1gH+N1HFzcYvzzHkI5sI6MR/LqBSVt2iWqH5HZmBPSnssbyBGy8ZeyMDZnb5OcCH8tYp1CvCult8CXM3jMtIDlG3zpQo0umx4QgUYTNKKwVEZcfPiKwmMLkmMCbU+6HrTQ6JAXLVfApAp745B12BFTugFCZ9BvbZFu4Rtkecyu/hP0L0l/AfgrMwFf4PwOLqkwNPOpjpmSRUUleYNNANsM25FfsPTr0jE3JR5hmbXme7bDXwMCLnq6iGhmss+wUlRrKg2xV3kePTyA1YJtyMi96yOEE8yOHSG3sHeOVH6H3E/AZZD3yBjDrgY/XwOIEyEcxA8tgoUc2BZsciJP05Qmq20CMyFuGvKDdBDs8mGZ2VAd9CkYMEe8xuOBA71+hd8n0OEXFquBgFDWyQaaK6VYB24KIfoa3dSXAXgGPJmZ4HwzuArkA+ErwaDH3wCiA3g5j5cCMdqAmV+jzFNiRR4ddAkcPql3EFJiALT75NdtiupjbdsR2DSyrzBmmhw18CssrmLstZog+mDFlYFxF9KgLYitincTcuEbFUsCqjTMXe4muOwJCPQa9JL+TtdCdYUTmAk8L6Pg7eRxd58JM9wgT91oeQY2d8rHcz3bZOngbxhxpsffsxUoF1x57vJJgu/LQyhEq11hJrRTYBttm02BIkJ3h+XWGeVxDJBngdiV3sjF0+Y28CGRi8g7wzq7coVe7QDoiD6EbEljl0LE+1i/PoiZhpigbyerMqeweE7XI3GA+XmMHPYaeHDIDhrB4AO5b8emSxzBJB8tjWRvnXZkbXL7FNA8xWfRgj0mg6iPknkD92nhSpcCgM8wpL+ZSEzOojtk0RkXiqIEPnXEhu8DnGap2BkzHQNMKzQF6L4YsSkClgVg7mDh5PJFu0CEhzOsSeBcFJ9zAPw7+BNiJvIUnnUvuxpO2jHp5wJZLTLoqKjzAJPLAahf5xBFdG7wKaJPaMV/VunRl3ZDP6nravDbPz3g3f8/dbfU1Pi7BlTkvd8pPuJrGz/u1N9qK1q+16lJam3bAJzUuvsPntW6tXVPR+PB5B3tjPq1paBvasrao9fI33EDj5dvc2ZaXP+c83C2f0RxxQe5cc6aJavyajqaqSWli/DE30zT5KmfXjnintqaJ8mHez5/wZ9pLPqG90o61Ka1dF9P5dOnthra7E9BVdV1EUeFnOG3zx7qgLqNra5O6oPZCU9QVtS5tTnfD13URnVeX0J5zJ1t5vgsft5pzfqwJ8Tm+xE94r9bFt7VWxHunO9NltSm+g50W39XWtVU+r3FpbFqbpr414s63TjUVxHSuLWoKmqCmhjwC/JC/0zi0Q3zWNPeansYJ20W+qxtrPdpznUt7xR9pJ/xMc8Xf8JfcFdfhg3yaP9Uk+QuuyCeR5YQv8i3tkGtqQtqELqkt6SZ8DxkBH61TG9M2cD7WFPiYdqyrbdt3Lrdb27PtxPbl9pGusj3Zvtsdb99t32+ntk91I11P54LvqeZI29KeAp+A7pYv8JfatqbBN/gz3QVqXkLtErqK9g7+m5pb7kJT3mxw91xEk0WVHdoCWNDk7zWniCOqaaFOTS6nveE6mitNng9pc0CmhLqk+GNtCKxp8DlNDdgeAaukpqipcOOtimbCkUqe8nVtXzPUHOlG4E5RW9OV4bXKXcJvRePfanATcMHK+TQ3YJyNL2gmfFQLPkC3qI1rm6hwUFeARwei6iLeFvwUNV7dkS4LbkX4OH/HB3QR7Qmf1F5sZ1Hrnu5Oe6zLAYUzvoFKVbYyW8VN69ZoK7pV2Ixt3W6dcsWtmma6ld70bzq5HOfUZLgpd7l1wg81A42Dr/An2qC2qy2AJVNgH+KLmrymC477NGU+x52hR3zaBDDy8jGg1EcMVm2Ub4NfJe0RkI1qG5oZ1jP+Sufc6e74d6M7Nl1952L7cqe93Ued0zrbzhQctm6Daai5T1tDXYp8BEwfaPtAzq0t8iPY62uj2gif4Zpbac0Asd9tWXkv59acc1HU1gcen4PtyF4TBNM6mguuwqMzUZs2X9a5dSHg4QaWGchWNXFdFHtObQAMTWrC2kttWXPEH6Evxpq61iHwc8wNOD9/gf4u8Vd8S3Omq2Pfr21rfeDYnXaku9R5t9O6KvrnjJ/yV6hcnRvBjltbAbNudTk+i1ng1Hm1PfSSWxvWDXQpXU0b2K7rbpBzYnuKvC+2O9rg9qXWgR6bcl5ITjVVdMpIG9F1YGeoJSwgfXDLxRDngC+hB2vovwr6r8E1uBR3hMpc8ClNXGPVuIDRbPN4c7TV1fQ4Nzfmcho/6pLTpMHyAW/jB5yTm272ti6eDp7WwInrzf5WYKvEnWquNXdcf6u5RRiYQTdYwXuHJsZFNaUtF1faymFq9bcysNradGE+2TR9cO6Ed+vO+Fv+nB9xTj6OeVHlT1CHKNfZcmuOOT8X2/Jxla3rLT9v4zKaS7CssJXacnA2cN+Bao25tiapmWjugPYtsmpzfdT2kq9jsnYw82xaKz/gbzRBrQd7M8zXkaatOUW9ndsRbX77WucHq+q6mi6AbulvT4FXWdvFzHDqypqSZqopcW2upfFzZY2Tq2pOMcciHOqsud3yajPIOojp5eZPMcsvuRjurtBdyI5PcHlNQ3PPhbS32g5/jdkXQ0btLY9muDXkCqj5DVfgevzpVp5LAasq3+PP+IpmiJqkt8bIFL2Fd4nrAf8Wdv2orQ0zLa3r8OR5cIJM6poYnhMdPDvOdSmw3c03uWvOhioca5uaNp/ABA1p47pr3akupwvohlrbdny7vH2iAz6wlofXEioADiLeUzxLrrR93fX2HVCoa9O8Cz0awHy51IRRnRBYXkW+YY1z26F14Alhx9MroimiemAB1wEy98B5gi7OoFMi2znM2Mr2+faUL+n8uitdQhfYduNpg+eeLsvfaElvnaPfgpjit9oCnkJhbR09FEcUbsxSL54ifcRgw5OvrjnH026qacGXl4tjek01cS6GuRLCHAOn+CyPTkdHYf7pupqK9hxTJ8dfou4pvsy70dkjTGA8W/GE63N1TRq90MZMvNckwIso+vsUs6ioGeFJ0+GOYZ8gUwZrrjFvp1v2rbMtx5ZzK7tZ3jp5P/zjxR+a7z1/mP4x8sfpj+0fqz+6Pqc+Rz5F/y71sfKn6gf7n7I/3v2p8jH4yfY5/bH2sf559Mn3pfOl+O9Sn8//zv5j88ejHwsfO5/Gn2o/ln+8/3j8Yfyh//vMu/b7sz+0/zT5EPkY+5j7UH9/8bH+3vau+wfHHzzv7/4Q/uP1n47fd/5gfVv8/fj39vfV98H30XeNd5G30d/n3nbeTn83/l387eCH3A/9N6HfuX+4fx17m36Xe1d+5/r94O31D87X0e+PX1+9bO7bXsRfOA9H38VelL87PnS+bH6f+iHxavrK/zLz4ujw8vvSi9pL96Hv+/73o5fDV82X0e/zh2ffdQ4nL6ev8m9q39+/mr68eXX3fetl5jD0ZvxD/3Xzh8zvbn6X/V36B/+byevG6/T3gZeNg+qL2YvuC8fL65e2l+HDu+/jLx0vbg8DL50HkUPvYfDQ97L5yvcid5g+nH1X+K5zYD3ovEi8PHpRfJE4DL9oHdwdOg4uX1y8CB22D9oHZwfjA+th5zD2wv/Cvt+w5L/1HFYPAvv57+zfOp6796ffXnw7fha15J9Fnp/tN79rfOf7rrDf3z//Nv889sz/LPZs+ty6P3he+Nb7Xf4gdTD5zrsf+TbwbfHb6bfT/cy+9Xnjecxy/ixvyUH/9LvBfvNgeBDZLx3U92vPKxarJbQ3tPQstb24qWtKmosGv6lj7pl6poGxbGyZrvQeQ8fYNbhNQ0PfODIm9qp7AfPVXmrPttfcS1iie1fPPHsu6N+YTsw1k8d8YrnfO3nufH5l8TxvPwtZLp71zTZLypQ3nhltBqvBqh/snujThpKparTuenYzu0mD1ZjWu+EzbOjrY4aS8cocMWX2vOb6Xm5vYmruHu02d6N63254x6av6YuG1m7CaDVOdxuGU0NaX9Rf7HpMV4aWvmCsGM5273eLu5Pto53ubn/bu+vS3+rb+vPdmj6729kZ7za3C3wBX7FMdGXthbawHdXi2YunmXu7jadSfecWXzXZdA0+te3eae5OdYPt6rYVz+iQzs+XNW587dPlTvgUvpZsa13bdq1fk9m61LS4Er6iGuLrzzPOq/FsXXCXRI673urja4zuln/zaKOwWdxqbOU3L7fwFH1a3qxwIXylcc7ha5OtCCby+ebR0/pGYnO8cf6kvp58cvHkZOP+aeip76lvs/q0uVF94nzaWG8+Ga4H1qPr+bXhY8eT8ZPS4+na6PH4cfBJ80lio/jUtx54XHx897i05n4ce5x5nF/LPQ4+zq3X1yvroce99dFj2/r0cWRt/OjikVN9/Wi4lnlyspZc6z3qPpo9Kq6dP757NFO31aePRo8Cjzrq8KPko7tHdXXiUXUtsFZ/VMRr+qiDu8vV3qPk6pH6XB1cvVE1V0PqmiqvvlfVV+3qvLqojqgd6ovVoep6tb7qV9kehR6dqcOrEVVntYmzKq5etV8dUnvU+dXh6ulqUHWs9K56VTVlQ3GpyCtvlC6VSzVUHisLynNFXzFU3iniqtJqfjX1aKbKqpKqM2UInzfKvPJClVm1rqZUFVVOaVNGFXeKmbKmuFEGVL5V32pZlVBVVZfKrLK5mlRlV9vKisK/OlZH1dnVibK54lV2FWeKlvJ05XjFquwr7cqkMgf/98oqbF0oz5QlZUXZWIkqYsqrlZuVoKKkiGLdXjlS5hX21ZHCt9pQ3SgmigAitqrOVFcqm+pWOVRWVAFVYvVCOUMuXZVb1VT6lS1lU5VWTZUBZUOZUXqwd6u4UqQRQ0aVVGZW0orCShSvJHuycqLMKXJsZ6WsCCjsQlaXSpfyTDVRjBVTfJ6sdpRTVUg1U5SUUVVSEVbYlVbVHWT6sBJXHiH2iTKkTKliqrEyTjyv5uDxSjVF5k5VRnGqqK7Az4p9JaK4XrEj24nyQplRRVXR1bHiCrm0oBtQFVYzyhzQrClCwPFWkVi1qfzI4QoWesBlthJYmaxMlTZVWRlTFJUpxd1KSeFYqbIjtqcIYN1XzBQORURxpiyrRoo06txBNS5VHYVTOV2Js0lFTeledasawKikGqniq3eKsPIaCFtVCeUYuv6V2soF6hRXnSoLwDulnMFbWDlCPeLIOaa0ql2rsdWQsqM4UnVUYbV7NbgaVjlUU4VNeaTwKYYr5ZX6Sm4lryigIlZlW2FdCSs6CqvCh3r3la5V9+oFOFhG3kmgW1Mdq0qqW2DfAcKzlZ7yBMjUUdPBakodV7nA7yP1CIhfKZqKsbK6miYvVU8RUQ5WThUd3Adg4V41WL1SlRWzla7Cp/Ii4iKYUlA1EP9IlVotKK1KF2LoqWzqMFA+Xs2qrY8aqnulHZ0yBUoXqiaks6prZVjVBrcbqpTqEgj0sS6grnacz1RNdWw1DQ7MlDNFVTVRORDfEDF7VOfKLKIgqFhXT1ZzyiHqcK4MrYZUAWVNFTaHMfvLu32DzZw1OyzuZ2PLkaWx199LmpzmiDFvbOhtppQxbj631Mw+o8s00udMkWenluRe7dmZxbaXNnWNfmPEeGbO7/ktBUtq7+TZvXny7OpZxOIyHxkrxo6hu9c22fZ8mPQ1i/vb1rP+M+/ziKliypomhltzyezd6xnjpltjw9zfC+w1zQ3I3sFu3XCnb5tGxmvTxJgyH+PJdK9PGhK7Z6Z78+W3V8/CzzLGG0PQUDdcmq7NJ+bqM9dexdgwxPQBc8iQNp7CcsQyM2dMmef9vWvLualkCn5bexY1d/ZOTGfPMntXRjxjjSO9FXH6zBlL2nxkPjeP96aWnrluchvDwnMoYXSZK4aZ3mOOGZyGU9PUUDHe7NYNHnN2L2TuGluGpL6Np9md4dx0Yw4Zh/rGXsAYNoVMecPMjAzMPrPVfGn27HWNTmPPdIvnXAEITmBniLwGxhP9wBC1JC1N87XFs5exNPfspsHelelSPzNmTCU8mZPme6PbmNX3dwuGS33J5DM0cTYCEk3zvXlk8hpThqoxZMgaRqa2+cZ4bkxbOpa0pWgOm1zmgGVquDOW9EVjylKy2I3NvfRe2TgxDEwtY96QNDfMmb1rY4k8+U1dPOdju8fGC4PDVEHmI1Q2aLCbE5arvYGpb8bz2Rg23wIlL+o1NVztRAx149AUN4aM18aw8dJQRiRV08hwZS4ZLlDXmiFl9G93DFbT6Z7D7LIcweLUMjWVjRf6ksGHaOHNlDJFzUcmnyVojuIpbzM7zHf6oL5sGpiHhiJ23CabuWKOm2/MCcMNvhpIG+4NTlPJ4Npp688MLbDUYXCZrk1hc9Pg2fWbjk02/WgHX2EYOvqx/lSf1V8YfPqBKWII7vZ2bwxdvXc3bPAZvPqjndBuAN9VSenPDVe7N7tOfE3Q3WkZAsYUvvao4F9Z7d287hT/ChlqB7rodnq3hO8xjLd7uhr+tT7Zusa/OqpcFv/Gy25eP4lt2Z8GNoYbrs0Evm8Qxb97fJulp46nJ0+LG4318/UwnsPHa2ePRmuVx64njSe59crTq43xWn69tN5/1Hg0fORYDz6+Wks8jq5VH9nUxUfn6pw6+OhI7VcVVRV1adWhrmISulT9lYxqiCdOb6WKKXurnOJ5cqG4X3GtjBQpfNe0oqjje4VOfJ86j+/cnuE7xAF83zjNXMlOZU18rzYkG+N/FUa/PfttdSn92/ZSFv/HVF3u/rb2m9lvzpfG2HUuZZaGvzla7C3ElyJLwaXkwmhxsnC50F4ILB4vDn7ToclPxbgXeuT/XfG/mfh/xvn+Nwlp85vWN4NvJnPZbxpzmW+s3yTmhnONuSZ+Dik418NPLZ3j59Rq4ulDr3jysIifhUpJyM/+HWMnKm499ODnMX3iGdWmnA/Lwm9AHOPnmwP4SeYWfgr8GNdT/L5OShQQ+UTk3iX6W1AUwi8RWUX/4y/vX79/8/7tu/19nZl989ayobC8/fTqP/51f4db2+R2djY4/ArdEn6vjyW/Vitm8buXi8Lv6s79f3hhhRA="
}
[info] CPU 789.7% | Mem 48MiB

[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": 500000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.006,
  "requests": 8923063,
  "bytes": 910152426,
  "achieved_rate": 446010.22,
  "target_rate": 500000,
  "target_rate_end": 500000,
  "rate_ratio": 0.8920,
  "bytes_per_sec": 45493042.85,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 3144292,
  "latency_us": {
    "min": 42, "mean": 1040590.3, "stdev": 709740.6, "max": 3147775,
    "p50": 934656, "p75": 1465856, "p90": 2153472, "p99": 2771968, "p99_9": 2968576, "p99_99": 3066880
  },
  "status_codes": { "1xx": 0, "2xx": 8923063, "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 790.2% | Mem 49MiB

[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": 500000, "timeout_ms": 2000, "deadline_ms": 0, "deadline_abort": false, "record_timeouts": true },
  "duration_s": 20.006,
  "requests": 8939427,
  "bytes": 911821554,
  "achieved_rate": 446828.35,
  "target_rate": 500000,
  "target_rate_end": 500000,
  "rate_ratio": 0.8937,
  "bytes_per_sec": 45576491.79,
  "error_rate": 0.000000,
  "max_schedule_lag_us": 2759730,
  "latency_us": {
    "min": 43, "mean": 1030220.4, "stdev": 626426.4, "max": 2762751,
    "p50": 993536, "p75": 1511936, "p90": 1900032, "p99": 2393088, "p99_9": 2567168, "p99_99": 2665472
  },
  "status_codes": { "1xx": 0, "2xx": 8939427, "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 790.2% | Mem 48MiB
[info] run 3 wins on score

=== Best: 446828 req/s (CPU: 790.2%, Mem: 48MiB) ===
[info] exact CPU: 158.46 core-seconds | 17.726 us/req
=== Fixed-rate: cpu/req 17.73us | p99 2393088.0us | p99.9 2567168.0us | rate_ratio 0.8937 ===
[warn] offered rate fell short: rate_ratio=0.8937 (target 500000/s)
[warn]   the CPU number is not comparable with runs that held the rate
[info] saved results/latency-500k-8cpu/1024/fib.json
httparena-bench-fib
httparena-bench-fib

==============================================
=== fib / 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   17.76ms   16.60ms   25.70ms   31.60ms   121.90ms

  17923633 requests in 10.00s, 17891633 responses
  Throughput: 1.79M req/s
  Bandwidth:  175.72MB/s
  Status codes: 2xx=17891633, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 17891633 / 17891633 responses (100.0%)
[info] CPU 5440.6% | 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   17.59ms   16.70ms   25.60ms   31.10ms   36.10ms

  18086361 requests in 10.00s, 18054361 responses
  Throughput: 1.81M req/s
  Bandwidth:  177.31MB/s
  Status codes: 2xx=18054361, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 18054361 / 18054361 responses (100.0%)
[info] CPU 5556.8% | Mem 1.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   17.63ms   16.70ms   25.80ms   31.20ms   36.00ms

  18047207 requests in 10.00s, 18015207 responses
  Throughput: 1.80M req/s
  Bandwidth:  176.93MB/s
  Status codes: 2xx=18015207, 3xx=0, 4xx=0, 5xx=0
  Latency samples: 18015207 / 18015207 responses (100.0%)
[info] CPU 5586.5% | Mem 1.7GiB

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

@lesismal

lesismal commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

/benchmark-multiple -f fib,fib-tuned,fib-websocket --save

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results

Frameworks: 3 | Test: all tests

✅ fib

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 3,164,504 — — — — 6139.4% 293MiB +191.9% +35.6%
pipelined 4096 20,397,414 — — — — 6555.1% 285MiB +342.1% -4.7%
limited-conn 4096 2,548,722 — — — — 6146.9% 298MiB +468.3% +292.1%
json-comp 4096 297,385 — — — — 6340.3% 516MiB +73.9% +26.2%
json-comp 16384 296,064 — — — — 6380.6% 1.1GiB +67.0% +49.6%
json-tls 4096 774,182 — — — — 6376.7% 375MiB +118.3% +10.9%
8gbit 512 49,363 0.9873 54.68us 120.0us 1836.0us 235.8% 256MiB +0.9% +172.3%
static-tls 1024 1,229,892 — — — — 5751.7% 350MiB +356.9% +75.0%
async-db 1024 197,176 — — — — 4489.7% 389MiB +140.8% +149.4%
baseline-h2 256 5,634,126 — — — — 2505.0% 504MiB +727.8% +154.5%
baseline-h2 1024 5,490,643 — — — — 2464.0% 804MiB +586.6% +88.3%
static-h2 256 930,877 — — — — 6273.2% 778MiB +819.0% +157.6%
static-h2 1024 945,065 — — — — 6226.0% 1.1GiB +581.3% +24.5%
baseline-h2c 256 12,891,491 — — — — 4912.5% 421MiB +1821.1% +137.9%
baseline-h2c 1024 13,903,429 — — — — 5963.3% 642MiB +1634.9% +106.4%
baseline-h2c 4096 11,484,657 — — — — 6315.3% 1.7GiB +1026.9% +196.1%
json-h2c 1024 1,102,054 — — — — 6182.7% 882MiB +286.5% +149.9%
json-h2c 4096 1,114,439 — — — — 6253.7% 2.3GiB +230.3% +259.6%
baseline-h3 64 6,067,295 — — — — 3554.6% 402MiB +744.1% +243.6%
static-h3 64 748,540 — — — — 4744.4% 872MiB +1921.2% +188.7%
unary-grpc 256 6,198,578 — — — — 5449.7% 603MiB NEW NEW
unary-grpc 1024 6,199,041 — — — — 6198.4% 1.1GiB NEW NEW
unary-grpc-tls 256 4,246,784 — — — — 3672.7% 562MiB NEW NEW
unary-grpc-tls 1024 4,160,362 — — — — 3662.4% 1022MiB NEW NEW
latency-1m 1024 998,149 0.9981 30.64us 204.0us 4041.0us 3436.9% 260MiB +4.8% +89.8%
latency-10k 1024 9,981 0.9981 45.58us 103.0us 229.0us 43.5% 161MiB ~0% +235.4%
latency-500k-8cpu 1024 444,092 0.8882 ⚠️ 17.79us 2644992.0us 2810880.0us 789.5% 50MiB +31.1% -10.7%
async 32000 1,798,497 — — — — 5580.7% 1.5GiB +73.3% +176.8%

✅ fib-tuned

Test Conn RPS Rate CPU/req p99 p99.9 CPU Mem Δ RPS Δ Mem
baseline 4096 3,136,110 — — — — 6341.3% 467MiB +380.2% +148.4%
pipelined 4096 20,380,428 — — — — 6635.6% 477MiB +318.8% +49.5%
limited-conn 4096 2,554,016 — — — — 6003.1% 489MiB +747.3% +232.7%
json-comp 4096 509,221 — — — — 6424.1% 842MiB +174.7% +84.2%
json-comp 16384 506,000 — — — — 6156.8% 5.7GiB +145.1% +505.5%
json-tls 4096 1,505,728 — — — — 6225.1% 658MiB +329.3% +83.8%
8gbit 512 49,346 0.9869 54.25us 117.0us 3141.0us 232.9% 474MiB +0.1% +369.3%
static-tls 1024 1,225,298 — — — — 5673.7% 567MiB +456.0% +229.7%
async-db 1024 230,913 — — — — 4259.3% 674MiB +193.7% +326.6%
baseline-h2 256 5,636,472 — — — — 2296.4% 811MiB +615.9% +270.3%
baseline-h2 1024 5,511,179 — — — — 2323.3% 1.2GiB +460.1% +208.7%
static-h2 256 946,028 — — — — 6133.8% 1.1GiB +821.6% +208.6%
static-h2 1024 945,950 — — — — 6018.8% 2.0GiB +658.2% +187.2%
baseline-h2c 256 13,245,546 — — — — 4889.2% 669MiB +1699.0% +310.4%
baseline-h2c 1024 14,246,107 — — — — 5904.5% 1.0GiB +1460.3% +173.8%
baseline-h2c 4096 12,405,361 — — — — 5345.7% 1.8GiB +894.0% +251.1%
json-h2c 1024 2,337,570 — — — — 6114.7% 1.6GiB +975.3% +463.0%
json-h2c 4096 2,254,913 — — — — 6295.1% 4.3GiB +684.7% +684.9%
baseline-h3 64 6,167,355 — — — — 3546.0% 766MiB +787.4% +549.2%
static-h3 64 770,725 — — — — 4863.4% 1.8GiB +1819.4% +572.7%
unary-grpc 256 6,594,862 — — — — 5046.2% 873MiB NEW NEW
unary-grpc 1024 6,699,375 — — — — 5429.4% 1.5GiB NEW NEW
unary-grpc-tls 256 4,331,789 — — — — 3283.1% 873MiB NEW NEW
unary-grpc-tls 1024 4,233,517 — — — — 3353.1% 1.5GiB NEW NEW
latency-1m 1024 997,842 0.9978 30.34us 196.0us 5578.0us 3405.1% 442MiB +48.4% +229.9%
latency-10k 1024 9,983 0.9983 47.59us 105.0us 287.0us 45.8% 413MiB ~0% +742.9%
latency-500k-8cpu 1024 449,686 0.8994 ⚠️ 17.63us 2837504.0us 3032064.0us 792.4% 75MiB +30.5% +56.2%
async 32000 1,825,758 — — — — 5560.7% 2.2GiB +98.8% +453.5%

✅ fib-websocket

Test Conn RPS CPU Mem Δ RPS Δ Mem
echo-ws 512 3,539,300 6064.5% 99MiB +197.9% +98.0%
echo-ws 4096 3,972,953 6458.6% 133MiB +192.5% +44.6%
echo-ws 16384 3,748,427 6142.8% 266MiB +229.1% +35.7%
echo-ws-pipeline 512 46,941,744 6273.1% 100MiB +218.8% +81.8%
echo-ws-pipeline 4096 51,031,532 6617.6% 134MiB +178.1% +48.9%
echo-ws-pipeline 16384 48,606,448 6206.1% 268MiB +209.2% +32.0%
echo-ws-limited 512 2,053,428 5403.9% 246MiB +380.7% +261.8%
echo-ws-limited 4096 2,613,729 5887.0% 277MiB +443.8% +123.4%

@MDA2AV
MDA2AV merged commit f421eb2 into MDA2AV:main Oct 8, 2026
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.

2 participants