Closed-form models that translate per-runtime metrics into deployment-archetype outcomes. Inputs come from the measured columns in the per-runtime summary; the math is shown alongside the score so readers can sanity-check it.
Simulated workload: 1,000,000 invocations, cold-start probability 20%. Per-invocation cost = avg latency × RSS-after-first-request (warm) + pcold × TTFR × RSS (cold tax). Result is total billable GB·seconds; lower is better.
| Rank | Runtime | Warm cost MiB·ms / req | Cold tax MiB·ms / req | Total GB·seconds | Ratio vs winner |
|---|---|---|---|---|---|
| 1 | quarkus-leyden | 1,986 | 38,718 | 39,750 | 1.00× |
| 2 | quarkus-virtual-leyden | 1,656 | 40,892 | 41,551 | 1.05× |
| 3 | quarkus-jvm | 1,959 | 123,627 | 122,642 | 3.09× |
| 4 | quarkus-virtual | 1,695 | 136,556 | 135,012 | 3.40× |
Simulated workload: 10,000 rps for 24 hours, instances pinned to 80% utilization, Service Level Objective (SLO) target latency 100 ms — i.e. the maximum request latency the service commits to. The simulator uses the measured max latency as a proxy: full credit at the SLO, zero credit at 2× the SLO, linear in between. Score = SLO-compliant requests served per GB·hour of cluster memory; higher is better.
| Rank | Runtime | SLO compliance | Effective rps | Instances required | Cluster RSS MiB | Score SLO-rps / GB·hour | Ratio vs winner |
|---|---|---|---|---|---|---|---|
| 1 | quarkus-virtual-leyden | 100% | 14,160 | 1 | 376 | 138,666,880 | 1.00× |
| 2 | quarkus-virtual | 100% | 15,051 | 1 | 414 | 134,116,675 | 0.97× |
| 3 | quarkus-jvm | 100% | 12,369 | 2 | 898 | 50,782,645 | 0.37× |
| 4 | quarkus-leyden | 100% | 11,383 | 2 | 835 | 50,276,169 | 0.36× |
Cells show mean ± sample standard deviation across iterations.
| Runtime | Throughput rps | TTFR ms | rps / MiB rps/MiB | RSS @ startup MiB | RSS @ 1st req MiB | RSS under load MiB | Conn err count | Timeouts count |
|---|---|---|---|---|---|---|---|---|
| quarkus-jvm | 12,369 ± 565 (CV 4.6%) | 2,538.1 ± 77.9 (CV 3.1%) | 27.57 ± 1.61 (CV 5.9%) | 227.9 ± 6.0 (CV 2.6%) | 243.5 ± 5.9 (CV 2.4%) | 448.9 ± 10.5 (CV 2.3%) | 0 ± 0 | 0 ± 0 |
| quarkus-leyden | 11,383 ± 537 (CV 4.7%) | 852.9 ± 27.1 (CV 3.2%) | 27.31 ± 1.63 (CV 6.0%) | 218.9 ± 2.3 (CV 1.1%) | 227.0 ± 3.2 (CV 1.4%) | 417.3 ± 15.9 (CV 3.8%) | 0 ± 0 | 0 ± 0 |
| quarkus-virtual | 15,051 ± 397 (CV 2.6%) | 2,663.6 ± 50.6 (CV 1.9%) | 36.40 ± 1.42 (CV 3.9%) | 231.4 ± 3.9 (CV 1.7%) | 256.3 ± 2.7 (CV 1.0%) | 413.7 ± 9.6 (CV 2.3%) | 0 ± 0 | 0 ± 0 |
| quarkus-virtual-leyden | 14,160 ± 184 (CV 1.3%) | 867.9 ± 62.5 (CV 7.2%) | 37.69 ± 1.95 (CV 5.2%) | 226.6 ± 4.2 (CV 1.8%) | 235.6 ± 5.0 (CV 2.1%) | 376.5 ± 16.3 (CV 4.3%) | 0 ± 0 | 0 ± 0 |
Bar = mean across iterations. Error bar = sample standard deviation. Runtimes that didn't produce a metric are omitted from that chart.
| Runtime | Metric | iter 0 | iter 1 | iter 2 | iter 3 | iter 4 | iter 5 | iter 6 |
|---|---|---|---|---|---|---|---|---|
| quarkus-jvm | Throughput | 13,026 | 11,832 | 11,734 | 13,229 | 12,194 | 12,227 | 12,339 |
| quarkus-jvm | TTFR | 2,595.6 | 2,508.1 | 2,608.4 | 2,450.4 | 2,647.6 | 2,491.8 | 2,464.6 |
| quarkus-jvm | rps / MiB | 29.55 | 26.45 | 25.30 | 29.38 | 26.92 | 26.82 | 28.60 |
| quarkus-jvm | RSS @ startup | 239.9 | 222.9 | 229.4 | 228.7 | 222.9 | 223.7 | 227.5 |
| quarkus-jvm | RSS @ 1st req | 255.0 | 238.1 | 244.4 | 245.4 | 237.6 | 240.4 | 243.9 |
| quarkus-jvm | RSS under load | 440.8 | 447.4 | 463.8 | 450.3 | 453.0 | 455.8 | 431.5 |
| quarkus-jvm | Conn err | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-jvm | Timeouts | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-leyden | Throughput | 10,881 | 12,111 | 10,997 | 11,106 | 11,202 | 12,191 | 11,195 |
| quarkus-leyden | TTFR | 837.9 | 841.9 | 848.3 | 824.1 | 852.2 | 909.5 | 856.8 |
| quarkus-leyden | rps / MiB | 26.30 | 29.54 | 27.07 | 24.75 | 26.63 | 28.87 | 28.01 |
| quarkus-leyden | RSS @ startup | 217.0 | 218.0 | 217.9 | 217.6 | 219.0 | 224.0 | 218.8 |
| quarkus-leyden | RSS @ 1st req | 229.3 | 221.5 | 224.5 | 226.2 | 231.4 | 228.2 | 227.7 |
| quarkus-leyden | RSS under load | 413.7 | 410.0 | 406.2 | 448.8 | 420.6 | 422.3 | 399.8 |
| quarkus-leyden | Conn err | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-leyden | Timeouts | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-virtual | Throughput | 15,023 | 15,527 | 15,046 | 15,429 | 15,245 | 14,643 | 14,442 |
| quarkus-virtual | TTFR | 2,589.3 | 2,648.1 | 2,663.7 | 2,673.5 | 2,743.7 | 2,624.3 | 2,702.8 |
| quarkus-virtual | rps / MiB | 34.70 | 37.79 | 36.00 | 38.10 | 37.60 | 35.72 | 34.91 |
| quarkus-virtual | RSS @ startup | 228.5 | 228.5 | 231.3 | 236.9 | 227.0 | 231.5 | 236.2 |
| quarkus-virtual | RSS @ 1st req | 256.8 | 252.6 | 254.8 | 260.3 | 255.6 | 255.1 | 259.2 |
| quarkus-virtual | RSS under load | 433.0 | 410.9 | 418.0 | 404.9 | 405.5 | 409.9 | 413.7 |
| quarkus-virtual | Conn err | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-virtual | Timeouts | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-virtual-leyden | Throughput | 14,246 | 13,888 | 14,343 | 14,284 | 14,015 | 14,013 | 14,335 |
| quarkus-virtual-leyden | TTFR | 778.5 | 974.7 | 866.9 | 825.0 | 904.0 | 883.8 | 842.6 |
| quarkus-virtual-leyden | rps / MiB | 41.74 | 35.52 | 37.52 | 36.98 | 37.22 | 36.76 | 38.05 |
| quarkus-virtual-leyden | RSS @ startup | 220.1 | 224.1 | 227.9 | 225.7 | 228.5 | 233.6 | 226.0 |
| quarkus-virtual-leyden | RSS @ 1st req | 228.7 | 231.3 | 241.8 | 239.4 | 235.3 | 240.1 | 232.5 |
| quarkus-virtual-leyden | RSS under load | 341.3 | 390.9 | 382.2 | 386.3 | 376.5 | 381.1 | 376.8 |
| quarkus-virtual-leyden | Conn err | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-virtual-leyden | Timeouts | 0 | 0 | 0 | 0 | 0 | 0 | 0 |