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-semeru | 2,810 | 172,461 | 171,162 | 1.00× |
| 2 | quarkus-virtual-semeru | 2,727 | 174,668 | 173,237 | 1.01× |
| 3 | quarkus-jvm | 2,749 | 221,428 | 218,923 | 1.28× |
| 4 | quarkus-virtual | 2,717 | 221,630 | 219,088 | 1.28× |
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 | 100% | 10,279 | 2 | 620 | 61,137,632 | 1.00× |
| 2 | quarkus-virtual-semeru | 76% | 7,415 | 2 | 586 | 46,668,455 | 0.76× |
| 3 | quarkus-semeru | 62% | 5,830 | 2 | 630 | 34,090,330 | 0.56× |
| 4 | quarkus-jvm | 63% | 6,388 | 2 | 697 | 33,807,443 | 0.55× |
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 | 10,127 ± 261 (CV 2.6%) | 3,958.8 ± 105.9 (CV 2.7%) | 29.08 ± 0.90 (CV 3.1%) | 265.8 ± 0.1 (CV 0.05%) | 279.7 ± 0.3 (CV 0.10%) | 348.3 ± 6.7 (CV 1.9%) | 0 ± 0 | 0 ± 0 |
| quarkus-semeru | 9,398 ± 165 (CV 1.8%) | 3,250.5 ± 93.9 (CV 2.9%) | 29.83 ± 0.92 (CV 3.1%) | 255.0 ± 0.4 (CV 0.16%) | 265.3 ± 0.7 (CV 0.26%) | 315.2 ± 8.1 (CV 2.6%) | 0 ± 0 | 0 ± 0 |
| quarkus-virtual | 10,279 ± 180 (CV 1.7%) | 3,948.8 ± 106.5 (CV 2.7%) | 33.18 ± 0.86 (CV 2.6%) | 265.7 ± 0.1 (CV 0.03%) | 280.6 ± 0.4 (CV 0.15%) | 309.9 ± 5.7 (CV 1.8%) | 0 ± 0 | 0 ± 0 |
| quarkus-virtual-semeru | 9,693 ± 113 (CV 1.2%) | 3,288.9 ± 95.2 (CV 2.9%) | 33.10 ± 0.38 (CV 1.1%) | 255.0 ± 0.3 (CV 0.12%) | 265.5 ± 1.1 (CV 0.41%) | 292.8 ± 0.8 (CV 0.28%) | 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 | 10,220 | 10,162 | 10,401 | 10,019 | 9,870 | 9,756 | 10,458 |
| quarkus-jvm | TTFR | 4,057.2 | 3,912.2 | 3,804.7 | 3,857.0 | 4,013.4 | 4,093.6 | 3,973.4 |
| quarkus-jvm | rps / MiB | 29.75 | 29.42 | 28.96 | 28.98 | 27.66 | 28.41 | 30.40 |
| quarkus-jvm | RSS @ startup | 265.7 | 265.7 | 265.7 | 265.9 | 265.6 | 266.0 | 265.8 |
| quarkus-jvm | RSS @ 1st req | 279.4 | 279.5 | 279.6 | 279.6 | 279.5 | 280.2 | 279.8 |
| quarkus-jvm | RSS under load | 343.5 | 345.4 | 359.2 | 345.8 | 356.8 | 343.4 | 344.0 |
| quarkus-jvm | Conn err | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-jvm | Timeouts | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-semeru | Throughput | 9,401 | 9,306 | 9,151 | 9,368 | 9,525 | 9,360 | 9,672 |
| quarkus-semeru | TTFR | 3,218.0 | 3,378.2 | 3,233.0 | 3,131.5 | 3,173.5 | 3,245.7 | 3,373.6 |
| quarkus-semeru | rps / MiB | 30.01 | 30.23 | 28.28 | 30.41 | 28.92 | 29.99 | 30.97 |
| quarkus-semeru | RSS @ startup | 254.4 | 255.1 | 254.4 | 255.3 | 255.1 | 255.4 | 255.1 |
| quarkus-semeru | RSS @ 1st req | 265.0 | 265.7 | 264.9 | 265.9 | 265.7 | 264.0 | 265.8 |
| quarkus-semeru | RSS under load | 313.3 | 307.8 | 323.6 | 308.0 | 329.3 | 312.1 | 312.3 |
| quarkus-semeru | Conn err | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-semeru | Timeouts | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-virtual | Throughput | 10,345 | 10,190 | 10,289 | 10,028 | 10,193 | 10,296 | 10,612 |
| quarkus-virtual | TTFR | 4,009.5 | 3,949.1 | 3,985.4 | 3,823.0 | 3,924.6 | 3,824.4 | 4,125.3 |
| quarkus-virtual | rps / MiB | 33.41 | 31.62 | 33.29 | 32.78 | 33.33 | 33.31 | 34.51 |
| quarkus-virtual | RSS @ startup | 265.7 | 265.7 | 265.8 | 265.7 | 265.7 | 265.8 | 265.7 |
| quarkus-virtual | RSS @ 1st req | 281.2 | 280.6 | 280.6 | 280.2 | 280.2 | 281.1 | 280.4 |
| quarkus-virtual | RSS under load | 309.6 | 322.3 | 309.0 | 305.9 | 305.8 | 309.1 | 307.5 |
| quarkus-virtual | Conn err | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-virtual | Timeouts | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-virtual-semeru | Throughput | 9,590 | 9,585 | 9,641 | 9,599 | 9,812 | 9,803 | 9,824 |
| quarkus-virtual-semeru | TTFR | 3,287.9 | 3,260.6 | 3,148.9 | 3,408.6 | 3,417.1 | 3,258.1 | 3,241.2 |
| quarkus-virtual-semeru | rps / MiB | 32.82 | 32.85 | 32.88 | 32.68 | 33.42 | 33.40 | 33.65 |
| quarkus-virtual-semeru | RSS @ startup | 255.2 | 255.1 | 255.1 | 254.7 | 254.5 | 255.3 | 255.2 |
| quarkus-virtual-semeru | RSS @ 1st req | 264.7 | 264.5 | 266.5 | 264.0 | 265.9 | 266.6 | 266.6 |
| quarkus-virtual-semeru | RSS under load | 292.2 | 291.8 | 293.2 | 293.7 | 293.6 | 293.4 | 292.0 |
| quarkus-virtual-semeru | Conn err | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| quarkus-virtual-semeru | Timeouts | 0 | 0 | 0 | 0 | 0 | 0 | 0 |