Skip to content

Zix 0.4.x grpc#873

Merged
MDA2AV merged 11 commits into
MDA2AV:mainfrom
prothegee:zix-0.4.x-grpc
Jun 16, 2026
Merged

Zix 0.4.x grpc#873
MDA2AV merged 11 commits into
MDA2AV:mainfrom
prothegee:zix-0.4.x-grpc

Conversation

@prothegee

@prothegee prothegee commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Description

Bump HttpArena to zix-grpc 0.4.x-rc2

Adding:

Required to call from HttpArena:

  • /benchmark -f zix-grpc
  • /benchmark -f zix-grpc --save

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

Command Description
/benchmark -f <framework> Run all benchmark tests
/benchmark -f <framework> -t <test> Run a specific test
/benchmark -f <framework> --save Run and save results (updates leaderboard on merge)

Always specify -f <framework>. Results are automatically compared against the current leaderboard.


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, ghz) are built as self-contained Docker images on first run.

@prothegee

Copy link
Copy Markdown
Contributor Author

/benchmark -f zix-grpc

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: zix-grpc | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
unary-grpc 256 7,207,296 4093.4% 342MiB +2.4% -1.2%
unary-grpc 1024 7,108,059 4216.7% 1.1GiB +3.1% ~0%
stream-grpc 64 8,332,000 36.4% 91MiB ~0% +1.1%
Full log

20Stopped all clients for thread #. Stopping all clients.22

. Stopping all clients.
29. Stopping all clients.
62
40

finished in 5.05s, 7179140.00 req/s, 451.88MB/s
requests: 35895700 total, 35998100 started, 35895700 done, 35895700 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 35895700 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 2.21GB (2369172520) total, 1.07GB (1148662400) headers (space savings 42.86%), 239.63MB (251269900) data
                     min         max         mean         sd        +/- sd
time for request:      521us     77.87ms      7.78ms      3.43ms    93.97%
time for connect:       17us      5.62ms      1.36ms       954us    71.88%
time to 1st byte:     5.55ms     84.34ms     27.62ms     15.00ms    68.85%
req/s           :    6718.47     7479.30     7009.13      109.67    66.99%
[info] CPU 4216.7% | Mem 1.1GiB

[run 3/3]
starting benchmark...
60.
58.
.Main benchmark duration is started for thread #27.
18.Main benchmark duration is started for thread #49.

12Main benchmark duration is started for thread #43.
46.


.
0.
Application protocol: h2c
26.
40.
. Stopping all clients.
16Stopped all clients for thread #. Stopping all clients.
15
36
59. Stopping all clients.

finished in 5.07s, 7121900.00 req/s, 448.28MB/s
requests: 35609500 total, 35711900 started, 35609500 done, 35609500 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 35609500 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 2.19GB (2350283320) total, 1.06GB (1139504000) headers (space savings 42.86%), 237.72MB (249266500) data
                     min         max         mean         sd        +/- sd
time for request:      641us     73.03ms      7.80ms      3.26ms    93.65%
time for connect:       21us      5.68ms      1.26ms       821us    67.48%
time to 1st byte:     5.52ms     82.12ms     28.17ms     15.41ms    66.21%
req/s           :    6739.00     7359.82     6953.23      105.21    66.60%
[info] CPU 4164.2% | Mem 1.1GiB

=== Best: 7108059 req/s (CPU: 4216.7%, Mem: 1.1GiB) ===
[info] saved results/unary-grpc/1024/zix-grpc.json
httparena-bench-zix-grpc
httparena-bench-zix-grpc
[info] skip: zix-grpc does not subscribe to unary-grpc-tls

==============================================
=== zix-grpc / stream-grpc / 64c (tool=ghz) ===
==============================================
[info] waiting for server...
[info] gRPC server ready
[info] ghz warm-up 2s

[run 1/3]

Summary:
  Count:	8572
  Total:	5.07 s
  Slowest:	857.20 ms
  Fastest:	18.81 ms
  Average:	145.01 ms
  Requests/sec:	1691.55

Response time histogram:
  18.813  [1]    |
  102.652 [3007] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  186.490 [2871] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  270.328 [1632] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  354.166 [507]  |∎∎∎∎∎∎∎
  438.004 [197]  |∎∎∎
  521.842 [81]   |∎
  605.681 [21]   |
  689.519 [12]   |
  773.357 [1]    |
  857.195 [2]    |

