Skip to content

[true-async] bump base image to v0.7.0-rc.5 (adaptive throttle — HTTP/1 pipelined fix)#775

Closed
EdmondDantes wants to merge 1 commit into
MDA2AV:mainfrom
EdmondDantes:h3-arena-rc5
Closed

[true-async] bump base image to v0.7.0-rc.5 (adaptive throttle — HTTP/1 pipelined fix)#775
EdmondDantes wants to merge 1 commit into
MDA2AV:mainfrom
EdmondDantes:h3-arena-rc5

Conversation

@EdmondDantes
Copy link
Copy Markdown
Contributor

What

Bumps true-async-server base image rc.4 → rc.5.

rc.5 = rc.4 +

Adaptive reactor-poll throttle (true-async/php-async): the fixed 1ms throttle (added to fix HTTP/3 PTO collapse) regressed pipelined/keep-alive HTTP/1 ~29% at high concurrency. rc.5 makes the poll window adaptive — 1ms when a QUIC ACK/PTO timer is imminent, batch up to 10ms otherwise (so HTTP/1 amortises the poll), via a new uv_next_timer_timeout() in the TrueAsync libuv fork (graceful fallback to fixed 1ms on stock libuv).

Local A/B (-c512): pipelined 2.23M → 2.88M (+29%).

Validating

  • H1 (baseline/pipelined/static) should recover toward the pre-rc.3 levels.
  • HTTP/3 must NOT regress (the adaptive keeps QUIC timers on time; this run confirms it at scale).

