Portaldocs
Money

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 zero

The parts

PartWhat it counts
Spot discountthe difference between each machine's standard price and the spot price paid
Cheaper machinestime on machines cheaper than the dearest one the job used, which one machine for the whole job would have been
Work preservedwork a checkpoint kept through a spot interruption that a plain run would have redone
Out-of-memory rescuesthe 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.

On this page