New commits, fourneau 2b5008c, fourneau-dragrace 4affaa2, roux b1d53e7: they race tonight at 03:00 New York time.

Race 2026-10-07T111620Z-cloud 2026-10-07 11:16 UTC took 52 min · $0.29 fourneau c2d9236 roux 8e6ebf3 dragrace 53d749d

Dedicated cores, no neighbours

server
c-2 · 2 vCPUs · Intel(R) Xeon(R) Platinum 8280 CPU @ 2.70GHz · Linux 7.0.0-31-generic
loader
s-8vcpu-16gb · 8 vCPUs · DO-Regular · Linux 7.0.0-31-generic

this class's data, as the page draws it

PlaintextGET /plaintext answers 13 bytes over kept-alive connections: the cost of HTTP itself.
roux98,191
fourneau-zig75,361
axum71,012
go46,741
basic-webserver25,214
table
competitorreq/s (median)p95 msp99 msp99.9 msroundsspread %server CPU %loader CPU %Mbit/s in / outlimited bysteal %peak RSS
roux98,1915.227.4311.41115,163 · 87,941 · 98,19127.764.241.7121 / 154connections (nothing saturated)0.1112.5 MiB
fourneau-zig75,3617.059.9614.4275,361 · 84,258 · 70,39818.449.229.293 / 118connections (nothing saturated)0.1114.9 MiB
axum71,0127.129.9114.3780,908 · 71,012 · 69,29316.478.329.688 / 111connections (nothing saturated)0.016.1 MiB
go46,74110.6113.9319.2744,295 · 47,998 · 46,7417.990.822.858 / 73server CPU0.023.8 MiB
basic-webserver25,21417.5620.3125.3025,567 · 24,489 · 25,2144.396.416.331 / 40server CPU0.027.8 MiB
Echo 4 KiBPOST /echo with a 4 KiB body, answered with the same bytes: reading bodies and writing larger responses.
roux27,083
fourneau-zig25,198
axum22,133
go20,144
basic-webserver17,843
table
competitorreq/s (median)p95 msp99 msp99.9 msroundsspread %server CPU %loader CPU %Mbit/s in / outlimited bysteal %peak RSS
roux27,08315.6320.5838.3227,083 · 18,933 · 31,71247.255.225.5972 / 957connections (nothing saturated)0.1115.3 MiB
fourneau-zig25,19816.7120.7526.2519,097 · 26,326 · 25,19828.749.523.3909 / 891connections (nothing saturated)0.2115.1 MiB
axum22,13318.5123.4629.9225,716 · 22,133 · 21,81717.658.421.2800 / 787connections (nothing saturated)0.115.7 MiB
go20,14421.4828.76225.4218,254 · 21,472 · 20,14416.084.922.4740 / 733connections (nothing saturated)0.023.8 MiB
basic-webserver17,84322.1628.2449.9617,088 · 18,364 · 17,8437.293.919.3659 / 652server CPU0.031.8 MiB
TemplatesGET /menu renders a 12-row HTML table from a template per request, every value escaped: the work of a server-rendered page.
roux82,936
fourneau-zig74,974
axum69,279
go18,270
basic-webserver6,504
table
competitorreq/s (median)p95 msp99 msp99.9 msroundsspread %server CPU %loader CPU %Mbit/s in / outlimited bysteal %peak RSS
roux82,9366.088.5512.1675,152 · 84,394 · 82,93611.178.534.299 / 614connections (nothing saturated)0.1115.5 MiB
fourneau-zig74,9747.1510.1715.7461,894 · 78,179 · 74,97421.757.730.289 / 555connections (nothing saturated)0.1115.0 MiB
axum69,2797.1210.0614.6374,120 · 58,783 · 69,27922.181.630.083 / 517connections (nothing saturated)0.017.2 MiB
go18,27025.9232.6844.1918,270 · 18,891 · 18,2013.897.613.322 / 135server CPU0.023.8 MiB
basic-webserver6,50460.6769.1386.206,519 · 6,128 · 6,5046.099.28.38 / 50server CPU0.031.8 MiB
SSE (Datastar)GET /sse with Datastar's signals in the query, answered with a stream of ten Datastar events, a chunk each: the work of a Datastar action.
fourneau-zig60,358
axum47,810
roux45,386
go17,507
basic-webserver4,064
table
competitorreq/s (median)p95 msp99 msp99.9 msroundsspread %server CPU %loader CPU %Mbit/s in / outlimited bysteal %peak RSS
fourneau-zig60,3589.1913.1717.9860,912 · 55,369 · 60,3589.249.333.587 / 609connections (nothing saturated)0.0115.0 MiB
axum47,8109.4812.8217.6253,393 · 42,285 · 47,81023.289.931.169 / 482connections (nothing saturated)0.016.9 MiB
roux45,3869.8713.3818.4645,386 · 47,638 · 43,7818.585.326.265 / 458connections (nothing saturated)0.1115.5 MiB
go17,50726.8735.2348.8217,507 · 17,852 · 16,5657.397.821.239 / 216server CPU0.023.6 MiB
basic-webserver4,06490.49108.43141.164,138 · 3,919 · 4,0645.499.715.317 / 63server CPU0.031.8 MiB
Connection churnGET /plaintext on a new connection every request: accepting, and closing, as fast as possible.
fourneau-zig13,976
roux13,645
axum13,517
go12,447
basic-webserver7,895
table
competitorreq/s (median)p95 msp99 msp99.9 msroundsspread %server CPU %loader CPU %Mbit/s in / outlimited bysteal %peak RSS
fourneau-zig13,9768.7911.8416.0513,742 · 14,958 · 13,9768.747.928.051 / 55connections (nothing saturated)0.1115.1 MiB
roux13,6459.0212.2216.3316,308 · 12,368 · 13,64528.944.626.650 / 53connections (nothing saturated)0.0115.5 MiB
axum13,5178.9412.0116.1516,194 · 13,285 · 13,51721.562.827.649 / 53connections (nothing saturated)0.016.9 MiB
go12,4479.3512.4517.7011,129 · 13,521 · 12,44719.275.526.645 / 49connections (nothing saturated)0.123.8 MiB
basic-webserver7,89512.9016.5323.507,895 · 7,444 · 8,37411.880.118.128 / 31connections (nothing saturated)0.028.8 MiB
Under load: Templatesp99 latency against the offered rate (open loop: requests arrive at a fixed rate whatever the server does). Each server is offered 50% to 120% of its own maximum above.
1ms 10ms 100ms 1s 10s 0 25k 50k 75k 100k axum at 50% of its max: 34,639/s offered, 34,627/s answered; p99 6.46 ms, p99.9 14.57 ms; server CPU 34%, loader 28% axum at 75% of its max: 51,959/s offered, 51,938/s answered; p99 13.64 ms, p99.9 27.51 ms; server CPU 68%, loader 30% axum at 90% of its max: 62,351/s offered, 62,325/s answered; p99 34.40 ms, p99.9 50.69 ms; server CPU 77%, loader 29% axum at 100% of its max: 69,279/s offered, 61,657/s answered; p99 1055.94 ms, p99.9 1092.37 ms; server CPU 75%, loader 29% axum at 120% of its max: 83,134/s offered, 65,047/s answered; p99 2158.42 ms, p99.9 2173.71 ms; server CPU 82%, loader 28% axum go at 50% of its max: 9,135/s offered, 9,130/s answered; p99 6.03 ms, p99.9 13.26 ms; server CPU 57%, loader 6% go at 75% of its max: 13,702/s offered, 13,695/s answered; p99 10.50 ms, p99.9 19.55 ms; server CPU 75%, loader 9% go at 90% of its max: 16,443/s offered, 16,438/s answered; p99 15.69 ms, p99.9 26.83 ms; server CPU 86%, loader 8% go at 100% of its max: 18,270/s offered, 17,962/s answered; p99 168.59 ms, p99.9 179.07 ms; server CPU 97%, loader 12% go at 120% of its max: 21,924/s offered, 17,887/s answered; p99 1817.90 ms, p99.9 1837.60 ms; server CPU 99%, loader 11% go basic-webserver at 50% of its max: 3,252/s offered, 3,251/s answered; p99 5.00 ms, p99.9 7.51 ms; server CPU 64%, loader 3% basic-webserver at 75% of its max: 4,878/s offered, 4,876/s answered; p99 9.45 ms, p99.9 15.24 ms; server CPU 89%, loader 7% basic-webserver at 90% of its max: 5,853/s offered, 5,850/s answered; p99 17.58 ms, p99.9 37.32 ms; server CPU 98%, loader 11% basic-webserver at 100% of its max: 6,504/s offered, 6,435/s answered; p99 114.45 ms, p99.9 128.31 ms; server CPU 100%, loader 7% basic-webserver at 120% of its max: 7,804/s offered, 6,568/s answered; p99 1563.64 ms, p99.9 1581.04 ms; server CPU 100%, loader 8% basic-webserver roux at 50% of its max: 41,468/s offered, 41,441/s answered; p99 37.50 ms, p99.9 59.65 ms; server CPU 47%, loader 21% roux at 75% of its max: 62,202/s offered, 62,172/s answered; p99 35.94 ms, p99.9 44.05 ms; server CPU 62%, loader 32% roux at 90% of its max: 74,643/s offered, 74,513/s answered; p99 76.88 ms, p99.9 114.35 ms; server CPU 79%, loader 33% roux at 100% of its max: 82,936/s offered, 82,903/s answered; p99 32.63 ms, p99.9 45.79 ms; server CPU 86%, loader 41% roux at 120% of its max: 99,524/s offered, 90,528/s answered; p99 872.62 ms, p99.9 900.40 ms; server CPU 91%, loader 38% roux fourneau-zig at 50% of its max: 37,487/s offered, 37,442/s answered; p99 45.41 ms, p99.9 74.66 ms; server CPU 39%, loader 18% fourneau-zig at 75% of its max: 56,231/s offered, 56,211/s answered; p99 34.71 ms, p99.9 40.57 ms; server CPU 43%, loader 24% fourneau-zig at 90% of its max: 67,477/s offered, 67,452/s answered; p99 25.84 ms, p99.9 44.70 ms; server CPU 63%, loader 36% fourneau-zig at 100% of its max: 74,974/s offered, 74,936/s answered; p99 70.45 ms, p99.9 87.47 ms; server CPU 65%, loader 34% fourneau-zig at 120% of its max: 89,969/s offered, 89,280/s answered; p99 216.69 ms, p99.9 225.94 ms; server CPU 70%, loader 38% fourneau-zig

