skip to content

Idle & Orphaned Spend

Detached volumes, forgotten environments, idle provisioned capacity, over-bought commitments and retention nobody chose. Asked because waste is found by inventory and reconciliation, not intuition.

on this pageshow

questions

5

After you delete a virtual machine, the bill barely moves - which charges outlive the machine, and how do you find them?

level: juniorimportance: must knowfreq 66%

answer

  1. one request, several separate rentals
  2. lifecycles are independent of each other
  3. the machine's record will not list them
  4. search by attachment state, not by name
  5. volumes, snapshots, images, reserved addresses

basics

~20 s

Storage and reservations outlive the machine. A block volume that was not marked to be deleted with it, the snapshots and images built from it, and a reserved public address all keep billing. Find them by listing resources attached to nothing, not by reading the machine's record.

solid answer

~40 s

A platform does not rent you "a server"; it rents you several things created together with separate lifecycles: compute time, one or more block volumes, snapshots and images built from them, and often a reserved public address. Deleting the machine ends only the runtime charge. A volume that was not marked to be deleted with the machine stays allocated and keeps billing per gigabyte; snapshots are stored objects in their own right and survive even their source volume; a reserved address is charged because you bought the reservation, not the use. You find them by querying the inventory for state rather than for names - volumes attached to nothing, addresses routed to nothing, images nothing has launched from - in every region and account, including the ones nobody remembers opening.

go deeper

for a junior

Recall that a machine is several rentals, not one: compute time, volumes, snapshots, an image, a reserved address. Deleting the machine ends the runtime charge and nothing else automatically.

for a middle

Explain which dimension each residue is metered on - runtime against gigabytes allocated against a flat reservation - and why an inventory query on attachment state finds them when a cost report grouped by service cannot.

for a senior

Show that you sweep on a schedule across every region and account, rank candidates by monthly charge, and carry last-use evidence per row so an owner can dispute the evidence rather than the deletion.

for a principal

Frame it as a production rate, not a backlog: ordinary work creates residue continuously and nothing fails when it exists, so the lasting fix is deletion at creation time plus a recurring sweep, not one heroic cleanup.