Latency distribution:
  10 % in 30.99 ms 
  25 % in 44.71 ms 
  50 % in 151.03 ms 
  75 % in 193.84 ms 
  90 % in 268.96 ms 
  95 % in 332.72 ms 
  99 % in 473.35 ms 

Status code distribution:
  [OK]         8332 responses   
  [Canceled]   240 responses    

Error distribution:
  [240]   rpc error: code = Canceled desc = grpc: the client connection is closing   
[info] CPU 36.4% | Mem 91MiB

[run 2/3]

Summary:
  Count:	8548
  Total:	5.06 s
  Slowest:	878.68 ms
  Fastest:	19.88 ms
  Average:	144.94 ms
  Requests/sec:	1687.99

Response time histogram:
  19.876  [1]    |
  105.756 [3452] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  191.636 [2760] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  277.516 [1133] |∎∎∎∎∎∎∎∎∎∎∎∎∎
  363.396 [585]  |∎∎∎∎∎∎∎
  449.276 [227]  |∎∎∎
  535.156 [68]   |∎
  621.036 [50]   |∎
  706.916 [22]   |
  792.796 [5]    |
  878.676 [4]    |

Latency distribution:
  10 % in 31.22 ms 
  25 % in 44.61 ms 
  50 % in 141.43 ms 
  75 % in 191.93 ms 
  90 % in 293.74 ms 
  95 % in 352.59 ms 
  99 % in 528.40 ms 

Status code distribution:
  [OK]         8307 responses   
  [Canceled]   241 responses    

Error distribution:
  [241]   rpc error: code = Canceled desc = grpc: the client connection is closing   
[info] CPU 38.3% | Mem 92MiB

[run 3/3]

Summary:
  Count:	8559
  Total:	5.06 s
  Slowest:	1.29 s
  Fastest:	19.42 ms
  Average:	144.31 ms
  Requests/sec:	1690.44

Response time histogram:
  19.419   [1]    |
  146.398  [4056] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  273.378  [3349] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  400.358  [680]  |∎∎∎∎∎∎∎
  527.337  [166]  |∎∎
  654.317  [34]   |
  781.297  [16]   |
  908.276  [0]    |
  1035.256 [1]    |
  1162.236 [0]    |
  1289.215 [1]    |

Latency distribution:
  10 % in 31.42 ms 
  25 % in 47.33 ms 
  50 % in 148.15 ms 
  75 % in 186.32 ms 
  90 % in 281.06 ms 
  95 % in 342.25 ms 
  99 % in 483.48 ms 

Status code distribution:
  [Canceled]   255 responses    
  [OK]         8304 responses   

Error distribution:
  [255]   rpc error: code = Canceled desc = grpc: the client connection is closing   
[info] CPU 39.4% | Mem 94MiB

=== Best: 8332000 req/s (CPU: 36.4%, Mem: 91MiB) ===
[info] saved results/stream-grpc/64/zix-grpc.json
httparena-bench-zix-grpc
httparena-bench-zix-grpc
[info] skip: zix-grpc does not subscribe to stream-grpc-tls
[info] skip: zix-grpc does not subscribe to echo-ws
[info] skip: zix-grpc 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/stream-grpc-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

This was referenced Jun 14, 2026
@prothegee prothegee marked this pull request as draft June 14, 2026 23:26
@prothegee

Copy link
Copy Markdown
Contributor Author

Remark: Converting to draft.

Reason: Dilemma tuning dispatch model.

PR Relations:

@prothegee prothegee marked this pull request as ready for review June 15, 2026 22:20
@prothegee

prothegee commented Jun 15, 2026

Copy link
Copy Markdown
Contributor Author

Attempt 2 new approach bench.
Bump to rc2 (PR init message update)

  • [ ] rc2 test 1
  • [ ] rc2 test 2

Once those two satisfied, 0.4.x will be set and assign.

@prothegee

Copy link
Copy Markdown
Contributor Author

Attempt rc2 test 1

@prothegee

Copy link
Copy Markdown
Contributor Author

/benchmark -f zix-grpc

@github-actions

Copy link
Copy Markdown
Contributor

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

@prothegee prothegee marked this pull request as draft June 16, 2026 08:47
@prothegee

Copy link
Copy Markdown
Contributor Author

Finalizing 0.4.x-rc2 to 0.4.x

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: zix-grpc | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
unary-grpc 256 7,303,313 2931.3% 342MiB +3.7% -1.2%
unary-grpc 1024 7,205,968 3039.2% 1.1GiB +4.5% ~0%
stream-grpc 64 8,362,000 39.0% 94MiB +0.4% +4.4%
Full log
37Main benchmark duration is over for thread #. Stopping all clients.22
. Stopping all clients.

finished in 5.06s, 7292440.00 req/s, 459.02MB/s
requests: 36462200 total, 36564600 started, 36462200 done, 36462200 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 36462200 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 2.24GB (2406561520) total, 1.09GB (1166790400) headers (space savings 42.86%), 243.41MB (255235400) data
                     min         max         mean         sd        +/- sd
time for request:      480us     75.72ms      7.56ms      3.61ms    94.73%
time for connect:       18us      5.45ms      1.33ms       914us    65.33%
time to 1st byte:     5.46ms     80.90ms     30.64ms     17.72ms    67.19%
req/s           :    6937.09     7497.27     7119.02       94.48    69.14%
[info] CPU 3039.2% | Mem 1.1GiB

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

progress: 25Main benchmark duration is started for thread #46.
% of clients started

Application protocol: h2c
18.Main benchmark duration is started for thread #
3.
.
.Warm-up phase is over for thread #

.

6213.
.Main benchmark duration is started for thread #62.

61. Stopping all clients.

29. Stopping all clients.
51. Stopping all clients.
52


31. Stopping all clients.

finished in 5.06s, 7264820.00 req/s, 457.28MB/s
requests: 36324100 total, 36426500 started, 36324100 done, 36324100 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 36324100 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 2.23GB (2397446920) total, 1.08GB (1162371200) headers (space savings 42.86%), 242.49MB (254268700) data
                     min         max         mean         sd        +/- sd
time for request:      470us     70.63ms      7.59ms      3.41ms    94.51%
time for connect:       20us      3.65ms      1.32ms       811us    62.21%
time to 1st byte:     5.27ms     74.98ms     28.54ms     16.58ms    65.53%
req/s           :    6876.48     7499.87     7092.72       91.85    67.29%
[info] CPU 3081.2% | Mem 1.1GiB

=== Best: 7205968 req/s (CPU: 3039.2%, Mem: 1.1GiB) ===
[info] saved results/unary-grpc/1024/zix-grpc.json
httparena-bench-zix-grpc
httparena-bench-zix-grpc
[info] skip: zix-grpc does not subscribe to unary-grpc-tls

==============================================
=== zix-grpc / stream-grpc / 64c (tool=ghz) ===
==============================================
[info] waiting for server...
[info] gRPC server ready
[info] ghz warm-up 2s

[run 1/3]

Summary:
  Count:	8591
  Total:	5.08 s
  Slowest:	736.47 ms
  Fastest:	20.36 ms
  Average:	144.88 ms
  Requests/sec:	1689.49

Response time histogram:
  20.364  [1]    |
  91.974  [2860] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  163.585 [2106] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  235.196 [2216] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  306.807 [471]  |∎∎∎∎∎∎∎
  378.417 [392]  |∎∎∎∎∎
  450.028 [174]  |∎∎
  521.639 [73]   |∎
  593.250 [42]   |∎
  664.861 [10]   |
  736.471 [3]    |

Latency distribution:
  10 % in 31.60 ms 
  25 % in 47.80 ms 
  50 % in 146.14 ms 
  75 % in 190.25 ms 
  90 % in 287.98 ms 
  95 % in 350.04 ms 
  99 % in 488.79 ms 

Status code distribution:
  [OK]         8348 responses   
  [Canceled]   243 responses    

Error distribution:
  [243]   rpc error: code = Canceled desc = grpc: the client connection is closing   
[info] CPU 37.1% | Mem 90MiB

[run 2/3]

Summary:
  Count:	8572
  Total:	5.07 s
  Slowest:	1.07 s
  Fastest:	19.03 ms
  Average:	145.81 ms
  Requests/sec:	1691.30

Response time histogram:
  19.033   [1]    |
  124.561  [3441] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  230.089  [3739] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  335.617  [670]  |∎∎∎∎∎∎∎
  441.146  [308]  |∎∎∎
  546.674  [109]  |∎
  652.202  [35]   |
  757.731  [7]    |
  863.259  [4]    |
  968.787  [0]    |
  1074.316 [7]    |

Latency distribution:
  10 % in 31.20 ms 
  25 % in 45.05 ms 
  50 % in 151.95 ms 
  75 % in 192.43 ms 
  90 % in 279.60 ms 
  95 % in 345.16 ms 
  99 % in 502.45 ms 

Status code distribution:
  [OK]         8321 responses   
  [Canceled]   251 responses    

Error distribution:
  [251]   rpc error: code = Canceled desc = grpc: the client connection is closing   
[info] CPU 37.6% | Mem 91MiB

[run 3/3]

Summary:
  Count:	8604
  Total:	5.07 s
  Slowest:	715.12 ms
  Fastest:	18.36 ms
  Average:	145.48 ms
  Requests/sec:	1698.50

Response time histogram:
  18.357  [1]    |
  88.033  [2644] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  157.709 [1670] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  227.384 [2941] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  297.060 [507]  |∎∎∎∎∎∎∎
  366.736 [382]  |∎∎∎∎∎
  436.412 [125]  |∎∎
  506.088 [50]   |∎
  575.764 [23]   |
  645.440 [13]   |
  715.116 [6]    |

Latency distribution:
  10 % in 30.30 ms 
  25 % in 42.88 ms 
  50 % in 155.31 ms 
  75 % in 193.74 ms 
  90 % in 263.86 ms 
  95 % in 324.32 ms 
  99 % in 447.49 ms 

Status code distribution:
  [OK]         8362 responses   
  [Canceled]   242 responses    

Error distribution:
  [242]   rpc error: code = Canceled desc = grpc: the client connection is closing   
[info] CPU 39.0% | Mem 94MiB

=== Best: 8362000 req/s (CPU: 39.0%, Mem: 94MiB) ===
[info] saved results/stream-grpc/64/zix-grpc.json
httparena-bench-zix-grpc
httparena-bench-zix-grpc
[info] skip: zix-grpc does not subscribe to stream-grpc-tls
[info] skip: zix-grpc does not subscribe to echo-ws
[info] skip: zix-grpc 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/stream-grpc-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@prothegee prothegee marked this pull request as ready for review June 16, 2026 17:50
@prothegee

Copy link
Copy Markdown
Contributor Author

Bump to zix 0.4.x

@prothegee

Copy link
Copy Markdown
Contributor Author

/benchmark -f zix-grpc

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: zix-grpc | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
unary-grpc 256 7,270,218 2998.3% 392MiB +3.3% +13.3%
unary-grpc 1024 7,102,978 2991.6% 1.2GiB +3.0% +9.1%
stream-grpc 64 8,365,000 35.4% 140MiB +0.4% +55.6%
Full log
.
37% of clients started
Application protocol: h2c
38. Stopping all clients.
27Stopped all clients for thread #38
. Stopping all clients.
27Stopped all clients for thread #47

. Stopping all clients.
1921Stopped all clients for thread #. Stopping all clients.
. Stopping all clients.
6
21


finished in 5.07s, 7202420.00 req/s, 453.35MB/s
requests: 36012100 total, 36114500 started, 36012100 done, 36012100 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 36012100 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 2.21GB (2376854920) total, 1.07GB (1152387200) headers (space savings 42.86%), 240.41MB (252084700) data
                     min         max         mean         sd        +/- sd
time for request:      546us     62.84ms      7.56ms      2.79ms    92.57%
time for connect:       18us      5.05ms      1.33ms       836us    66.02%
time to 1st byte:     5.96ms     65.52ms     24.05ms     13.19ms    66.89%
req/s           :    6677.82     7479.14     7031.59      122.44    70.70%
[info] CPU 2991.6% | Mem 1.2GiB

[run 3/3]
starting benchmark...
13.

Application protocol: h2c
.
.
58.
.
41.

48

