Internals: benchmark reports
Release build on AlmaLinux 8 against the Ubuntu 24.04 build, 2026-10-27
Gate for the EL8 release build (scripts/release-build.sh, docker/el8-build.Dockerfile):
the EL8 build must be as fast as the 1.0.0~rc.1-11 package or faster in every scenario.
Machine, pinning and method as in 2026-10-12-xeon-release-run7.md and the regression
checks of 2026-10-14/15: 2× Xeon E5-2650 v2, performance governor, turbo off. Server on
CPUs 0-3 (socket 0, 4 workers), upstream and applications on 4-7, oha 1.16.0 on 8-15 and
24-31 (socket 1), 64 connections. bench/multi.sh, MODE=release (10 s warm-up, 30 s
measurement, 5 runs per round, variant order rotating), run three times (rounds 1-3,
2026-10-27 22:46 to 2026-10-28 00:54 local). Every measurement answered 2xx only; no run
was excluded.
Binaries (scalwsd, same source tree, byte-identical crates, cmd, Cargo.lock):
rc1-11: from the publishedscalws_1.0.0~rc.1-11_amd64.deb(ubuntu:24.04 container, glibc 2.39, Ubuntu gcc 13.3 for the C code).el8: fromscripts/release-build.shwithSCALWS_RELEASE=12pre1(almalinux:8.10, glibc 2.28, gcc-toolset-13 gcc 13.3.1 for the C code); newest symbol version GLIBC_2.28.
Both: rustc 1.99.1, rust-lld 23.1.1, the workspace release profile (thin LTO,
codegen-units = 1), mimalloc (default feature), no PGO or BOLT, no http3 feature, no
extra target features (no AVX2). Since neither package has http3, both were started
through a wrapper that drops the http3: true line from bench/configs/scalws.yaml
(a wrapper script, exec, so the server pid is measured).
Requests per second (median of each 5-run round)
| scenario | round | rc1-11 | el8 | el8 / rc1-11 |
|---|---|---|---|---|
| static-small | 1 / 2 / 3 | 69 873 / 69 944 / 69 358 | 69 742 / 70 059 / 69 429 | 0.998 / 1.002 / 1.001 |
| tls-h2-static-small | 1 / 2 / 3 | 58 484 / 57 902 / 58 325 | 58 225 / 58 790 / 58 835 | 0.996 / 1.015 / 1.009 |
| proxy | 1 / 2 / 3 | 46 329 / 46 203 / 46 179 | 46 436 / 46 453 / 46 405 | 1.002 / 1.005 / 1.005 |
| php | 1 / 2 / 3 | 34 803 / 34 959 / 34 763 | 34 865 / 34 299 / 34 865 | 1.002 / 0.981 / 1.003 |
| respond | 1 / 2 / 3 | 112 150 / 111 352 / 109 872 | 110 961 / 112 542 / 111 156 | 0.989 / 1.011 / 1.012 |
| cache-hit | 1 / 2 / 3 | 84 386 / 85 020 / 84 497 | 85 654 / 85 899 / 85 305 | 1.015 / 1.010 / 1.010 |
Result
Gate value: the median of the three per-round ratios (each round measures both builds in the same window, so machine drift between rounds cancels).
| scenario | median ratio | pooled median req/s (15 runs) rc1-11 / el8 | pooled ratio | cpu_us rc1-11 / el8 | p99 ms rc1-11 / el8 | gate |
|---|---|---|---|---|---|---|
| static-small | 1.001 | 69 873 / 69 490 | 0.995 | 57.24 / 57.55 | 1.18 / 1.20 | PASS |
| tls-h2-static-small | 1.009 | 58 325 / 58 596 | 1.005 | 68.43 / 68.11 | 2.31 / 2.26 | PASS |
| proxy | 1.005 | 46 182 / 46 446 | 1.006 | 86.60 / 86.11 | 2.22 / 2.15 | PASS |
| php | 1.002 | 34 811 / 34 787 | 0.999 | 92.36 / 91.83 | 2.11 / 2.12 | PASS |
| respond | 1.011 | 111 352 / 111 156 | 0.998 | 35.91 / 35.97 | 0.71 / 0.73 | PASS |
| cache-hit | 1.010 | 84 969 / 85 654 | 1.008 | 47.07 / 46.69 | 0.95 / 0.97 | PASS |
(cpu_us is server CPU per request, p99 the p99 latency; both medians of the 15 runs.)
Spread: the CV of a 5-run round is 0.2 % to 3.2 % (php up to 3.2 %, tls-h2-static-small up to 2.9 %, the rest at most 1.6 %). The three pooled ratios below 1.000 (static-small 0.995, respond 0.998, php 0.999) are smaller than that spread, and each of these scenarios has rounds in both directions (static-small 0.998 / 1.002 / 1.001, respond 0.989 / 1.011 / 1.012, php 1.002 / 0.981 / 1.003). No scenario is slower beyond noise, so nothing was changed in the build; the candidates the gate would have pointed at (C toolchain, allocator, linker and LTO settings) are already the same in both builds as listed above.
The EL8 build therefore replaces the Ubuntu build for both packages: the .deb and the .rpm are made from the same binaries.
Results, in the bench host’s results directory: results/xeon-el8-build-1, -2, -3 (aggregate.csv,
aggregate.txt, run-N); binaries /opt/scalws-rc1-11/scalwsd.real and
/opt/scalws-el8-12pre1/scalwsd.real.