From ba06e0f7be2a997a4f73e2513b4a864227a12a24 Mon Sep 17 00:00:00 2001 From: layue13 Date: Sat, 26 Sep 2026 02:37:24 +0800 Subject: [PATCH] Record post-transfer synthetic session baseline --- ...26-09-26-883d439-post-transfer-window1.txt | 38 +++++++++++++++++++ ...6-09-26-883d439-post-transfer-window16.txt | 37 ++++++++++++++++++ .../2026-09-26-post-transfer-session.md | 17 +++++++++ 3 files changed, 92 insertions(+) create mode 100644 benchmarks/results/2026-09-26-883d439-post-transfer-window1.txt create mode 100644 benchmarks/results/2026-09-26-883d439-post-transfer-window16.txt create mode 100644 benchmarks/results/2026-09-26-post-transfer-session.md diff --git a/benchmarks/results/2026-09-26-883d439-post-transfer-window1.txt b/benchmarks/results/2026-09-26-883d439-post-transfer-window1.txt new file mode 100644 index 0000000..6fe0cb7 --- /dev/null +++ b/benchmarks/results/2026-09-26-883d439-post-transfer-window1.txt @@ -0,0 +1,38 @@ +Starting a Gradle Daemon (subsequent builds will be faster) +Reusing configuration cache. +> Task :proxy-plugin-api:processResources NO-SOURCE +> Task :dns-discovery:processResources UP-TO-DATE +> Task :proxy-core:processResources UP-TO-DATE +> Task :agent-discovery:processResources UP-TO-DATE +> Task :proxy-plugin-api:compileJava UP-TO-DATE +> Task :proxy-plugin-api:classes UP-TO-DATE +> Task :proxy-plugin-api:jar UP-TO-DATE +> Task :agent-discovery:compileJava UP-TO-DATE +> Task :agent-discovery:classes UP-TO-DATE +> Task :dns-discovery:compileJava UP-TO-DATE +> Task :dns-discovery:classes UP-TO-DATE +> Task :agent-discovery:jar UP-TO-DATE +> Task :dns-discovery:jar UP-TO-DATE +> Task :proxy-core:compileJava UP-TO-DATE +> Task :proxy-core:classes UP-TO-DATE +> Task :proxy-core:jar UP-TO-DATE +> Task :proxy-core:startScripts UP-TO-DATE +> Task :proxy-core:installDist UP-TO-DATE + +BUILD SUCCESSFUL in 37s +13 actionable tasks: 13 up-to-date +Configuration cache entry reused. +Offline synthetic Minecraft 1.7.10 PLAY echo; mode=post-transfer payload=4096 bytes frame=4098 bytes connections=4 measured_roundtrips_per_connection=10000 warmup_per_connection=1000 window_per_connection=1 repeats=5 +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=50300.6 warmup_roundtrips=4000 window=1 one_way_MiB/s=196.49 latency_ms_p50=0.071 p95=0.117 p99=0.140 elapsed_ms=795.220 +proxy-1: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=28167.7 warmup_roundtrips=4000 window=1 one_way_MiB/s=110.03 latency_ms_p50=0.129 p95=0.194 p99=0.313 elapsed_ms=1420.065 +proxy-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=25543.3 warmup_roundtrips=4000 window=1 one_way_MiB/s=99.78 latency_ms_p50=0.143 p95=0.203 p99=0.338 elapsed_ms=1565.967 +direct-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=40910.3 warmup_roundtrips=4000 window=1 one_way_MiB/s=159.81 latency_ms_p50=0.082 p95=0.137 p99=0.281 elapsed_ms=977.749 +direct-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=29297.7 warmup_roundtrips=4000 window=1 one_way_MiB/s=114.44 latency_ms_p50=0.082 p95=0.163 p99=0.732 elapsed_ms=1365.297 +proxy-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=26350.4 warmup_roundtrips=4000 window=1 one_way_MiB/s=102.93 latency_ms_p50=0.130 p95=0.206 p99=0.307 elapsed_ms=1518.003 +proxy-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=25262.0 warmup_roundtrips=4000 window=1 one_way_MiB/s=98.68 latency_ms_p50=0.150 p95=0.200 p99=0.254 elapsed_ms=1583.406 +direct-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=45658.8 warmup_roundtrips=4000 window=1 one_way_MiB/s=178.35 latency_ms_p50=0.074 p95=0.110 p99=0.211 elapsed_ms=876.064 +direct-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=48946.6 warmup_roundtrips=4000 window=1 one_way_MiB/s=191.20 latency_ms_p50=0.074 p95=0.106 p99=0.134 elapsed_ms=817.218 +proxy-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=29451.9 warmup_roundtrips=4000 window=1 one_way_MiB/s=115.05 latency_ms_p50=0.126 p95=0.172 p99=0.214 elapsed_ms=1358.147 diff --git a/benchmarks/results/2026-09-26-883d439-post-transfer-window16.txt b/benchmarks/results/2026-09-26-883d439-post-transfer-window16.txt new file mode 100644 index 0000000..b52cce6 --- /dev/null +++ b/benchmarks/results/2026-09-26-883d439-post-transfer-window16.txt @@ -0,0 +1,37 @@ +Reusing configuration cache. +> Task :proxy-plugin-api:processResources NO-SOURCE +> Task :dns-discovery:processResources UP-TO-DATE +> Task :proxy-core:processResources UP-TO-DATE +> Task :agent-discovery:processResources UP-TO-DATE +> Task :proxy-plugin-api:compileJava UP-TO-DATE +> Task :proxy-plugin-api:classes UP-TO-DATE +> Task :agent-discovery:compileJava UP-TO-DATE +> Task :proxy-plugin-api:jar UP-TO-DATE +> Task :agent-discovery:classes UP-TO-DATE +> Task :dns-discovery:compileJava UP-TO-DATE +> Task :proxy-core:compileJava UP-TO-DATE +> Task :proxy-core:classes UP-TO-DATE +> Task :dns-discovery:classes UP-TO-DATE +> Task :agent-discovery:jar UP-TO-DATE +> Task :proxy-core:jar UP-TO-DATE +> Task :dns-discovery:jar UP-TO-DATE +> Task :proxy-core:startScripts UP-TO-DATE +> Task :proxy-core:installDist UP-TO-DATE + +BUILD SUCCESSFUL in 19s +13 actionable tasks: 13 up-to-date +Configuration cache entry reused. +Offline synthetic Minecraft 1.7.10 PLAY echo; mode=post-transfer payload=4096 bytes frame=4098 bytes connections=4 measured_roundtrips_per_connection=10000 warmup_per_connection=1000 window_per_connection=16 repeats=5 +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=92763.5 warmup_roundtrips=4000 window=16 one_way_MiB/s=362.36 latency_ms_p50=0.663 p95=0.945 p99=1.160 elapsed_ms=431.204 +proxy-1: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=68074.0 warmup_roundtrips=4000 window=16 one_way_MiB/s=265.91 latency_ms_p50=0.758 p95=1.712 p99=3.170 elapsed_ms=587.596 +proxy-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=69577.8 warmup_roundtrips=4000 window=16 one_way_MiB/s=271.79 latency_ms_p50=0.719 p95=1.627 p99=3.181 elapsed_ms=574.896 +direct-2: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=82059.6 warmup_roundtrips=4000 window=16 one_way_MiB/s=320.55 latency_ms_p50=0.687 p95=1.141 p99=1.596 elapsed_ms=487.451 +direct-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=77019.2 warmup_roundtrips=4000 window=16 one_way_MiB/s=300.86 latency_ms_p50=0.762 p95=1.233 p99=1.648 elapsed_ms=519.351 +proxy-3: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=73197.6 warmup_roundtrips=4000 window=16 one_way_MiB/s=285.93 latency_ms_p50=0.781 p95=1.398 p99=1.972 elapsed_ms=546.466 +proxy-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=63255.5 warmup_roundtrips=4000 window=16 one_way_MiB/s=247.09 latency_ms_p50=0.880 p95=1.757 p99=2.976 elapsed_ms=632.356 +direct-4: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=89168.1 warmup_roundtrips=4000 window=16 one_way_MiB/s=348.31 latency_ms_p50=0.666 p95=1.000 p99=1.556 elapsed_ms=448.591 +direct-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=87364.7 warmup_roundtrips=4000 window=16 one_way_MiB/s=341.27 latency_ms_p50=0.674 p95=1.044 p99=1.532 elapsed_ms=457.851 +proxy-5: roundtrips=40000 echoes=40000 correct=40000 errors=0 roundtrips/s=98301.9 warmup_roundtrips=4000 window=16 one_way_MiB/s=383.99 latency_ms_p50=0.632 p95=0.776 p99=0.964 elapsed_ms=406.910 diff --git a/benchmarks/results/2026-09-26-post-transfer-session.md b/benchmarks/results/2026-09-26-post-transfer-session.md new file mode 100644 index 0000000..b2273ec --- /dev/null +++ b/benchmarks/results/2026-09-26-post-transfer-session.md @@ -0,0 +1,17 @@ +# Post-transfer synthetic session benchmark + +Run date: 2026-09-26 (Asia/Shanghai). Revision: `883d439`. Windows 11, Zulu OpenJDK 25.0.4.1, local loopback. The same benchmark JVM alternated direct and proxy phases against the same synthetic echo backend. Each phase used four connections, 4,096-byte PLAY bodies, 1,000 validated warmup exchanges and 10,000 measured exchanges per connection. Proxy clients transferred to the replacement backend before warmup; direct clients connected to that same backend. Login, transfer and warmup were outside the timed phase. + +```powershell +.\benchmarks\run-proxy-session.ps1 -Connections 4 -Messages 10000 -Warmup 1000 -Payload 4096 -Repeats 5 -Window 1 -Mode post-transfer +.\benchmarks\run-proxy-session.ps1 -Connections 4 -Messages 10000 -Warmup 1000 -Payload 4096 -Repeats 5 -Window 16 -Mode post-transfer +``` + +| In-flight window | Direct roundtrips/s range | Proxy roundtrips/s range | Paired proxy/direct ratios, rounds 1–5 | Proxy p95 latency range | +| ---: | ---: | ---: | --- | ---: | +| 1 | 29,298–50,301 | 25,262–29,452 | 0.560, 0.624, 0.899, 0.553, 0.602 | 0.172–0.206 ms | +| 16 | 77,019–92,764 | 63,256–98,302 | 0.734, 0.848, 0.950, 0.709, 1.125 | 0.776–1.757 ms | + +All ten direct and ten proxy phases validated 40,000 measured echoes per phase with zero errors. Raw outputs: [window 1](2026-09-26-883d439-post-transfer-window1.txt), [window 16](2026-09-26-883d439-post-transfer-window16.txt). + +Direct throughput itself varied substantially, so this run cannot attribute differences from prior revisions to code changes. The payload is an ordinary synthetic packet; it does not exercise target Forge modpack traffic, an actual client, mod-specific packets, or production network conditions. The target pack remains necessary for performance acceptance.