finished in 5.07s, 7127920.00 req/s, 448.66MB/s
requests: 35639600 total, 35742000 started, 35639600 done, 35639600 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 35639600 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 2.19GB (2352269920) total, 1.06GB (1140467200) headers (space savings 42.86%), 237.92MB (249477200) data
                     min         max         mean         sd        +/- sd
time for request:      632us     67.86ms      7.63ms      3.24ms    94.70%
time for connect:       18us      4.09ms      1.26ms       776us    61.43%
time to 1st byte:     5.72ms     71.92ms     27.85ms     16.16ms    70.12%
req/s           :    6738.30     7316.24     6957.95       89.19    68.95%
[info] CPU 2931.8% | Mem 1.2GiB

=== Best: 7102978 req/s (CPU: 2991.6%, Mem: 1.2GiB) ===
[info] saved results/unary-grpc/1024/zix-grpc.json
httparena-bench-zix-grpc
httparena-bench-zix-grpc
[info] skip: zix-grpc does not subscribe to unary-grpc-tls

==============================================
=== zix-grpc / stream-grpc / 64c (tool=ghz) ===
==============================================
[info] waiting for server...
[info] gRPC server ready
[info] ghz warm-up 2s

[run 1/3]

Summary:
  Count:	8621
  Total:	5.07 s
  Slowest:	745.45 ms
  Fastest:	18.91 ms
  Average:	144.21 ms
  Requests/sec:	1699.12

Response time histogram:
  18.908  [1]    |
  91.562  [2526] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  164.216 [2358] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  236.870 [2508] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  309.524 [570]  |∎∎∎∎∎∎∎∎∎
  382.178 [292]  |∎∎∎∎∎
  454.832 [66]   |∎
  527.486 [32]   |∎
  600.140 [7]    |
  672.794 [2]    |
  745.448 [3]    |

Latency distribution:
  10 % in 31.45 ms 
  25 % in 50.71 ms 
  50 % in 154.11 ms 
  75 % in 191.09 ms 
  90 % in 252.95 ms 
  95 % in 307.17 ms 
  99 % in 400.82 ms 

Status code distribution:
  [OK]            8365 responses   
  [Canceled]      255 responses    
  [Unavailable]   1 responses      

Error distribution:
  [255]   rpc error: code = Canceled desc = grpc: the client connection is closing                                                                     
  [1]     rpc error: code = Unavailable desc = error reading from server: read tcp 127.0.0.1:51674->127.0.0.1:8080: use of closed network connection   
[info] CPU 35.4% | Mem 140MiB

[run 2/3]

Summary:
  Count:	8490
  Total:	5.06 s
  Slowest:	692.21 ms
  Fastest:	18.92 ms
  Average:	146.76 ms
  Requests/sec:	1677.49

Response time histogram:
  18.917  [1]    |
  86.246  [2530] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  153.576 [1270] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  220.906 [3290] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  288.235 [504]  |∎∎∎∎∎∎
  355.565 [444]  |∎∎∎∎∎
  422.895 [146]  |∎∎
  490.225 [43]   |∎
  557.554 [15]   |
  624.884 [3]    |
  692.214 [4]    |

Latency distribution:
  10 % in 31.17 ms 
  25 % in 44.76 ms 
  50 % in 158.98 ms 
  75 % in 194.68 ms 
  90 % in 262.33 ms 
  95 % in 322.27 ms 
  99 % in 409.73 ms 

Status code distribution:
  [OK]         8250 responses   
  [Canceled]   240 responses    

Error distribution:
  [240]   rpc error: code = Canceled desc = grpc: the client connection is closing   
[info] CPU 36.3% | Mem 141MiB

[run 3/3]

Summary:
  Count:	8559
  Total:	5.06 s
  Slowest:	951.40 ms
  Fastest:	18.25 ms
  Average:	145.35 ms
  Requests/sec:	1691.46

Response time histogram:
  18.249  [1]    |
  111.564 [3008] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  204.879 [3730] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  298.194 [973]  |∎∎∎∎∎∎∎∎∎∎
  391.509 [418]  |∎∎∎∎
  484.824 [104]  |∎
  578.139 [46]   |
  671.453 [18]   |
  764.768 [9]    |
  858.083 [3]    |
  951.398 [1]    |

Latency distribution:
  10 % in 31.70 ms 
  25 % in 50.49 ms 
  50 % in 150.30 ms 
  75 % in 192.82 ms 
  90 % in 261.24 ms 
  95 % in 321.77 ms 
  99 % in 482.55 ms 

