Correct Linux benchmark with rebuilt current distribution

This commit is contained in:
layue13 committed 2026-09-25 22:22:15 +08:00
1 parent 3f31bc1d0f
commit 9c35ec92d2
3 files changed
+24 -24

No files matched your search

@@ -2,13 +2,13 @@ Offline synthetic Minecraft 1.7.10 PLAY echo; mode=post-transfer payload=4096 by
Direct and proxy phases use the same JVM, fake backend, client code, framed payload, connection concurrency, and per-client in-flight window. Login/setup and warmup are excluded from timing.
Proxy clients switch from bench to replacement before warmup; direct clients connect to replacement. Transfer is excluded from timing.
No Forge, real pack, or real client is involved.
direct-1: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=44423.5 warmup_roundtrips=4000 window=1 one_way_MiB/s=173.53 latency_ms_p50=0.086 p95=0.099 p99=0.119 elapsed_ms=900.425
proxy-1: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=23011.2 warmup_roundtrips=4000 window=1 one_way_MiB/s=89.89 latency_ms_p50=0.166 p95=0.205 p99=0.250 elapsed_ms=1738.286
proxy-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=23249.1 warmup_roundtrips=4000 window=1 one_way_MiB/s=90.82 latency_ms_p50=0.167 p95=0.189 p99=0.224 elapsed_ms=1720.496
direct-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=47952.6 warmup_roundtrips=4000 window=1 one_way_MiB/s=187.31 latency_ms_p50=0.081 p95=0.091 p99=0.107 elapsed_ms=834.157
direct-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=46312.9 warmup_roundtrips=4000 window=1 one_way_MiB/s=180.91 latency_ms_p50=0.083 p95=0.095 p99=0.116 elapsed_ms=863.690
proxy-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=22993.0 warmup_roundtrips=4000 window=1 one_way_MiB/s=89.82 latency_ms_p50=0.169 p95=0.192 p99=0.235 elapsed_ms=1739.657
proxy-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=23279.9 warmup_roundtrips=4000 window=1 one_way_MiB/s=90.94 latency_ms_p50=0.167 p95=0.186 p99=0.227 elapsed_ms=1718.223
direct-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=47490.6 warmup_roundtrips=4000 window=1 one_way_MiB/s=185.51 latency_ms_p50=0.082 p95=0.092 p99=0.114 elapsed_ms=842.271
direct-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=47412.5 warmup_roundtrips=4000 window=1 one_way_MiB/s=185.20 latency_ms_p50=0.082 p95=0.092 p99=0.116 elapsed_ms=843.660
proxy-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=23327.5 warmup_roundtrips=4000 window=1 one_way_MiB/s=91.12 latency_ms_p50=0.167 p95=0.186 p99=0.247 elapsed_ms=1714.713
direct-1: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=44427.0 warmup_roundtrips=4000 window=1 one_way_MiB/s=173.54 latency_ms_p50=0.085 p95=0.100 p99=0.121 elapsed_ms=900.352
proxy-1: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=23137.6 warmup_roundtrips=4000 window=1 one_way_MiB/s=90.38 latency_ms_p50=0.167 p95=0.195 p99=0.246 elapsed_ms=1728.784
proxy-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=23362.4 warmup_roundtrips=4000 window=1 one_way_MiB/s=91.26 latency_ms_p50=0.167 p95=0.188 p99=0.222 elapsed_ms=1712.155
direct-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=47354.0 warmup_roundtrips=4000 window=1 one_way_MiB/s=184.98 latency_ms_p50=0.082 p95=0.092 p99=0.108 elapsed_ms=844.702
direct-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=47634.8 warmup_roundtrips=4000 window=1 one_way_MiB/s=186.07 latency_ms_p50=0.082 p95=0.092 p99=0.111 elapsed_ms=839.722
proxy-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=23463.8 warmup_roundtrips=4000 window=1 one_way_MiB/s=91.66 latency_ms_p50=0.166 p95=0.188 p99=0.224 elapsed_ms=1704.753
proxy-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=23768.2 warmup_roundtrips=4000 window=1 one_way_MiB/s=92.84 latency_ms_p50=0.165 p95=0.182 p99=0.210 elapsed_ms=1682.921
direct-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=47481.9 warmup_roundtrips=4000 window=1 one_way_MiB/s=185.48 latency_ms_p50=0.082 p95=0.092 p99=0.114 elapsed_ms=842.426
direct-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=47228.8 warmup_roundtrips=4000 window=1 one_way_MiB/s=184.49 latency_ms_p50=0.082 p95=0.093 p99=0.110 elapsed_ms=846.940
proxy-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=23489.2 warmup_roundtrips=4000 window=1 one_way_MiB/s=91.75 latency_ms_p50=0.166 p95=0.186 p99=0.221 elapsed_ms=1702.912
@@ -2,13 +2,13 @@ Offline synthetic Minecraft 1.7.10 PLAY echo; mode=post-transfer payload=4096 by
Direct and proxy phases use the same JVM, fake backend, client code, framed payload, connection concurrency, and per-client in-flight window. Login/setup and warmup are excluded from timing.
Proxy clients switch from bench to replacement before warmup; direct clients connect to replacement. Transfer is excluded from timing.
No Forge, real pack, or real client is involved.
direct-1: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=158634.4 warmup_roundtrips=4000 window=16 one_way_MiB/s=619.67 latency_ms_p50=0.354 p95=0.592 p99=0.707 elapsed_ms=252.152
proxy-1: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=115622.1 warmup_roundtrips=4000 window=16 one_way_MiB/s=451.65 latency_ms_p50=0.403 p95=1.020 p99=1.853 elapsed_ms=345.955
proxy-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=138869.6 warmup_roundtrips=4000 window=16 one_way_MiB/s=542.46 latency_ms_p50=0.396 p95=0.737 p99=1.176 elapsed_ms=288.040
direct-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=162352.5 warmup_roundtrips=4000 window=16 one_way_MiB/s=634.19 latency_ms_p50=0.351 p95=0.555 p99=0.651 elapsed_ms=246.377
direct-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=153885.7 warmup_roundtrips=4000 window=16 one_way_MiB/s=601.12 latency_ms_p50=0.354 p95=0.590 p99=0.648 elapsed_ms=259.933
proxy-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=160502.8 warmup_roundtrips=4000 window=16 one_way_MiB/s=626.96 latency_ms_p50=0.374 p95=0.540 p99=0.670 elapsed_ms=249.217
proxy-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=165346.0 warmup_roundtrips=4000 window=16 one_way_MiB/s=645.88 latency_ms_p50=0.369 p95=0.466 p99=0.582 elapsed_ms=241.917
direct-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=151876.7 warmup_roundtrips=4000 window=16 one_way_MiB/s=593.27 latency_ms_p50=0.363 p95=0.568 p99=0.656 elapsed_ms=263.372
direct-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=151993.9 warmup_roundtrips=4000 window=16 one_way_MiB/s=593.73 latency_ms_p50=0.355 p95=0.616 p99=0.678 elapsed_ms=263.169
proxy-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=170156.3 warmup_roundtrips=4000 window=16 one_way_MiB/s=664.67 latency_ms_p50=0.358 p95=0.457 p99=0.541 elapsed_ms=235.078
direct-1: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=159143.3 warmup_roundtrips=4000 window=16 one_way_MiB/s=621.65 latency_ms_p50=0.347 p95=0.558 p99=0.671 elapsed_ms=251.346
proxy-1: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=122655.6 warmup_roundtrips=4000 window=16 one_way_MiB/s=479.12 latency_ms_p50=0.400 p95=0.944 p99=1.308 elapsed_ms=326.116
proxy-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=132357.9 warmup_roundtrips=4000 window=16 one_way_MiB/s=517.02 latency_ms_p50=0.398 p95=0.797 p99=1.133 elapsed_ms=302.211
direct-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=159190.4 warmup_roundtrips=4000 window=16 one_way_MiB/s=621.84 latency_ms_p50=0.346 p95=0.512 p99=0.619 elapsed_ms=251.271
direct-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=159505.6 warmup_roundtrips=4000 window=16 one_way_MiB/s=623.07 latency_ms_p50=0.352 p95=0.550 p99=0.642 elapsed_ms=250.775
proxy-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=161767.9 warmup_roundtrips=4000 window=16 one_way_MiB/s=631.91 latency_ms_p50=0.368 p95=0.524 p99=0.975 elapsed_ms=247.268
proxy-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=169365.7 warmup_roundtrips=4000 window=16 one_way_MiB/s=661.58 latency_ms_p50=0.351 p95=0.455 p99=0.596 elapsed_ms=236.175
direct-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=156283.6 warmup_roundtrips=4000 window=16 one_way_MiB/s=610.48 latency_ms_p50=0.350 p95=0.554 p99=0.642 elapsed_ms=255.945
direct-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=165556.0 warmup_roundtrips=4000 window=16 one_way_MiB/s=646.70 latency_ms_p50=0.348 p95=0.545 p99=0.624 elapsed_ms=241.610
proxy-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=167362.7 warmup_roundtrips=4000 window=16 one_way_MiB/s=653.76 latency_ms_p50=0.360 p95=0.454 p99=0.532 elapsed_ms=239.002
@@ -1,15 +1,15 @@
# Linux container post-transfer session benchmark
Run date: 2026-09-25 (Asia/Shanghai). Source revision: `6b2d12e9b0131708b05d4c5c9e83dd3f96cf04a2`. The benchmark used the installed distribution produced by `:proxy-core:installDist` from that revision. Host: Windows 11, AMD Ryzen 7 7800X3D. Container: Docker Desktop Linux, 16 exposed CPUs, 20.97 GB reported memory, `eclipse-temurin:25-jdk` image digest `sha256:97014c4b396021f9ddb7d592a7dbedb0c4e4215c29e03dc01c393558aefb71c2`, OpenJDK 25.0.4+7.
Run date: 2026-09-25 (Asia/Shanghai). Repository revision at measurement: `3f31bc1d0f10f2f91e9979154bcd352de2a9fe60`; latest core change: `562e00be8e176784e458f0b99b5815a15a1b1212`. Before measuring, `./gradlew.bat :proxy-core:installDist --rerun-tasks --no-daemon` rebuilt all distribution tasks from the checked-out sources. Host: Windows 11, AMD Ryzen 7 7800X3D. Container: Docker Desktop Linux, 16 exposed CPUs, 20.97 GB reported memory, `eclipse-temurin:25-jdk` image digest `sha256:97014c4b396021f9ddb7d592a7dbedb0c4e4215c29e03dc01c393558aefb71c2`, OpenJDK 25.0.4+7.
Each mode ran in a fresh container and JVM. Direct and proxy phases within a mode used the same JVM, fake TCP backend, client code, four concurrent clients, 4,096-byte synthetic PLAY body and in-flight window. Proxy clients transferred from `bench` to `replacement` before warmup; direct clients connected to the same `replacement` backend. Login, transfer and 1,000 warmup exchanges per client were excluded from timing. Direct/proxy phase order alternated across five rounds. Every timed echo was checked for packet ID, sequence, length and body.
| Window | Timed echoes per phase and round | Direct roundtrips/s range | Proxy roundtrips/s range | Paired proxy/direct ratios, rounds 1–5 | Proxy p95 range |
| ---: | ---: | ---: | ---: | --- | ---: |
| 1 | 40,000 | 44,424–47,953 | 22,993–23,328 | 0.518, 0.485, 0.496, 0.490, 0.492 | 0.186–0.205 ms |
| 16 | 40,000 | 151,877–162,353 | 115,622–170,156 | 0.729, 0.855, 1.043, 1.089, 1.119 | 0.457–1.020 ms |
| 1 | 40,000 | 44,427–47,635 | 23,138–23,768 | 0.521, 0.493, 0.493, 0.501, 0.497 | 0.182–0.195 ms |
| 16 | 40,000 | 156,284–165,556 | 122,656–169,366 | 0.771, 0.831, 1.014, 1.084, 1.011 | 0.454–0.944 ms |
All five proxy phases in each mode completed 40,000 correct echoes with zero errors. The window-1 proxy added measurable loopback latency in this environment. Window-16 proxy throughput changed substantially across rounds while direct throughput also drifted, so the later rounds do not establish a stable throughput advantage. These runs cannot be compared as an isolated code-level change against earlier Windows measurements.
All five proxy phases in each mode completed 40,000 correct echoes with zero errors. The window-1 proxy added measurable loopback latency in this environment. Window-16 proxy throughput changed substantially across rounds, so the later rounds do not establish a stable throughput advantage. These runs cannot be compared as an isolated code-level change against earlier Windows measurements. An initial run using an older local distribution was discarded when its artifact timestamp revealed that the binary had not been explicitly rebuilt from the current checkout; the linked raw outputs are from the forced rebuild only.
Raw output: [window 1](2026-09-25-linux-container-post-transfer-window1.txt), [window 16](2026-09-25-linux-container-post-transfer-window16.txt). To repeat either mode from the repository root after `:proxy-core:installDist`, mount the repository read-only at `/work` in the pinned image, then run: