trillium-tuned
Emerging · Rust · engine: trillium-http · tuned configuration · completeness 4/4
Trillium 1.x with one current_thread tokio runtime per CPU, SO_REUSEPORT TCP sharding (single QUIC endpoint for h3), tuned HttpConfig (larger response/body buffers, 64K h2 frames, eager body preallocation), and static files preloaded into memory at startup. sonic-rs for JSON, deadpool-postgres, mimalloc, trillium-grpc for the benchmark.BenchmarkService gRPC endpoints.
Achievements
🥈 2 Silver · 🥉 2 Bronze. Top three of a field, taken in this entry's own league: the family composite, the same composite among entries written in the same language, and each test profile it is scored on. Every field is the one the badges publish, so a medal and a badge always say the same thing. How medals are awarded.
| Medal | Award | Field | Rank |
|---|---|---|---|
| 🥈 Silver | Within its language | Rust · gRPC | 2 of 3 |
| 🥈 Silver | Test profile | Gateway · Gateway (H3) | 2 of 4 |
| 🥉 Bronze | Within its language | Rust · HTTP/2 | 3 of 5 |
| 🥉 Bronze | Within its language | Rust · WebSocket | 3 of 5 |
Composite rank
Each profile of a family is worth 100 to the entry that leads it, and the composite is the sum over the family, less 2.5% for each of routing, middleware, request and response the entry does not do for you - its completeness factor, which the WebSocket and gRPC families do not carry. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.
| Family | Rank | Composite |
|---|---|---|
| HTTP/1.1 | 36 of 93 | 3197 |
| HTTP/2 | 10 of 28 | 1023 |
| HTTP/3 | 4 of 11 | 934 |
| Gateway | 4 of 5 | 1233 |
| gRPC | 7 of 8 | 407 |
| WebSocket | 13 of 25 | 791 |
Every result
Alpha Round, 41 runs. Requests per second is the best of three; latency, CPU and memory come from that run.
| Category | Profile | Conns | Req/sec | Avg | p99 | CPU | Memory |
|---|---|---|---|---|---|---|---|
| Connection | Baseline | 4,096 | 646,570 | 6.34ms | 11.00ms | 6422.5% | 409MiB |
| Connection | Pipelined | 4,096 | 2,863,132 | 22.58ms | 260.70ms | 6348.5% | 307MiB |
| Connection | Short-lived | 4,096 | 567,665 | 7.20ms | 20.10ms | 6215.4% | 501MiB |
| Concurrency | Async Delay | 32,000 | 625,497 | 50.74ms | 71.80ms | 6218.9% | 1.6GiB |
| Efficiency | Latency-10K | 1,024 | 9,979 | 82.7us | 113.0us | 31.7% | 201MiB |
| Efficiency | Latency-1M | 1,024 | 575,690 | 3812157.4us | 10932224.0us | 6193.9% | 196MiB |
| Efficiency | Latency-500K/8 | 1,024 | 283,592 | 4272784.8us | 9465856.0us | 781.5% | 88MiB |
| Workload | JSON Comp | 4,096 | 110,200 | 36.92ms | 77.30ms | 6049.9% | 1003MiB |
| Workload | JSON Comp | 16,384 | 99,244 | 161.38ms | 277.80ms | 6113.4% | 1.5GiB |
| Workload | JSON TLS | 4,096 | 543,123 | 7.50ms | 29.58ms | 6320.4% | 483MiB |
| Workload | 8Gbit | 512 | 49,340 | 96.2us | 128.0us | 251.4% | 277MiB |
| Workload | Static TLS | 1,024 | 567,485 | 1.82ms | 44.32ms | 6443.2% | 1.1GiB |
| Database | Async DB | 1,024 | 225,599 | 4.19ms | 7.21ms | 3318.1% | 278MiB |
| Database | Fortunes | 1,024 | 156,266 | 6.08ms | 10.00ms | 4375.1% | 377MiB |
| HTTP/2 | Baseline | 256 | 1,363,817 | 19.15ms | 49.46ms | 5358.4% | 784MiB |
| HTTP/2 | Baseline | 1,024 | 1,230,276 | 78.25ms | 168.74ms | 5640.4% | 2.3GiB |
| HTTP/2 | Static | 256 | 189,446 | 43.94ms | 235.05ms | 6037.8% | 10.4GiB |
| HTTP/2 | Static | 1,024 | 178,844 | 174.48ms | 605.09ms | 6167.3% | 16.1GiB |
| HTTP/2 | Baseline (h2c) | 256 | 1,378,971 | 19.92ms | 92.31ms | 5088.2% | 739MiB |
| HTTP/2 | Baseline (h2c) | 1,024 | 1,238,099 | 79.55ms | 273.54ms | 5574.0% | 2.5GiB |
| HTTP/2 | Baseline (h2c) | 4,096 | 1,331,506 | 288.02ms | 972.46ms | 5251.6% | 9.1GiB |
| HTTP/2 | JSON (h2c) | 1,024 | 1,178,206 | 27.29ms | 93.26ms | 5559.9% | 1.4GiB |
| HTTP/2 | JSON (h2c) | 4,096 | 1,050,194 | 125.58ms | 532.43ms | 5261.4% | 4.4GiB |
| HTTP/3 | Baseline | 64 | 438,926 | 13.47ms | 235.54ms | 2517.9% | 385MiB |
| HTTP/3 | Static | 64 | 233,520 | 10.67ms | 69.88ms | 2481.2% | 709MiB |
| gRPC | Unary | 256 | 713,154 | 39.04ms | 169.95ms | 5406.6% | 759MiB |
| gRPC | Unary | 1,024 | 732,549 | 136.79ms | 434.07ms | 5710.1% | 2.2GiB |
| gRPC | Unary TLS | 256 | 805,654 | 32.76ms | 74.78ms | 5252.6% | 693MiB |
| gRPC | Unary TLS | 1,024 | 785,063 | 122.37ms | 281.49ms | 5753.8% | 1.9GiB |
| Gateway | Gateway (H2) | 512 | 73,240 | 203.56ms | 2.81s | 5533.1% | 3.0GiB |
| Gateway | Gateway (H2) | 1,024 | 74,113 | 376.17ms | 4.46s | 5735.1% | 5.6GiB |
| Gateway | Gateway (H3) | 64 | 82,537 | 24.66ms | 89.64ms | 4135.6% | 932MiB |
| Gateway | Gateway (H3) | 256 | 65,133 | 86.16ms | 519.66ms | 3347.4% | 1.1GiB |
| WebSocket | Echo | 512 | 1,655,808 | 308us | 745us | 6401.7% | 343MiB |
| WebSocket | Echo | 4,096 | 424,797 | 9.64ms | 12.50ms | 6223.5% | 952MiB |
| WebSocket | Echo | 16,384 | 406,994 | 39.67ms | 56.30ms | 6562.4% | 3.0GiB |
| WebSocket | Echo Pipelined | 512 | 15,199,084 | 538us | 1.02ms | 6677.1% | 340MiB |
| WebSocket | Echo Pipelined | 4,096 | 11,073,094 | 5.92ms | 11.10ms | 6224.4% | 924MiB |
| WebSocket | Echo Pipelined | 16,384 | 6,925,715 | 37.36ms | 45.50ms | 6213.0% | 3.1GiB |
| WebSocket | Echo Short-lived | 512 | 1,035,031 | 412us | 4.52ms | 5250.8% | 546MiB |
| WebSocket | Echo Short-lived | 4,096 | 521,925 | 6.95ms | 27.40ms | 5571.4% | 1.1GiB |
Compared with
The Rust entries around trillium-tuned on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.
| Entry | Composite | vs trillium-tuned | |
|---|---|---|---|
| actix | 6880 | +115% | head to head |
| hyper | 3345 | +5% | head to head |
| trillium | 3261 | +2% | head to head |
| rocket | 3112 | -3% | head to head |
| salvo | 2480 | -22% | head to head |
Compare trillium-tuned with any Rust entry · Compare trillium-tuned with any entry, in any language · Every Rust entry, ranked
Results updated · How the benchmark is run · The machine · Add or fix an entry