Status code distribution:
  [OK]         8311 responses   
  [Canceled]   248 responses    

Error distribution:
  [248]   rpc error: code = Canceled desc = grpc: the client connection is closing   
[info] CPU 41.0% | Mem 144MiB

=== Best: 8365000 req/s (CPU: 35.4%, Mem: 140MiB) ===
[info] saved results/stream-grpc/64/zix-grpc.json
httparena-bench-zix-grpc
httparena-bench-zix-grpc
[info] skip: zix-grpc does not subscribe to stream-grpc-tls
[info] skip: zix-grpc does not subscribe to echo-ws
[info] skip: zix-grpc 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/stream-grpc-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@prothegee

Copy link
Copy Markdown
Contributor Author

/benchmark -f zix-grpc --save

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ /benchmark --save cannot start: main has diverged and cannot be auto-merged into this branch. Please merge or rebase main manually, push, and re-run /benchmark --save.

@prothegee

Copy link
Copy Markdown
Contributor Author

/benchmark -f zix-grpc --save

@github-actions

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results

Framework: zix-grpc | Test: all tests

Test Conn RPS CPU Mem Δ RPS Δ Mem
unary-grpc 256 7,239,103 2927.0% 394MiB +2.8% +13.9%
unary-grpc 1024 7,122,075 3008.6% 1.2GiB +3.3% +9.1%
stream-grpc 64 8,468,000 37.9% 141MiB +1.6% +56.7%
Full log
.
4Main benchmark duration is started for thread #32.
.
54.
.
.
60
2. Stopping all clients.
47

finished in 5.05s, 7154920.00 req/s, 450.36MB/s
requests: 35774600 total, 35877000 started, 35774600 done, 35774600 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 35774600 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 2.20GB (2361179920) total, 1.07GB (1144787200) headers (space savings 42.86%), 238.82MB (250422200) data
                     min         max         mean         sd        +/- sd
time for request:      461us     61.46ms      7.67ms      3.23ms    95.84%
time for connect:       19us      3.80ms      1.36ms       819us    64.84%
time to 1st byte:     6.69ms     64.72ms     29.01ms     15.70ms    59.57%
req/s           :    6838.49     7318.73     6985.46       77.43    72.36%
[info] CPU 3074.9% | Mem 1.2GiB

[run 3/3]
starting benchmark...
Application protocol: h2c
35.
50.
.
40.

29.Warm-up phase is over for thread #39.
5.
16.


50. Stopping all clients.
. Stopping all clients.
. Stopping all clients.

finished in 5.06s, 7207540.00 req/s, 453.67MB/s
requests: 36037700 total, 36140100 started, 36037700 done, 36037700 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 36037700 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 2.22GB (2378544520) total, 1.07GB (1153206400) headers (space savings 42.86%), 240.58MB (252263900) data
                     min         max         mean         sd        +/- sd
time for request:      507us     84.09ms      7.63ms      3.76ms    95.36%
time for connect:       21us      5.33ms      1.30ms       827us    65.63%
time to 1st byte:     5.15ms     86.76ms     31.09ms     18.85ms    62.01%
req/s           :    6779.29     7433.36     7036.43       91.81    67.29%
[info] CPU 3008.6% | Mem 1.2GiB

=== Best: 7122075 req/s (CPU: 3008.6%, Mem: 1.2GiB) ===
[info] saved results/unary-grpc/1024/zix-grpc.json
httparena-bench-zix-grpc
httparena-bench-zix-grpc
[info] skip: zix-grpc does not subscribe to unary-grpc-tls

==============================================
=== zix-grpc / stream-grpc / 64c (tool=ghz) ===
==============================================
[info] waiting for server...
[info] gRPC server ready
[info] ghz warm-up 2s

[run 1/3]

Summary:
  Count:	8436
  Total:	5.06 s
  Slowest:	961.73 ms
  Fastest:	19.54 ms
  Average:	147.57 ms
  Requests/sec:	1666.35

Response time histogram:
  19.538  [1]    |
  113.757 [3387] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  207.977 [3342] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  302.196 [679]  |∎∎∎∎∎∎∎∎
  396.415 [479]  |∎∎∎∎∎∎
  490.634 [185]  |∎∎
  584.854 [63]   |∎
  679.073 [31]   |
  773.292 [12]   |
  867.511 [6]    |
  961.731 [3]    |

