Skip to content
Cloud Efficiency Hub

Long-Stopped Compute Engine VM Retaining Disks and Static IPs

The short version

Stopping a Compute Engine VM ends vCPU and memory charges, which is why stopping is the usual response to an unneeded machine.

PointFive Research

Cloud cost research at PointFive

Category
Storage
Reference
CER-0463
Type
Idle or Unused Resource

Explanation

Why the waste happens and who it affects.

But the VM's resources remain: its boot and data disks keep billing for their full provisioned size, a static external IP assigned to it keeps billing as an in-use address, and preserved Local SSD data keeps billing for the durable storage that holds it. Because the instance itself shows no compute cost, VMs stopped as a precaution are easily left in the TERMINATED state for months.

The longer a VM stays stopped, the less likely it is to be restarted, and the residual storage and address cost becomes pure waste. Typical sources are migrations, incident investigations, project wind-downs and dev projects where VMs are stopped instead of deleted. Suspended VMs have the same issue plus a memory charge, until Compute Engine moves them to TERMINATED after 60 days.

Billing model

The pricing dimensions that drive this cost.

Attached disks
Persistent Disk and Hyperdisk volumes attached to a stopped or suspended VM are billed for provisioned capacity (and Hyperdisk provisioned performance) as long as they exist
Static IP on a stopped VM
A static external IP associated with a stopped VM is still considered in use and billed hourly
Preserved Local SSD data
If Local SSD data is preserved on stop, the storage used to hold it is billed until the VM is restarted or deleted
Suspended VMs
Billed for memory, attached disks and static IPs, with no vCPU charge, for up to 60 days

How to detect

4 checks to find it in your estate.

  • List instances in the TERMINATED state (gcloud compute instances list --filter="status=TERMINATED") and use lastStopTimestamp to find VMs stopped longer than an agreed threshold, for example 30 days
  • For each long-stopped VM, sum the provisioned size and type of its attached disks and note any static external IP assigned to it
  • Include SUSPENDED instances, which also bill for memory
  • Check owner labels and ask owners whether a restart is planned; the idle disk recommender does not flag disks that are still attached to a stopped VM

How to fix

4 ways to remove the waste.

  • For VMs that will not be restarted, create a machine image or snapshot the disks if the state may be needed, then delete the VM with its disks
  • Release static external IPs from long-stopped VMs if nothing depends on the address; an unattached reserved address is billed at a higher rate, so release it rather than just detaching it
  • Move retained backups of long-stopped VMs to archive snapshots when they are kept only for compliance (90-day minimum storage charge applies)
  • Add a policy, for example a scheduled script or label-based review, that flags or deletes VMs stopped beyond a set number of days

Documentation

Vendor references for pricing and configuration.