perf(fetch): share retained response body backing - #393
Conversation
Fold in the required valid UTF-8 storage reuse so this branch is one self-contained commit on main. Share materialized payloads across fetch, navigation, and subresource response carriers while preserving exact non-UTF-8 bytes. Derived from 702e8c93d and 97a37e558 on webfetch-inspection. Prefer merging perf/reuse-utf8-response-storage first; this branch includes that prerequisite.
Spider Bench A/B✅ All benchmark browser service runs completed; results are informational. Public HEAD: 184 / 240 rows; 38 / 48 sites produced rows; 10 unexpected empty sites. ✅ Deterministic fixture contract is clean. Common ancestor Public 48-site run · informational
Public-site content, timing, and memory are noisy. This single A/B run reports evidence only; site outcome counts explain missing rows without treating them as a deterministic regression. CPU and memory timelinesThese are bounded 40-point views of the same complete process-tree samples used by the HTML report. CPU uses 100% per occupied logical core; memory lines are RSS first and PSS second when complete PSS samples are available. Basexychart-beta
title "Base CPU"
x-axis "Elapsed seconds" [1.536, 2.538, 4.039, 5.041, 6.042, 6.543, 7.544, 9.046, 10.048, 11.549, 13.051, 14.053, 15.554, 16.556, 18.059, 19.06, 20.06, 20.561, 21.563, 23.064, 24.566, 25.067, 25.568, 27.069, 28.07, 29.572, 30.573, 32.074, 33.075, 34.577, 36.078, 37.08, 38.581, 39.583, 41.084, 42.086, 43.588, 44.589]
y-axis "CPU percent" 0 --> 500
line [131.89, 121.82, 147.71, 149.71, 237.86, 153.61, 173.93, 107.93, 11.99, 127.91, 109.95, 127.86, 97.92, 119.84, 13.96, 43.98, 0, 51.89, 109.89, 107.89, 109.71, 109.8, 119.85, 57.84, 151.82, 183.85, 17.96, 73.92, 7.99, 135.89, 93.86, 0, 11.99, 2, 121.81, 151.82, 59.84, 123.86]
xychart-beta
title "Base memory: RSS then PSS"
x-axis "Elapsed seconds" [0.035, 1.536, 2.538, 4.039, 5.041, 6.042, 6.543, 7.544, 9.046, 10.048, 11.549, 13.051, 14.053, 15.554, 16.556, 18.059, 19.06, 20.06, 20.561, 21.563, 23.064, 24.566, 25.067, 25.568, 27.069, 28.07, 29.572, 30.573, 32.074, 33.075, 34.577, 36.078, 37.08, 38.581, 39.583, 41.084, 42.086, 43.588, 44.589, 45.95]
y-axis "Memory MiB" 0 --> 500
line [11.94, 104.53, 113.03, 137.29, 167.49, 171.8, 186.79, 171.89, 186.26, 181.97, 173.64, 174.23, 184.03, 168.84, 174, 156.66, 151.44, 148.87, 147.67, 187.7, 170.03, 183.42, 213.94, 177.32, 167.35, 198.39, 165.76, 155.09, 151.87, 161.8, 207.69, 202.85, 180.42, 162.93, 162.86, 201.41, 172.87, 171.12, 177, 0]
line [8.58, 100.79, 109.27, 133.58, 163.8, 168.12, 183.08, 168.14, 182.53, 178.21, 169.89, 170.48, 179.9, 165.13, 170.24, 152.9, 147.68, 145.11, 143.92, 183.95, 165.54, 179.74, 210.26, 173.63, 163.58, 194.68, 162.01, 151.34, 148.12, 158.04, 204.06, 199.17, 176.67, 159.18, 159.11, 198.28, 169.15, 167.39, 173.25, 0]
HEADxychart-beta
title "HEAD CPU"
x-axis "Elapsed seconds" [1.534, 2.536, 3.037, 4.039, 4.54, 6.042, 7.544, 9.046, 10.047, 11.549, 13.052, 14.555, 16.056, 17.558, 19.06, 20.561, 22.064, 23.566, 25.067, 26.568, 27.569, 29.071, 30.573, 32.075, 33.576, 35.078, 36.58, 38.082, 39.585, 41.085, 42.087, 42.589, 44.089, 45.09, 46.594, 48.095, 49.597, 51.098]
y-axis "CPU percent" 0 --> 500
line [125.95, 113.68, 135.82, 113.78, 93.82, 279.29, 175.9, 79.97, 155.73, 141.89, 55.95, 127.7, 0, 83.8, 84, 11.97, 35.99, 3.99, 145.95, 109.96, 139.89, 141.71, 143.72, 65.86, 117.88, 79.78, 73.81, 43.89, 1.99, 137.72, 119.78, 101.7, 119.91, 13.99, 49.85, 113.87, 11.99, 111.93]
xychart-beta
title "HEAD memory: RSS then PSS"
x-axis "Elapsed seconds" [0.034, 1.534, 2.536, 3.037, 4.039, 4.54, 6.042, 7.544, 9.046, 10.047, 11.549, 13.052, 14.555, 16.056, 17.558, 19.06, 20.561, 22.064, 23.566, 25.067, 26.568, 27.569, 29.071, 30.573, 32.075, 33.576, 35.078, 36.58, 38.082, 39.585, 41.085, 42.087, 42.589, 44.089, 45.09, 46.594, 48.095, 49.597, 51.098, 52.349]
y-axis "Memory MiB" 0 --> 500
line [11.93, 98.91, 115.91, 125.38, 131.55, 145.64, 160.06, 162.3, 157.09, 184.98, 161.64, 169.38, 171.24, 158.11, 141.57, 142.98, 133.88, 137.42, 134.04, 154.16, 158.16, 165.79, 181.06, 193.55, 162.04, 171.2, 145.09, 148.77, 150.69, 146.15, 181.55, 244.44, 244.31, 187.84, 165.42, 170.34, 180.89, 158.68, 165.69, 0]
line [8.68, 95.37, 112.48, 121.62, 127.85, 141.91, 156.76, 158.5, 153.29, 181.18, 157.84, 164.33, 167.39, 154.26, 137.71, 138.61, 130.04, 133.58, 130.2, 150.28, 154.58, 161.84, 177.21, 189.75, 158.26, 167.37, 141.29, 145.03, 146.89, 142.34, 177.55, 240.81, 240.49, 184.05, 161.63, 164.51, 177.1, 154.87, 161.88, 0]
Deterministic fixture · required contractThe fixture exercises 15 routes: 8 are expected to emit rows and 7 intentionally exercise empty, loading, or timeout behavior.
Full HTML, JSON, CSV, logs, and page snapshots: workflow run and full The public-web A/B is informational. The exact HEAD fixture contract runs as a separate required CI check; timing and public-site content deltas remain non-blocking. |
Sequential Navigation Soak A/B✅ HEAD completed the 200-navigation resilience and memory observation. One browser process, one target, and one CDP session navigate CSDN → SegmentFault → Huaban → example.com repeatedly. This run issued 200 Common ancestor Session resilience
A public-page failure is reported separately from an unrecoverable session. The soak requires all navigation attempts, zero failed recovery, zero lifecycle/network ordering violations, and complete resource evidence. Process-tree memory
HEAD memory by 50-navigation quarter
Raw reports and per-navigation boundary samples: workflow run and full Public-site timing and memory are observational. Use the A/B deltas and trend shape as evidence, not as a deterministic performance threshold. |
CI Regression ReportSource CI run · source state at render:
Release regression — ✅ HEAD/base failures 0/0; raw binary −0.000138%Package and image size
Startup latency and PSS
Concurrency matrix
Frontend differential — ✅ 1,020/1,020 cases matched; 0 issues
Agent episodes · Moli vs Chromium — ✅ 8/8 Moli episodes passed; 0 failures
Runtime and CDP session contracts — ✅ 26 contract cases; 0 failures
CDP smoke — ✅ 43/43 groups passed; 450 scenariosWorkers: 4 · cumulative group time: 140.20 s · failed groups: 0
All artifact fields are parsed by the trusted default-branch renderer; missing or invalid inputs remain visible as unavailable. |
Fold in the required valid UTF-8 storage reuse so this branch is one self-contained commit on main. Share materialized payloads across fetch, navigation, and subresource response carriers while preserving exact non-UTF-8 bytes.
Derived from 702e8c93d and 97a37e558 on webfetch-inspection. Prefer merging perf/reuse-utf8-response-storage first; this branch includes that prerequisite.