## Why a delete does not stop the bill When you ask a cloud platform for "a server", you do not create one thing. You create a small set of independent rentals that happen to be born together: a unit of **compute time** metered per second or per hour, one or more **block volumes** metered per gigabyte allocated per month, sometimes a **reserved public address**, any **snapshots** taken of those volumes, a **machine image** built from one of them, and often a log or metric stream with a retention of its own. Each has its own identifier, its own lifecycle and its own line on the bill. Deleting the compute unit ends exactly one of those rentals - the runtime one. The others keep running because nothing told them to stop. That is the first and most common shape of **idle and orphaned spend**: a resource still allocated, still charged, and no longer referenced by anything that runs. It is not a billing error and not a provider trick; the capacity genuinely is reserved for you. ## What normally survives | What survives | Why it survives | Evidence that it is orphaned | |---|---|---| | A block volume | Volumes are created and billed separately; only the ones marked to be deleted with the machine go with it | Attached to nothing, no read or write since the machine disappeared | | Snapshots of that volume | A snapshot is a stored object in its own right, not a pointer into a live volume | Its source volume no longer exists and nothing has restored from it | | A machine image | The image holds the blocks it was built from, stored separately | Nothing has launched from it since it was created | | A reserved public address | You bought a reservation, and the reservation is the billable thing | Reserved, routed to nothing | | A managed store left running "just in case" | Instance time is billed while the instance exists, whatever connects | No connections across a full business cycle | Providers differ in the details - some charge a reserved address only while it is attached to nothing and others charge it either way; some account for a snapshot chain by unique blocks and others more coarsely - but the direction is the same everywhere: the storage and the reservation outlive the compute. ## Stopping is not deleting Stopping a machine is a different operation with a different effect. The per-second or per-hour **runtime** charge normally ends, because you are no longer occupying compute capacity. Everything allocated by existence keeps billing: the volumes, the snapshots, the image, the reserved address, and any per-hour licence attached to the machine. A team that stops a fleet "to save money over the holidays" and sees the bill fall by less than half has usually met exactly this: they removed the one dimension metered by time-in-use and kept every dimension metered by allocation. ## Why the bill is the wrong place to start A cost report groups charges by service and by dimension. It will happily tell you that block storage is a large line - which is also true in a perfectly healthy estate. It does not tell you that a particular volume is attached to nothing, because "attached to nothing" is not a billing concept; it is an inventory concept. That is why this waste is found by **reconciliation** - matching what exists against what is used - and not by reading a bill or by intuition. ## How you actually find them Query the platform's own inventory by **state**, per region and per account: 1. Volumes whose attachment is empty, sorted by size, oldest first. 2. Reserved addresses with no target. 3. Snapshots and images whose source no longer exists, and snapshot lineages with no restore ever recorded. 4. Managed stores and clusters with no connection or request in a full business cycle. 5. The same four lists again in every region and account the organisation owns, not just the ones the team uses - residue collects exactly where nobody looks. Then attach two things to each row before anyone deletes anything: the **monthly charge**, so the list can be ranked, and the **last-use evidence** you relied on, so the owner can argue with the evidence rather than with you. A resource with neither is a guess. ## The size of it Individually these are unremarkable - one abandoned volume is a rounding error. They matter because they are produced continuously by ordinary work (every experiment, every rebuild, every migration leaves some) and because nothing ever fails when they exist. Nothing pages, nothing errors, no user complains. A cost that only ever grows and never announces itself is precisely the kind that has to be swept for on a schedule rather than noticed.

  • Does stopping the machine instead of deleting it remove the same charges?
    No. Stopping normally ends only the runtime charge metered per second or hour. The volumes, snapshots, image and reserved address are billed for being allocated, so they continue unchanged. Stopping is the right move for something you will start again; it is not a cleanup.
  • Which of these residues grows over time rather than staying flat?
    Snapshots and any image built from them. A volume charges for a fixed allocated size and an address is a flat reservation, but a snapshot schedule that is still running keeps adding stored bytes every night, so that line rises month after month while the others sit still.
  • Why does an inventory sweep have to cover regions the team never chose?
    Because resources can be created anywhere the account allows, and an experiment or a default in a forgotten place bills exactly like a deliberate one. Residue collects where nobody looks, so a sweep scoped to "our region" systematically misses the cases that survived longest.

Clearing your desk out of a rented office does not end the storage unit down the road: the unit keeps charging every month until you hand the key back, whether or not anything inside it is ever opened.

saying these in an interview costs you the question

  • Deleting a machine always deletes every volume attached to it.
  • An unattached address costs nothing because nothing uses it.
  • Snapshots disappear when their source volume is deleted.
  • A stopped machine costs nothing at all.
  • If it is not in the machine list, it is not being billed.
open as a page

A non-production environment has served no traffic for a quarter yet costs nearly what it did when busy - which charges failed to fall, and why?

level: middleimportance: must knowfreq 56%

basics

~20 s

Anything metered by allocation rather than by use. Machine hours, managed-store instance hours, provisioned throughput floors, allocated block storage and per-hour licences all bill for existing. Only consumption-metered charges - requests served and bytes moved - fall at zero traffic, and they were the small part.

open as a page

A retired pipeline's nightly snapshot job is still running - why does that waste grow every month, and what bounds it?

level: middleimportance: should knowfreq 44%

basics

~20 s

Because the charge is a stock, not a rate: every run adds stored bytes and nothing removes them. A retention rule bounds it, at roughly the nightly change volume times the days retained. Without one, the stock rises for as long as the job runs.

open as a page

Your platform bill contains waste nobody can name - how would you build a sweep that proves which resources are dead rather than guessing?

level: seniorimportance: should knowfreq 48%

basics

~20 s

Join three sources: the platform inventory of everything that exists, the billing records that price it, and last-use evidence appropriate to each resource kind. Rank the unreferenced rows by monthly charge, attach an owner and the evidence, and quarantine before deleting.

open as a page

A store's provisioned throughput floor was sized for a peak that ended a quarter ago - how do you separate dead capacity from headroom somebody holds on purpose?

level: seniorimportance: nice to knowfreq 32%

basics

~20 s

Utilisation alone cannot tell them apart. A low ratio only proves the floor exceeds observed demand; deliberate headroom has a named reason and an event that consumes it. Get consumption across a full business cycle plus an owner's stated reason, then step the floor down rather than cutting it.

open as a page