Use case · Short-lived compute

Hourly VPS for short jobs: compute billed by the second

An hourly VPS makes sense when a machine is needed for an afternoon, a build or a single batch run: the Elastic Cloud VPS meters compute per second of guest uptime; disk and IPv4 accrue an hourly charge while the machine exists, guest up or down. When the job is done you release it from the dashboard, and a final invoice carries the last usage. This page sets out exactly what bills in each state, which jobs fit the model, and where a monthly flavor or bare metal is the saner choice.

See the flavors

What bills in each state

Three meters run on an elastic machine, and only one of them depends on whether the guest is powered on. The Cloud VPS page prints the running rate per hour, but compute is counted by the second.

StateComputeDisk and IPv4Egress
RunningBilled per secondBilled every hourPer GB sent
StoppedNot billedBilled every hourNothing is sent
ReleasedFinal invoice: last usageFinal invoice: last usage (billed while the machine exists)Final invoice: last usage

Ingress is free in every state. Egress has no monthly allowance and is never shaped, which is the opposite of the monthly plans, where a fixed allowance is included and traffic past it is slowed to 10 Mbit/s.

Stopping a machine does not end its bill. The disk and the address accrue an hourly charge while the machine exists, stopped included.

Jobs that fit per-second compute

  • A test environment for an afternoon. Build it, run the tests, release it before the evening.
  • CI and build bursts. A runner that exists for a release week; the self-hosted GitHub Actions runner page covers registering one.
  • A load-test client. The generator belongs outside the system under test, and only for the length of the run; see sizing a k6 load generator.
  • A one-off batch job. A conversion, an import or a data crunch that finishes and is never run again.
  • Trying a stack before committing. Install it yourself on a clean image and throw the machine away afterwards. On the Cloud VPS, Docker, GitLab, Coolify, PostgreSQL, Redis and the other one-click apps can be picked at order and install at first boot on Ubuntu 24.04; larger apps need a larger flavor.

What these share is a clear end. If you cannot say when the machine will be released, it is probably not a short job.

The flavors and their limits

Elastic machines use the same five flavors as the monthly plans, from 1 vCPU with 1 GB of memory and 25 GB of SSD up to 8 vCPUs with 16 GB and 320 GB. Each is a KVM guest on an OpenStack host in New York, the one region it is sold in.

  • vCPUs are not pinned: processor time is shared with other guests on the host, not reserved.
  • The hypervisor caps disk operations and disk throughput per guest, reads and writes counted together. A larger flavor raises both caps.
  • The virtual port is capped at the flavor's speed in each direction.
  • Images are Ubuntu, Debian, AlmaLinux and Rocky Linux from their official cloud images, with the QEMU guest agent added. There are no Windows images.
  • Addressing: a single IPv4 plus an IPv6 /96. Outbound TCP 25 is closed by default; 465 and 587 are open.

For a short job the caps matter more than the core count. A batch import bound by disk operations will finish no sooner on more vCPUs if the IOPS cap is what it hits.

Running a batch job that survives the SSH session

Paste your SSH keys on the order page and they are installed for root when the machine is built. Then hand the job to systemd rather than to the terminal: systemd-run starts the command as a transient service unit, so a dropped connection does not kill it, and its output lands in the journal.

# on the VPS: run the job as a transient service
systemd-run --unit=batchjob --working-directory=/root/job /root/job/run.sh

# follow its output, or check whether it has finished
journalctl -u batchjob -f
systemctl status batchjob

# from your workstation: copy the results off before releasing
rsync -az --partial root@vm.example.net:/root/job/results/ ./results/

--unit= names the unit. Give the script's full path: --working-directory= sets where it runs (systemd 240 and later), not where systemd-run looks for the command. journalctl -u reads that unit's log. In rsync, -a is archive mode, -z compresses in transit and --partial keeps a half-copied file if the link drops. Copy everything you need before releasing; our advice is to assume nothing on the disk survives the release.

Stop or release

Power control sits in the Virtual Machines tab: start, stop, reboot, and a hard reset for a guest that has stopped answering. The choice between stopping and releasing is a billing decision.

  1. Stop when you will come back to the same disk: a test environment paused overnight, a runner idle between release days. Compute stops; disk and address keep billing.
  2. Release when the job is done. Since disk and address accrue an hourly charge while the machine exists, releasing it should be what stops them; a final invoice carries the last usage.
  3. Reinstall only to start clean on the same machine. It erases the disk, and the dashboard asks you to type the host name first.

How the account is charged

Nothing is paid up front. Checkout stores a card and places a hold worth one week of running; the page says the hold lifts after the first payment. Usage is billed at month end, or earlier once it crosses a small threshold; a released machine's remaining usage lands on a final invoice. It sits on the same account and dashboard as any servers, domains and invoices you already have.

Elastic, monthly, or a whole machine

Elastic Cloud VPSMonthly Cloud VPSDedicated server
BilledCompute per second while running; disk and IPv4 hourlyMonthly or yearly, in advanceMonth to month; 3, 6 or 12 months prepaid for a discount
TrafficEgress per GB, no allowanceEgress allowance, then shaped to 10 Mbit/sUnmetered port, no allowance
ProcessorShared vCPU timeShared vCPU timeEvery core, nobody else on it
SystemsLinux images onlyLinux images onlyLinux, Windows, your own hypervisor
Best forJobs with a known endSmall, steady jobsBusy all day, every day

Our advice: compare before you commit. The elastic flavor table has a running-all-month column, which the page describes as 730 hours of compute on top of the disk and address, before egress and tax. Set it beside the monthly price of the same flavor, and remember the monthly plan includes an egress allowance while elastic charges every GB sent. A job that keeps every core busy, hits the largest flavor's IOPS cap, needs a GPU or Windows, or sends traffic month after month belongs on a dedicated server. A racked machine is handed over in about 30 minutes after the order is approved; a built-to-order line takes 4 to 24 hours.

Questions

Is a stopped VPS free?

No. Stopping ends the compute charge, but disk and IPv4 accrue an hourly charge while the machine exists, guest up or down. Releasing it from the dashboard should therefore be what stops them; a final invoice carries the last usage.

Is it billed by the hour or by the second?

Compute is metered in seconds of uptime, although the page quotes the running rate per hour. Disk and address accrue an hourly charge while the machine exists. Egress is charged per GB.

Is any traffic included?

Not on the elastic flavors. Every GB sent is charged, with no allowance and no throttle, and incoming traffic is free. The monthly plans work the other way round: an included egress allowance, then shaping to 10 Mbit/s.

Do I pay anything when ordering?

No payment up front. A card goes on file with a hold worth one week of compute, and usage is billed at month end, or earlier once it crosses a small threshold.

Where does it run, and can it run Windows?

In New York, on OpenStack hosts that Server Room operates; it is not sold in other regions. The images are Ubuntu, Debian, AlmaLinux and Rocky Linux. Windows is available on dedicated servers, not on the Cloud VPS.

When is a dedicated server the better buy?

When the job has no end date and keeps the processor busy, outgrows the IOPS cap of the largest flavor, needs a GPU or Windows, or pushes heavy egress every month. A dedicated server gives you every core and an unmetered port, billed month to month.

Start a machine for the job, release it after

Elastic flavors from 1 to 8 vCPUs on KVM in New York, compute billed by the second while they run.

See the flavors

Related on Server Room

Other use cases