trillium-tuned
Emerging · Rust · engine: trillium-http · tuned configuration
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.
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. 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 | 8 of 97 | 700 |
| HTTP/2 | 20 of 29 | 46 |
| HTTP/3 | 12 of 12 | 3 |
| WebSocket | 27 of 32 | 27 |
Every result
Alpha Round, 35 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 | 512 | 590,554 | 866us | 2.01ms | 6211.6% | 260MiB |
| Connection | Baseline | 4,096 | 618,801 | 6.62ms | 9.47ms | 6271.0% | 368MiB |
| Connection | Pipelined | 512 | 2,739,167 | 2.99ms | 5.17ms | 6547.8% | 216MiB |
| Connection | Pipelined | 4,096 | 2,818,523 | 23.20ms | 29.90ms | 6467.6% | 319MiB |
| Connection | Short-lived | 512 | 525,211 | 967us | 4.14ms | 5721.3% | 263MiB |
| Connection | Short-lived | 4,096 | 506,854 | 8.07ms | 21.30ms | 6138.5% | 373MiB |
| Workload | JSON | 4,096 | 514,016 | 7.73ms | 18.10ms | 6201.1% | 386MiB |
| Workload | JSON Comp | 512 | 1,474 | 335.37ms | 675.10ms | 6410.8% | 3.7GiB |
| Workload | JSON Comp | 4,096 | 1,455 | 2.02s | 3.33s | 6062.7% | 4.0GiB |
| Workload | JSON Comp | 16,384 | 1,435 | 2.52s | 4.91s | 5911.4% | 4.0GiB |
| Workload | JSON TLS | 4,096 | 581,968 | 7.00ms | 7.00ms | 6481.0% | 477MiB |
| Workload | Upload | 32 | 3,009 | 10.60ms | 47.30ms | 1538.0% | 249MiB |
| Workload | Upload | 256 | 3,069 | 77.15ms | 284.10ms | 2993.0% | 275MiB |
| Workload | Static | 1,024 | 1,397 | 677.29ms | 677.29ms | 6406.8% | 4.0GiB |
| Workload | Static | 4,096 | 1,393 | 965.03ms | 965.03ms | 6372.8% | 3.9GiB |
| Workload | Static | 6,800 | 1,394 | 978.70ms | 978.70ms | 6288.9% | 4.0GiB |
| Workload | Static TLS | 1,024 | 576,602 | 1.77ms | 15.65ms | 6426.9% | 361MiB |
| Workload | Static TLS | 4,096 | 520,694 | 7.84ms | 59.44ms | 6340.1% | 550MiB |
| Workload | Static TLS | 6,800 | 523,155 | 13.03ms | 156.56ms | 6325.0% | 749MiB |
| Database | Async DB | 1,024 | 285,322 | 3.13ms | 28.00ms | 3624.5% | 292MiB |
| Database | CRUD | 4,096 | 510,890 | 7.95ms | 28.40ms | 3841.1% | 393MiB |
| Multi-endpoint | API-4 | 256 | 60,718 | 3.29ms | 19.70ms | 373.3% | 74MiB |
| Multi-endpoint | API-16 | 1,024 | 173,761 | 4.98ms | 45.40ms | 1530.9% | 154MiB |
| HTTP/2 | Baseline | 256 | 2,192,420 | 13.00ms | 13.00ms | 6198.4% | 945MiB |
| HTTP/2 | Baseline | 1,024 | 1,969,566 | 49.72ms | 49.72ms | 6384.8% | 4.8GiB |
| HTTP/2 | Static | 256 | - | - | - | 1486.4% | 5.1GiB |
| HTTP/2 | Static | 1,024 | - | - | - | 2590.0% | 5.0GiB |
| HTTP/3 | Baseline | 64 | 120,828 | 26.53ms | 111.36ms | 98.6% | 224MiB |
| HTTP/3 | Static | 64 | 52 | 2.97s | 4.31s | 99.9% | 304MiB |
| WebSocket | Echo | 512 | 1,696,025 | 301us | 652us | 6636.4% | 362MiB |
| WebSocket | Echo | 4,096 | 418,203 | 9.78ms | 12.80ms | 6312.7% | 938MiB |
| WebSocket | Echo | 16,384 | 399,873 | 40.19ms | 45.60ms | 6295.9% | 2.7GiB |
| WebSocket | Echo Pipelined | 512 | 4,758,055 | 1.72ms | 3.29ms | 6397.1% | 377MiB |
| WebSocket | Echo Pipelined | 4,096 | 4,661,739 | 13.98ms | 19.10ms | 6392.3% | 908MiB |
| WebSocket | Echo Pipelined | 16,384 | 4,226,630 | 60.68ms | 71.60ms | 6334.8% | 2.7GiB |
How the benchmark is run · The machine · Add or fix an entry