Latency distribution:
  10 % in 31.75 ms 
  25 % in 45.02 ms 
  50 % in 150.16 ms 
  75 % in 194.53 ms 
  90 % in 297.26 ms 
  95 % in 365.37 ms 
  99 % in 528.00 ms 

Status code distribution:
  [OK]         8188 responses   
  [Canceled]   248 responses    

Error distribution:
  [248]   rpc error: code = Canceled desc = grpc: the client connection is closing   
[info] CPU 35.6% | Mem 139MiB

[run 2/3]

Summary:
  Count:	8631
  Total:	5.06 s
  Slowest:	854.79 ms
  Fastest:	19.33 ms
  Average:	144.88 ms
  Requests/sec:	1704.44

Response time histogram:
  19.328  [1]    |
  102.875 [2981] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  186.421 [2944] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  269.967 [1576] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  353.514 [600]  |∎∎∎∎∎∎∎∎
  437.060 [193]  |∎∎∎
  520.606 [56]   |∎
  604.152 [21]   |
  687.699 [14]   |
  771.245 [3]    |
  854.791 [1]    |

Latency distribution:
  10 % in 30.54 ms 
  25 % in 44.64 ms 
  50 % in 150.53 ms 
  75 % in 194.83 ms 
  90 % in 277.08 ms 
  95 % in 330.77 ms 
  99 % in 446.13 ms 

Status code distribution:
  [Unavailable]   3 responses      
  [OK]            8390 responses   
  [Canceled]      238 responses    

Error distribution:
  [2]     rpc error: code = Unavailable desc = error reading from server: read tcp 127.0.0.1:36382->127.0.0.1:8080: use of closed network connection   
  [238]   rpc error: code = Canceled desc = grpc: the client connection is closing                                                                     
  [1]     rpc error: code = Unavailable desc = error reading from server: read tcp 127.0.0.1:36324->127.0.0.1:8080: use of closed network connection   
[info] CPU 36.3% | Mem 140MiB

[run 3/3]

Summary:
  Count:	8572
  Total:	5.09 s
  Slowest:	537.98 ms
  Fastest:	20.67 ms
  Average:	146.13 ms
  Requests/sec:	1683.65

Response time histogram:
  20.669  [1]    |
  72.400  [2324] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  124.131 [480]  |∎∎∎∎∎∎∎∎
  175.862 [2559] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  227.593 [2051] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  279.324 [416]  |∎∎∎∎∎∎∎
  331.055 [393]  |∎∎∎∎∎∎
  382.786 [158]  |∎∎
  434.517 [52]   |∎
  486.248 [21]   |
  537.979 [13]   |

Latency distribution:
  10 % in 31.20 ms 
  25 % in 50.21 ms 
  50 % in 158.53 ms 
  75 % in 190.40 ms 
  90 % in 252.20 ms 
  95 % in 306.06 ms 
  99 % in 385.19 ms 

Status code distribution:
  [OK]         8468 responses   
  [Canceled]   104 responses    

Error distribution:
  [104]   rpc error: code = Canceled desc = grpc: the client connection is closing   
[info] CPU 37.9% | Mem 141MiB

=== Best: 8468000 req/s (CPU: 37.9%, Mem: 141MiB) ===
[info] saved results/stream-grpc/64/zix-grpc.json
httparena-bench-zix-grpc
httparena-bench-zix-grpc
[info] skip: zix-grpc does not subscribe to stream-grpc-tls
[info] skip: zix-grpc does not subscribe to echo-ws
[info] skip: zix-grpc 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/stream-grpc-64.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-1024.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/unary-grpc-256.json
[updated] /home/diogo/actions-runner/_work/HttpArena/HttpArena/site/data/current.json
[info] done
[info] restoring loopback MTU to 65536

@MDA2AV MDA2AV merged commit d888fe9 into MDA2AV:main Jun 16, 2026
@prothegee

Copy link
Copy Markdown
Contributor Author

Thanks! Deleting branch, again.

@prothegee prothegee deleted the zix-0.4.x-grpc branch June 16, 2026 20:16
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