@swarmmachina/swm-uws 0.6.0 / raw HTTP

swm-uws measurements

An isolated raw HTTP run of the native binding against pinned uWebSockets.js with the same server, handler, and host.

495,290median requests per second

+12.71% throughput against the pinned upstream

100
connections
10
pipelining
10 × 10s
round
p95 3.635 ms
swm-uws
p99 3.896 ms
swm-uws
regression gate passed

All ten pairs. No cherry-picking.

AB/BA ordering alternated so warm-up and host drift could not consistently favor one side. swm-uws led throughput in all ten pairs.

  1. 01
    swm-uws
    481,759 req/s
    upstream uWS
    429,215 req/s
    delta
    +12.24%
    p99
    4.053 / 4.475 ms
  2. 02
    swm-uws
    484,113 req/s
    upstream uWS
    425,257 req/s
    delta
    +13.84%
    p99
    3.974 / 4.475 ms
  3. 03
    swm-uws
    499,080 req/s
    upstream uWS
    434,250 req/s
    delta
    +14.93%
    p99
    3.896 / 4.387 ms
  4. 04
    swm-uws
    500,261 req/s
    upstream uWS
    448,291 req/s
    delta
    +11.59%
    p99
    3.896 / 4.301 ms
  5. 05
    swm-uws
    497,510 req/s
    upstream uWS
    439,557 req/s
    delta
    +13.18%
    p99
    3.896 / 4.387 ms
  6. 06
    swm-uws
    483,383 req/s
    upstream uWS
    441,113 req/s
    delta
    +9.58%
    p99
    4.053 / 4.387 ms
  7. 07
    swm-uws
    506,037 req/s
    upstream uWS
    430,500 req/s
    delta
    +17.55%
    p99
    3.819 / 4.475 ms
  8. 08
    swm-uws
    495,532 req/s
    upstream uWS
    434,787 req/s
    delta
    +13.97%
    p99
    3.896 / 4.387 ms
  9. 09
    swm-uws
    495,049 req/s
    upstream uWS
    443,162 req/s
    delta
    +11.71%
    p99
    3.896 / 4.301 ms
  10. 10
    swm-uws
    490,719 req/s
    upstream uWS
    440,558 req/s
    delta
    +11.39%
    p99
    3.974 / 4.387 ms

Throughput, tails, and runtime

Throughput is read alongside p95, p99, ELU, and memory. Lower tail latency and memory matter as much as the final rate.

Metricswm-uwsupstream uWSdeltaDirection
Throughput495,290 req/s437,172 req/s+12.71%higher is better
p95 latency3.635 ms4.134 ms-12.07%lower is better
p99 latency3.896 ms4.387 ms-11.20%lower is better
Server ELU98.29%98.27%+0.01%context
RSS after warm-up59.59 MiB60.51 MiB-1.51%lower is better
Heap used after warm-up5.71 MiB6.07 MiB-5.86%lower is better

Tail conclusion: swm-uws median p95 was 3.635 ms and p99 was 3.896 ms. The pinned upstream measured 4.134 ms and 4.387 ms respectively. There were no request errors.

CPU counters per response

An independent perf stat run repeated the load profile and normalized hardware counters per HTTP response.

490,740req/s

p99 3.974ms

5,600.65
cycles · per request
9,177.51
instructions · per request
1,878.95
branches · per request
7.657
branch misses · per request
69.89
cache references · per request
0.131
cache misses · per request

swm-core 4.3.0 binding check

A separate balanced run measures the binding inside the real server layer. HTTP and WebSocket were each measured four times with the same swm-uws and upstream versions.

ScenarioRunsswm-uwsupstream uWSp95 / p99ELU / RSS
HTTP GET /base-sync4 × 6s235,200 req/s +12.66%208,768 req/s4.344 / 8.187 ms98.72% / 79.74 MiB
WebSocket echo · 64 B4 × 6s104,706 msg/s -0.94%105,697 msg/s0.839 / 0.891 ms98.09% / 66.99 MiB

How to reproduce it

The primary release result ran on Linux x64 with 100 connections, pipelining 10, a 2-second warm-up, a 10-second measurement, 10 balanced pairs, and 4 client workers.

Release Linux benchmark command

npm run build:native:pgo
SWM_BENCH_REFERENCE=/path/to/uwebsockets.js/ESM_wrapper.mjs \
  npm run bench:compare:pgo:linux -- benchmark/profiles/pgo-balanced-linux
Environment
Node.js 22.22.3 · Linux 6.17.0-40-generic x64 · Intel Xeon E5-2680 v4
Build
Clang 18 · PGO balanced · LTO · generic x86-64