offered requests per second →

  • axum
  • go
  • basic-webserver
  • roux
  • fourneau-zig
  • the loader was the limit
Under load: RealWorld (Conduit)The mean latency of every request against the offered rate: the article list (50%), an article (30%), a comment (15%) and a favorite (5%) at once, open loop, at the same rates for every server, each climbing until it falls behind.
0.1ms 1ms 10ms 100ms 1s 10s 0 2.5k 5k 7.5k 10k fourneau-zig: 250/s offered, 251/s answered; mean 1.08 ms, the slowest part's p99 3.00 ms; server CPU 7%, loader 2% fourneau-zig: 500/s offered, 500/s answered; mean 0.98 ms, the slowest part's p99 4.00 ms; server CPU 12%, loader 2% fourneau-zig: 1,000/s offered, 1,000/s answered; mean 0.87 ms, the slowest part's p99 2.91 ms; server CPU 21%, loader 4% fourneau-zig: 2,000/s offered, 1,999/s answered; mean 0.99 ms, the slowest part's p99 3.16 ms; server CPU 44%, loader 6% fourneau-zig: 4,000/s offered, 3,731/s answered; mean 330.14 ms, the slowest part's p99 732.38 ms; server CPU 99%, loader 5% fourneau-zig: 8,000/s offered, 3,890/s answered; mean 2569.57 ms, the slowest part's p99 5120.82 ms; server CPU 99%, loader 5% fourneau-zig basic-webserver: 250/s offered, 251/s answered; mean 1.80 ms, the slowest part's p99 8.22 ms; server CPU 14%, loader 1% basic-webserver: 500/s offered, 500/s answered; mean 1.72 ms, the slowest part's p99 5.43 ms; server CPU 26%, loader 3% basic-webserver: 1,000/s offered, 814/s answered; mean 921.43 ms, the slowest part's p99 2340.18 ms; server CPU 99%, loader 2% basic-webserver axum: 250/s offered, 251/s answered; mean 1.51 ms, the slowest part's p99 4.12 ms; server CPU 13%, loader 1% axum: 500/s offered, 500/s answered; mean 1.57 ms, the slowest part's p99 6.54 ms; server CPU 21%, loader 4% axum: 1,000/s offered, 1,000/s answered; mean 1.37 ms, the slowest part's p99 7.27 ms; server CPU 37%, loader 3% axum: 2,000/s offered, 1,999/s answered; mean 2.75 ms, the slowest part's p99 10.93 ms; server CPU 84%, loader 5% axum: 4,000/s offered, 2,967/s answered; mean 895.38 ms, the slowest part's p99 4985.36 ms; server CPU 94%, loader 7% axum go: 250/s offered, 251/s answered; mean 1.83 ms, the slowest part's p99 5.36 ms; server CPU 17%, loader 1% go: 500/s offered, 500/s answered; mean 1.73 ms, the slowest part's p99 6.30 ms; server CPU 29%, loader 4% go: 1,000/s offered, 1,000/s answered; mean 1.80 ms, the slowest part's p99 7.69 ms; server CPU 55%, loader 3% go: 2,000/s offered, 1,745/s answered; mean 598.17 ms, the slowest part's p99 2488.80 ms; server CPU 91%, loader 6% go roux: 250/s offered, 251/s answered; mean 1.27 ms, the slowest part's p99 3.48 ms; server CPU 9%, loader 1% roux: 500/s offered, 500/s answered; mean 1.13 ms, the slowest part's p99 4.69 ms; server CPU 14%, loader 3% roux: 1,000/s offered, 1,000/s answered; mean 1.01 ms, the slowest part's p99 4.83 ms; server CPU 24%, loader 3% roux: 2,000/s offered, 2,000/s answered; mean 1.23 ms, the slowest part's p99 7.32 ms; server CPU 54%, loader 6% roux: 4,000/s offered, 2,650/s answered; mean 373.05 ms, the slowest part's p99 906.16 ms; server CPU 100%, loader 8% roux

offered requests per second →

  • fourneau-zig
  • basic-webserver
  • axum
  • go
  • roux
  • the loader was the limit

How it runs

Details: Workloads, Method. To make a server faster or add one: Contribute.