Savings
How Portal works out what it saved a job, measured against one machine for the whole job, and the parts the saving splits into.
Warnings and limits
- A saving is an estimate from recorded rates and running times, not a provider invoice.
- Speed is not modeled: Portal never claims a faster or slower machine would have taken another time.
- The baseline is one machine for the whole job. A job that ran on one on-demand machine Portal never touched saves exactly $0.
- A saving is never negative. What you paid beyond rate times time (a pause billed on two machines at once, a provider's minimum, a slow termination) is shown as Portal overhead on its own line, not subtracted into a negative saving.
- A job Portal lost after moving it saved nothing, and all it cost is Portal overhead.
- Jobs only on your own machines, or that never ran, have no saving. A job with an unknown price or an unmeasured move pause shows "unavailable" with the reason, never $0.
The idea
Without Portal there is no switching. You would rent the most demanding machine the job ever needed, pay for it the whole time, boots included, and a spot interruption or an out-of-memory crash would throw your work away. That is the baseline: what the job would have cost without Portal.
For each machine that held the job, Portal knows the rate paid, the standard price of that exact machine (on-demand on AWS, Google Cloud and Azure, Modal's regular rate, the one price where a provider sells only one way), and the time you paid for it as the provider bills it.
Baseline = the dearest machine the job used, at its standard price, for all the machine time you paid for
+ the work Portal preserved through spot interruptions and out-of-memory rescues
Saved = Baseline - what you paid, never below zeroThe parts
| Part | What it counts |
|---|---|
| Spot discount | the difference between each machine's standard price and the spot price paid |
| Cheaper machines | time on machines cheaper than the dearest one the job used, which one machine for the whole job would have been |
| Work preserved | work a checkpoint kept through a spot interruption that a plain run would have redone |
| Out-of-memory rescues | the work an out-of-memory crash would have made you pay for again, without Portal's rescue |
Beside them, Portal overhead: what you paid beyond rate times time, such as a move's pause billed on two machines at once, a provider's minimum billing or a slow termination. The four parts less the overhead are the baseline less what you paid; the saving is that, floored at zero. Your own machines count on neither side.
Where you see it
The console's head shows one number, what Portal saved. A run's page and Usage show the same number with a closed Details: the parts that are not zero, the overhead, and the one-machine baseline it is measured against. Usage also shows the spend of every run, the runs left out without a figure, and the runs reckoned from older records. Jobs from before this method are worked out after the fact from their records, and marked as inferred. A run whose records cannot be worked out this way keeps the figure its earlier method gave, labelled by that method, and reads as unavailable rather than as zero.