
Cost Control
Cloud resource optimisation
Review charged resources, compute size, operating hours and commitments against workload needs and actual billing.
Cloud resource optimisation matches paid resources and capacity to the work they support. Review four decisions in order: whether a resource is still needed, whether active compute is the right size, whether it needs to run at every hour, and whether the remaining eligible demand is dependable enough for a commitment. Give each proposed change an owner and check the workload after implementation.
Decide what to investigate
Start with a charged resource and its workload, owner, purpose, usage evidence and billing period. A quiet server may run a monthly job or support recovery. Treat a provider recommendation as an investigation prompt, not approval to remove or resize the resource.
Question / Possible decision
- Is it still needed?
- Retain, investigate or retire
- Is its capacity suitable?
- Measure and consider resizing
- Must it run continuously?
- Assess an operating schedule
- Is the remaining demand steady?
- Compare commitment offers
Include supporting charges. Stopping an Amazon EC2 instance ends its instance-usage charge, but retained EBS volumes can still cost money. An Azure VM in the stopped but allocated state remains billed for compute; deallocation ends that compute charge. Disks or networking may still be charged.
Verify the provider state
A resource's displayed state can affect charges and whether a change is possible. In Azure, Stopped (Allocated) remains billed for instance usage, and transitional states such as Stopping are also billed. Deallocating and Deallocated are not billed for instance usage; disks and networking can still incur charges.
For Amazon EC2, running instances are billed by the second, with a one-minute minimum, even when idle. Hibernating instances are billed while in the stopping state.
Stopping a Compute Engine instance is not the same as deleting it. Restarting requires sufficient resources in the instance's zone, and stopping or restarting is only possible when the instance's state allows it. Check these conditions before treating a stop as a reversible way to free capacity.
Cloud Provider State and Billing Implications
- Azure VMStopped (Allocated): still billed for compute; Deallocated: no compute charge, but disks/network may apply
- Google Cloud Compute EngineStopping instance ends compute charge; restart requires available zone resources
Measure before changing capacity
Observe a period containing ordinary work and important peaks. Compare CPU and memory with completed application actions, response time, errors and queueing. Add disk and network measures when they may constrain the workload. Record what the window misses, especially monthly or seasonal work.
AWS Compute Optimizer offers configurable lookback and headroom preferences for supported recommendations. Azure Advisor considers CPU, memory and outbound network use for VM resizing, and recommends a less expensive SKU based on retail rates.
Google Compute Engine machine-type recommendations use system metrics gathered over the previous 8 days. They suit workloads that follow weekly patterns, grow or shrink over weeks, persistently underutilise resources, or are persistently throttled by insufficient resources. Check each suggestion against application requirements and current account charges.
For a candidate size, record the current and proposed configuration, required features, expected busy demand and a return path. Check a representative application action after the change. If the evidence does not cover an important peak, leave the sizing decision open.
Key Metrics to Monitor Before Resizing
- CPU Utilisation
- Average and peak over a representative period
- Memory Usage
- Peak and sustained levels during workloads
- Network Output
- Outbound data transfer patterns affecting performance
- Disk I/O
- Latency and throughput constraints on application performance
Check whether a recommendation fits
Recommendation settings can change which configurations are considered. AWS Compute Optimizer lets account managers or delegated administrators apply preferences at organisation level; an individual account holder's preferences apply only to their recommendations. Its EC2 preferences can restrict recommendations to chosen instance types or families, including types aligned with an organisation's requirements.
Google machine-type recommendations are not available for some VM instances, including those created using Google Kubernetes Engine, Dataflow or Managed Service for Apache Spark. They are also unavailable for instances with ephemeral disks, GPUs or TPUs, and for the memory-optimised machine family. Confirm that a recommendation exists for the workload before relying on it.
Schedule suitable environments
Development and test resources may have predictable use windows. Confirm users' time zones, overnight jobs, dependencies, startup time and who can extend a window. Specify the local time zone and the intended start and stop states.
AWS Instance Scheduler can use schedules and matching tags for supported instances. Azure VM auto-shutdown configures a shutdown time; establish the required start process separately. Google Compute Engine instance schedules can start and stop eligible VMs. Check the schedule configuration and observe a full cycle before relying on it.
Compare removed compute usage with residual charges and any cost of operating the schedule.
Validate schedule operation
For Instance Scheduler on AWS, the schedule name in an instance tag must exactly match a configured schedule. Misspelt or nonexistent schedule names cause an UnknownSchedule error, and the scheduler will not stop the instance. Review the IS-Error and IS-LastAction tags periodically to confirm that schedules are operating as expected.
Check how manual actions interact with the schedule. With the default enforced: false setting, an instance manually stopped during a running period will not be restarted. One manually started outside a running period will not be stopped after the initial stop transition. A schedule can therefore leave an instance running longer than intended if its behaviour is not checked.
Assess commitments last
After retirement, sizing and scheduling decisions, identify the eligible usage likely to persist. Compare each offer's matching rules, scope, term, payment obligation and lower-demand outcome against current account rates and existing commitments. A product's advertised discount does not establish a saving for a particular account.
Keep a record of the approved change, application result and comparable billing period. Separate reduced usage from rate changes, credits and commitment purchases. Revisit the decision when demand or the workload changes.
Include existing obligations in the lower-demand scenario. AWS Reserved Instances applied to a terminated EC2 instance continue to be billed until the end of their term, according to the payment option; terminating the resource does not by itself remove that commitment cost.
In this guide
- Finding idle cloud resources with ongoing chargesTrace billable idle cloud resources to their owners and purpose before stopping or deleting VMs, disks and addresses.
- Right-sizing compute after measuring workloadMeasure busy workload demand, screen compute sizes and check application results before treating a resize as a saving.
- Scheduling non-production resources around useSet operating windows for development and test resources, check provider stop behaviour and observe a full start-stop cycle.
- Comparing reserved vs spend commitments in uncertain demandCompare AWS, Azure and Google Cloud commitments using eligible demand, matching rules and a lower-use cost case.