Carries all rc.4 fixes (H3 bidi stream-credit replenish #79, patched libuv skip-redundant-EPOLL_CTL_MOD).

rc.5 = rc.4 + adaptive reactor-poll throttle (true-async/php-async): batch
HTTP/1 pipelined/keep-alive (coarse window) while polling fine for QUIC
ACK/PTO timers, via libuv uv_next_timer_timeout(). Locally restores
pipelined +29% (2.23M->2.88M); this run validates H1 recovery and that
HTTP/3 holds at scale.
@EdmondDantes
Copy link
Copy Markdown
Contributor Author

/benchmark -f true-async-server

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 1, 2026

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 1, 2026

Benchmark Results

Framework: true-async-server | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
baseline 512 1,509,009 6321.8% 185MiB -30.0% +1.6%
baseline 4096 1,579,562 6522.8% 224MiB -30.1% +1.8%
pipelined 512 2,141,880 6353.6% 151MiB -76.2% +0.7%
pipelined 4096 2,433,958 6312.2% 271MiB +6.1% +10.6%
limited-conn 512 1,168,510 5941.8% 154MiB -27.4% -1.9%
limited-conn 4096 1,255,815 6431.0% 195MiB -30.2% +18.2%
json 4096 877,408 6235.5% 205MiB -10.8% -22.3%
json-comp 512 412,776 5922.6% 191MiB -7.2% +9.1%
json-comp 4096 442,721 6238.6% 224MiB -3.4% -11.8%
json-comp 16384 436,268 6113.1% 219MiB -1.0% -55.0%
json-tls 4096 719,593 6496.6% 645MiB -8.0% +2.9%
upload 32 2,559 1845.8% 301MiB -0.9% -0.3%
upload 256 3,134 3551.4% 492MiB +3.7% -5.4%
api-4 256 50,945 393.0% 42MiB -9.5% ~0%
api-16 1024 142,249 1577.2% 79MiB -6.9% +2.6%
static 1024 482,749 2613.3% 179MiB -20.9% +2.3%
static 4096 501,485 2663.2% 255MiB -19.7% +1.2%
static 6800 454,925 2489.1% 312MiB -25.5% +2.0%
async-db 1024 253,621 5207.9% 222MiB +1.5% -10.5%
fortunes 1024 89,463 6433.0% 232MiB +1.0% +3.6%
baseline-h2 256 5,615,717 6192.4% 234MiB +13.0% +4.0%
baseline-h2 1024 4,589,512 5962.1% 542MiB +39.6% +7.3%
static-h2 256 1,062,246 6479.6% 521MiB +2.6% -6.8%
static-h2 1024 854,086 6455.6% 2.4GiB +2.9% +4.3%
baseline-h2c 256 5,802,183 6251.8% 270MiB -3.9% +10.7%
baseline-h2c 1024 3,688,338 6118.3% 648MiB -7.6% +22.7%
baseline-h2c 4096 3,080,696 5893.6% 1.7GiB -17.9% +13.3%
json-h2c 1024 1,555,913 6174.8% 438MiB +26.3% +37.3%
json-h2c 4096 1,456,924 6465.4% 1006MiB +19.7% +28.8%
baseline-h3 64 1,592,454 4281.3% 186MiB NEW NEW
static-h3 64 511,403 4014.7% 661MiB NEW NEW
Full log
52

22
59. Stopping all clients.
45
36. Stopping all clients.
4. Stopping all clients.

finished in 5.01s, 337216.20 req/s, 2.89MB/s
requests: 1686081 total, 1686785 started, 1686081 done, 1686081 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1686081 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 14.47MB (15174960) total, 6.43MB (6744364) headers (space savings 87.50%), 1.61MB (1686091) data
UDP datagram: 931440 sent, 1720059 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      558us      6.53ms      2.50ms     3.55ms     3.77ms     2.33ms       935us    60.36%
connect     :     1.76ms      5.93ms      2.75ms     5.93ms     5.93ms     3.14ms      1.19ms    72.73%
TTFB        :     3.03ms     11.30ms      5.05ms    11.30ms    11.30ms     5.74ms      2.53ms    72.73%
req/s       :       0.00    57117.18        0.00   28580.39   57117.18    5268.80    13409.34    87.50%
min RTT     :        0us       117us         0us       53us      117us       10us        24us    82.81%
smoothed RTT:      201us    333.00ms    333.00ms   333.00ms   333.00ms   275.85ms    126.43ms    82.81%
packets sent:          4      153057           4      80062     153057   14554.09    36687.63    82.81%
packets recv:          0      291524           0     145728     291524   26876.27    68368.50    87.50%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1           2           1          1          1       1.00        0.00   100.00%
[info] CPU 598.6% | Mem 204MiB

=== Best: 1592454 req/s (CPU: 4281.3%, Mem: 186MiB) ===
[info] saved results/baseline-h3/64/true-async-server.json
httparena-bench-true-async-server
httparena-bench-true-async-server

==============================================
=== true-async-server / static-h3 / 64c (tool=h2load-h3) ===
==============================================
[info] waiting for server...
[info] server ready

[run 1/3]
starting benchmark...
61.

5.
.
21.
33.
TLS Protocol: TLSv1.3
Cipher: TLS_AES_256_GCM_SHA384
Server Temp Key: X25519 253 bits
Certificate: RSA 2048 bits
Negotiated Group: x25519
Resumption: no
Application protocol: h3
42. Stopping all clients.

finished in 5.01s, 512271.20 req/s, 7.78GB/s
requests: 2561356 total, 2565452 started, 2561356 done, 2561356 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 2562130 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 38.88GB (41752254235) total, 59.99MB (62903048) headers (space savings 82.07%), 38.81GB (41672991129) data
UDP datagram: 1855759 sent, 31066003 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     1.33ms    221.79ms      6.58ms    21.94ms    74.50ms     9.77ms     13.41ms    95.16%
connect     :     2.21ms     54.45ms      3.70ms    53.05ms    54.45ms     9.02ms     14.57ms    89.06%
TTFB        :    30.14ms     73.16ms     37.50ms    59.85ms    73.16ms    43.70ms     11.54ms    64.06%
req/s       :    3211.13    14942.05     6631.93   13554.25   14942.05    8003.80     3699.86    50.00%
min RTT     :       17us       185us        42us      174us      185us       70us        51us    73.44%
smoothed RTT:      347us      2.34ms       869us     2.28ms     2.34ms     1.04ms       615us    67.19%
packets sent:      13900       51313       23828      49511      51313   28998.23    12449.27    60.94%
packets recv:     194209      903918      402509     819266     903918  485408.30   223338.24    50.00%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          46           4         33         34       7.12        8.64    88.31%
[info] CPU 4014.7% | Mem 661MiB

[run 2/3]
starting benchmark...
24.Main benchmark duration is started for thread #21.


52. Stopping all clients.

. Stopping all clients.
. Stopping all clients.
21


finished in 5.01s, 349815.20 req/s, 5.31GB/s
requests: 1749076 total, 1750676 started, 1749076 done, 1749076 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1749319 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 26.53GB (28482936089) total, 40.96MB (42945302) headers (space savings 82.07%), 26.48GB (28428743727) data
UDP datagram: 1065602 sent, 21350389 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :      742us    108.64ms      4.35ms    12.88ms    61.40ms     6.62ms      9.10ms    96.94%
connect     :     1.94ms     11.07ms      3.03ms    10.83ms    11.07ms     4.14ms      2.77ms    80.00%
TTFB        :     2.69ms     16.48ms      5.75ms    16.10ms    16.48ms     7.97ms      3.89ms    76.00%
req/s       :       0.00    22652.13        0.00   22339.66   22652.13    5465.64     8391.58    82.81%
min RTT     :        0us       146us         0us      123us      146us       30us        44us    82.81%
smoothed RTT:      261us    333.00ms    333.00ms   333.00ms   333.00ms   203.23ms    163.36ms    60.94%
packets sent:          4       62887           4      61852      62887   16650.81    23995.08    82.81%
packets recv:          0     1384488           0    1364050    1384488  333600.61   512190.93    82.81%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          46           7         33         34       9.47        8.84    88.29%
[info] CPU 1694.0% | Mem 730MiB

[run 3/3]
starting benchmark...
.
.Main benchmark duration is started for thread #20.

.Main benchmark duration is started for thread #30.

.

.
23.
63. Stopping all clients.

6
. Stopping all clients.

11. Stopping all clients.
61. Stopping all clients.
37. Stopping all clients.Main benchmark duration is over for thread #. Stopping all clients.57
48. Stopping all clients.Main benchmark duration is over for thread #Main benchmark duration is over for thread #53
8. Stopping all clients.Main benchmark duration is over for thread #39. Stopping all clients.
. Stopping all clients.


. Stopping all clients.

18. Stopping all clients.


finished in 5.01s, 165574.40 req/s, 2.51GB/s
requests: 827872 total, 828832 started, 827872 done, 827872 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 828026 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 12.57GB (13501400731) total, 19.39MB (20327325) headers (space savings 82.06%), 12.55GB (13475726540) data
UDP datagram: 504979 sent, 10118376 received
                 min         max         median     p95        p99        mean         sd        +/- sd
request     :     1.18ms     75.55ms      6.05ms    11.64ms    45.77ms     6.70ms      7.39ms    95.81%
connect     :     1.75ms      6.95ms      3.41ms     6.95ms     6.95ms     3.57ms      1.36ms    73.33%
TTFB        :     4.17ms      8.50ms      6.10ms     8.50ms     8.50ms     6.50ms      1.49ms    53.33%
req/s       :       0.00    23980.22        0.00    7927.12   23980.22    2587.01     5622.94    95.31%
min RTT     :        0us       103us         0us       84us      103us       17us        32us    78.13%
smoothed RTT:      284us    333.00ms    333.00ms   333.00ms   333.00ms   255.12ms    141.87ms    76.56%
packets sent:          4       65008           4      26897      65008    7890.77    16253.46    76.56%
packets recv:          0     1466639           0     484130    1466639  158100.09   343688.40    95.31%
packets lost:          0           0           0          0          0       0.00        0.00   100.00%
GRO packets :          1          45           7         33         34       9.51        8.84    88.28%
[info] CPU 736.6% | Mem 776MiB

=== Best: 511403 req/s (CPU: 4014.7%, Mem: 661MiB) ===
[info] saved results/static-h3/64/true-async-server.json
httparena-bench-true-async-server
httparena-bench-true-async-server
[info] skip: true-async-server does not subscribe to gateway-64
[info] skip: true-async-server does not subscribe to gateway-h3
[info] skip: true-async-server does not subscribe to production-stack
[info] skip: true-async-server does not subscribe to unary-grpc
[info] skip: true-async-server does not subscribe to unary-grpc-tls
[info] skip: true-async-server does not subscribe to stream-grpc
[info] skip: true-async-server does not subscribe to stream-grpc-tls
[info] skip: true-async-server does not subscribe to echo-ws
[info] skip: true-async-server does not subscribe to echo-ws-pipeline
[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/api-16-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/api-4-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/async-db-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/baseline-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/fortunes-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-16384.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-comp-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-h2c-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/json-tls-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/limited-conn-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/pipelined-512.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-4096.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-6800.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h2-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/static-h3-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/upload-32.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
httparena-postgres
[info] restoring loopback MTU to 65536
[info] restoring CPU governor → powersave

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