In the realm of cloud infrastructure cost optimization, properly pricing shared CPU instances is a nuanced task. Traditional approaches that rely solely on average CPU utilization often lead to misleading conclusions. Add to that varying definitions of "shared CPU" across cloud providers and differences in included transfer, egress costs, and disk pricing — and you have a complex problem that requires a methodical approach.
In this post, I’ll dive into how to price shared CPU instances correctly when storage and network costs differ. I’ll share what really worked evaluating instances across AWS and Azure, leveraging tools like AWS Compute Optimizer and Azure Advisor. This isn’t theory — it’s grounded in real-world experience running cost reviews for internal fleets that run always-on small services.
Why Always-on Small Services Hide Cloud Waste
Before we get into the nitty-gritty, it's important to recognize a key source of cloud waste: always-on small services. These are typically background workers, lightweight API frontends, or monitoring agents that consume resources 24/7 but often fail to justify their steady-state instance size.
- They rarely use the allocated full CPU consistently. Because they never shut down, inefficiencies accumulate into significant cost over months. Using average CPU metrics to downsize can be misleading because brief spikes go undetected, risking performance degradation.
Only by properly accounting https://computingforgeeks.com/shared-cpu-cloud-waste-migration-guide/ for peak usage — not averages — and understanding shared CPU characteristics can you make safe, cost-effective instance adjustments.
Shared CPU Definitions Differ by Cloud Provider
Shared CPU is not standardized terminology. Each cloud provider defines and implements it differently, which complicates pricing analysis:
Provider Definition of Shared CPU Key Implication for Pricing AWS t-series instances (e.g., t3, t4g) provide baseline CPU credits with bursting allowed. CPU credits accumulate if idle and spend when busy. CPU credits usage needs to be monitored; burst duration impacts effective pricing. Azure B-series instances offer accumulated credits for CPU bursts but throttle sustained high CPU usage. Measuring CPU bursts and throttling intervals is essential for right-sizing. Google Cloud E2 instances share physical CPU resources, promising consistent baseline performance with bursting capability. vCPU count is not a strict performance guarantee; observe real workload spikes.It’s annoying when teams treat vCPU counts as guaranteed performance, but this isn’t representative in shared CPU models. Instead, you must analyze performance variability and manage expectations accordingly.
Measure Peaks with the Right Observation Window
One common antipattern is analyzing average CPU percentages over long intervals (e.g., 24h or weekly), hiding short resource spikes that affect workload latency and SLA.
Instead, always ask:
- What do the P95 and P99 CPU utilizations look like over a suitable window? How long are performance spikes sustained? Do spikes last seconds or minutes? Is that tolerable?
I recommend at least 1-minute granularity over a 7- to 14-day period to capture episodic but impactful bursts. Many monitoring tools and cloud-native observability suites provide percentile-based metrics and histogram summaries to help here.
This approach changed the outcome of many pilots. We documented rollback criteria upfront based on spike duration and performance impact before experimenting with smaller instance types. That’s engineering discipline paying off.
Use Percentiles and Spike Duration, Not Averages
Why focus on percentiles and burst duration?
- Percentiles like P95/P99 reflect worst-case performance the application might see. Planning for them ensures SLAs hold. Average CPU can mask significant transient usage bursts. If you size instances based on averages, you risk under-provisioning and causing latency spikes or failures. Duration of spikes matters for user experience. Brief, very short CPU spikes may be acceptable; prolonged CPU saturation may degrade services.
In practical terms, analyze CPU usage histograms and spike durations, then size instances or scale workers accordingly.
Don’t Forget Included Transfer, Egress Costs, and Disk Pricing
When pricing shared CPU instances, it’s easy — and wrong — to only look at instance hourly cost. Network transfer and storage costs are frequently ignored or underestimated. But these can be a significant fraction of total monthly spend.


- Included Transfer: Providers often include a baseline amount of data transfer into or out of the instance at no extra charge (for example, AWS EC2 data transfer). Knowing your included transfer helps allocate transfer costs accurately when pricing shared CPU. Egress Costs: Outbound internet transfer can be expensive. An instance that bursts CPU but is associated with high egress usage should be cost-balanced appropriately. Disk Pricing: Different storage tiers, disk sizes, and IOPS requirements affect overall price pressure. Even for ephemeral root volumes, I/O-heavy workloads can inflate storage costs.
For example, two 2 vCPU instances might have similar baseline compute cost but wildly different transfer and storage bills depending on workload patterns. Ignoring this skews your pricing models and leads to poor decisions.
Leveraging AWS Compute Optimizer and Azure Advisor
Tools like AWS Compute Optimizer and Azure Advisor are invaluable but need to be used carefully.
AWS Compute Optimizer
This tool analyzes past utilization metrics (CPU, memory, disk I/O, network) and recommends instance sizes. However:
- It primarily considers average CPU utilization with optional percentile insights. It doesn’t fully factor in transfer cost differences or disk I/O cost variations. It treats CPU credits for burstable instances but still requires manual validation of spike durations.
Use Compute Optimizer as a starting point, then validate recommendations against high-percentile utilization and egress/storage costs.
Azure Advisor
Similarly, Azure Advisor offers cost and performance tuning advisories, including sizing recommendations for B-series VMs with shared CPU. Be aware that:
- Network egress and storage recommendations are separate analyses, so combine insights holistically. Percentile-based CPU analysis can be enabled but needs custom queries or integration with Azure Monitor logs. Shared CPU throttling behavior demands detailed burst and credit consumption investigation.
Putting It All Together — A Sample Pricing Process for Shared CPU Instances
Collect Data: Aggregate CPU usage at 1-minute intervals for 2+ weeks, including network ingress/egress and disk I/O metrics. Analyze Percentiles: Calculate P50, P95, and P99 CPU usage percentiles and record duration of sustained peaks above thresholds. Evaluate Transfer & Storage: Quantify included transfer and estimate overages; summarize disk usage and throughput tiers. Run Tool Recommendations: Import data into AWS Compute Optimizer or Azure Advisor for baseline sizing guides. Cross-Validate: Compare tool recommendations to percentile data and cost breakdowns. Investigate possible price regressions due to increased egress or disk costs. Define Rollback Criteria: Based on SLA impacts seen during spikes and tolerance for throttling or latency, document what performance degradation or increase in errors justifies rolling back to original sizing. Pilot Changes: Apply recommended instance sizing on a small subset of workloads, monitor P95/P99 metrics, egress bills, and disk I/O. Review and Optimize: After 1-2 weeks, assess performance against rollback criteria and finalize fleet adjustments accordingly.Conclusion
Properly pricing shared CPU cloud instances while accounting for differences in transfer and storage costs requires more than glancing at averages or sticker hourly rates. By understanding provider-specific CPU sharing mechanisms, focusing on high-percentile utilization and spike duration, and factoring in network and disk pricing, you can eliminate hidden cloud waste in always-on small services.
Leverage AWS Compute Optimizer and Azure Advisor as informative inputs — not unquestionable truths. Combine them with detailed observational data and cautious pilots with predefined rollback criteria. This approach yields both cost savings and predictable application performance.
If you ignore transfer egress or disk charges, or rely on average CPU metrics, you risk swapping one form of waste for another or introducing latency and outages. Cloud optimization is engineering — it demands measurement, skepticism, and iteration.
Start with detailed data, plan your pilots carefully, and keep an eye on P95/P99 — your future cloud bill will thank you.