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,955 | 38,167 | 39,182 | 1.00× |
| 2 | quarkus-virtual-leyden | 1,584 | 40,098 | 40,704 | 1.04× |
| 3 | quarkus-jvm | 2,071 | 131,869 | 130,801 | 3.34× |
| 4 | quarkus-virtual | 1,721 | 137,627 | 136,082 | 3.47× |
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,553 | 1 | 379 | 141,399,529 | 1.00× |
| 2 | quarkus-virtual | 100% | 14,832 | 1 | 423 | 129,391,721 | 0.92× |
| 3 | quarkus-leyden | 100% | 11,391 | 2 | 832 | 50,472,547 | 0.36× |
| 4 | quarkus-jvm | 100% | 12,023 | 2 | 908 | 48,799,343 | 0.35× |
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,023 ± 442 (CV 3.7%) | 2,635.8 ± 40.7 (CV 1.5%) | 26.48 ± 1.00 (CV 3.8%) | 234.1 ± 3.6 (CV 1.5%) | 250.2 ± 3.6 (CV 1.4%) | 454.1 ± 8.9 (CV 1.9%) | 0 ± 0 | 0 ± 0 |
| quarkus-leyden | 11,391 ± 584 (CV 5.1%) | 853.4 ± 36.7 (CV 4.3%) | 27.39 ± 1.25 (CV 4.6%) | 217.9 ± 2.4 (CV 1.1%) | 223.6 ± 1.9 (CV 0.85%) | 416.0 ± 11.3 (CV 2.7%) | 0 ± 0 | 0 ± 0 |
| quarkus-virtual | 14,832 ± 290 (CV 2.0%) | 2,682.8 ± 85.3 (CV 3.2%) | 35.10 ± 0.65 (CV 1.9%) | 233.7 ± 4.1 (CV 1.8%) | 256.5 ± 6.3 (CV 2.4%) | 422.6 ± 7.7 (CV 1.8%) | 0 ± 0 | 0 ± 0 |
| quarkus-virtual-leyden | 14,553 ± 306 (CV 2.1%) | 865.9 ± 28.5 (CV 3.3%) | 38.38 ± 1.24 (CV 3.2%) | 222.0 ± 4.0 (CV 1.8%) | 231.5 ± 4.7 (CV 2.0%) | 379.4 ± 11.4 (CV 3.0%) | 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 | 11,799 | 12,754 | 11,769 | 11,795 | 11,804 | 11,669 | 12,569 |
| quarkus-jvm | TTFR | 2,619.3 | 2,645.0 | 2,634.8 | 2,555.6 | 2,649.2 | 2,664.1 | 2,682.5 |
| quarkus-jvm | rps / MiB | 26.34 | 28.15 | 26.71 | 26.06 | 25.21 | 25.61 | 27.28 |
| quarkus-jvm | RSS @ startup | 230.8 | 234.9 | 233.2 | 241.4 | 233.0 | 234.6 | 230.7 |
| quarkus-jvm | RSS @ 1st req | 245.6 | 251.0 | 249.8 | 256.3 | 247.8 | 252.9 | 247.8 |
| quarkus-jvm | RSS under load | 447.9 | 453.1 | 440.6 | 452.6 | 468.2 | 455.6 | 460.7 |
| 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,724 | 10,964 | 12,554 | 11,230 | 11,376 | 11,316 | 11,575 |
| quarkus-leyden | TTFR | 886.7 | 839.6 | 873.6 | 792.0 | 824.7 | 895.0 | 861.9 |
| quarkus-leyden | rps / MiB | 26.50 | 25.40 | 29.29 | 26.91 | 28.13 | 27.83 | 27.63 |
| quarkus-leyden | RSS @ startup | 219.6 | 219.4 | 221.2 | 216.5 | 215.5 | 218.3 | 214.8 |
| quarkus-leyden | RSS @ 1st req | 225.7 | 223.1 | 226.1 | 222.1 | 224.9 | 221.7 | 221.9 |
| quarkus-leyden | RSS under load | 404.6 | 431.6 | 428.6 | 417.3 | 404.4 | 406.6 | 418.9 |
| quarkus-leyden | Conn err | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-leyden | Timeouts | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-virtual | Throughput | 14,639 | 14,648 | 15,015 | 15,242 | 15,140 | 14,554 | 14,587 |
| quarkus-virtual | TTFR | 2,691.5 | 2,536.7 | 2,782.7 | 2,612.7 | 2,764.3 | 2,708.2 | 2,683.6 |
| quarkus-virtual | rps / MiB | 35.52 | 35.24 | 34.79 | 35.27 | 36.17 | 34.45 | 34.29 |
| quarkus-virtual | RSS @ startup | 232.1 | 232.2 | 238.8 | 232.4 | 231.5 | 228.7 | 239.9 |
| quarkus-virtual | RSS @ 1st req | 250.9 | 259.3 | 256.3 | 250.3 | 254.5 | 255.3 | 268.9 |
| quarkus-virtual | RSS under load | 412.1 | 415.7 | 431.5 | 432.2 | 418.5 | 422.4 | 425.4 |
| 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 | 13,954 | 14,468 | 14,722 | 14,720 | 14,549 | 14,927 | 14,534 |
| quarkus-virtual-leyden | TTFR | 862.8 | 858.7 | 856.7 | 925.2 | 846.5 | 838.3 | 873.4 |
| quarkus-virtual-leyden | rps / MiB | 36.70 | 38.83 | 38.74 | 38.57 | 37.27 | 38.03 | 40.54 |
| quarkus-virtual-leyden | RSS @ startup | 220.7 | 224.2 | 221.4 | 220.9 | 220.9 | 216.5 | 229.6 |
| quarkus-virtual-leyden | RSS @ 1st req | 229.2 | 231.8 | 235.2 | 230.6 | 230.6 | 224.0 | 239.1 |
| quarkus-virtual-leyden | RSS under load | 380.3 | 372.6 | 380.0 | 381.6 | 390.4 | 392.5 | 358.5 |
| quarkus-virtual-leyden | Conn err | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-virtual-leyden | Timeouts | 0 | 0 | 0 | 0 | 0 | 0 | 0 |