What Non-CPU Limits Should I Check Before Moving to Shared CPU?
In the quest to optimize cloud costs, moving workloads to shared CPU instance types often appears as a straightforward win. After all, shared CPU instances offer attractive pricing compared to dedicated vCPU-based instances. However, focusing solely on CPU allocation misses critical constraints that can doom your migration effort or end up increasing costs elsewhere. In this post, we'll walk through the key non-CPU resource limits you should evaluate before switching to shared CPU instances, drawing insights from AWS Compute Optimizer and Azure Advisor. We'll also clarify why averages don’t cut it — you need to analyze P95/P99 utilization with a suitable observation window and pay close attention to disk I/O limits, memory constraints, and network throughput.
Why Non-CPU Limits Matter When Considering Shared CPU
Shared CPU instances typically offer lower baseline CPU allocations and use burstable CPU credits or other mechanisms to provide performance bursts. However, these instances come with other resource limits that, if overlooked, can cause performance degradation or unexpected costs:
- Disk I/O limits: Throughput or IOPS capped due to instance size or type
- Memory constraints: Limited RAM can cause swapping and latency spikes
- Network throughput: Bandwidth and packet rate caps tied to instance class
Because these resources share physical host limitations, your workloads may hit bottlenecks unrelated to CPU usage. Understanding these is crucial before migration.
Shared CPU Definitions Differ By Cloud Provider
Before diving into non-CPU metrics, it's important to understand that "shared CPU" means different things in AWS and Azure:
Provider Shared CPU Instance Concept How CPU Bursting Works AWS T-series burstable instances (e.g., t3, t4g) Instances earn CPU credits during idle time and spend them during bursts. Base CPU performance guaranteed as a fraction of a full CPU. Azure B-series burstable VMs (e.g., B1s, B2s) Similar credit model but with different credit accumulation and spend rules. Azure introduces the concept of “CPU bursting windows.”Understanding these behaviors is the foundation for analyzing resource limits beyond just CPU since the burst model can significantly impact resource consumption patterns.
Always-On Small Services Hide Cloud Waste
Small services that run 24/7 on always-on dedicated instances often represent hidden waste hotspots. These workloads usually don’t need large dedicated CPU quotas but still consume memory, disk, and network resources continuously.
Moving such workloads to shared CPU can theoretically save costs — but only if you verify that their resource usage beyond CPU fits the more constrained envelope of a burstable/shared CPU instance. Otherwise, you risk:
- Unexpected I/O throttling leading to timeouts or slowdowns
- Memory pressure causing swapping, killing performance
- Network saturation impacting both your application and co-tenant workloads
Proactively measuring these metrics with appropriate tools is critical to root out waste while ensuring reliable performance.
Measuring Peaks With the Right Observation Window
A common mistake is basing sizing decisions on average CPU or other resource metrics. Since shared CPU instances handle bursts, you need to analyze the peaks and burst durations — represented by higher percentile metrics such as P95 or P99.
- Choose your window carefully: Workload bursts may be seconds, minutes, or hours long. If you average over a day, you’ll lose the detail of those peaks.
- Look at spike duration: A few short high spikes may be acceptable if burst credits are sufficient. But sustained high utilization beyond available credits will degrade performance.
Therefore, before migration:
- Use fine-grained monitoring data (1-minute or 5-minute intervals)
- Calculate P95 and P99 resource usage stats over several weeks to capture workload variations
- Assess burst credit accrual and spend models against your observed usage
Using AWS Compute Optimizer & Azure Advisor To Spot Constraints
Both AWS and Azure provide tools to help you analyze current resource usage and get sizing recommendations:

AWS Compute Optimizer
AWS Compute Optimizer uses utilization metrics from CloudWatch to recommend instance types based on CPU, memory, disk, and network usage. It provides:
- Left-sizing guidance to avoid wasted CPU or memory resources
- Identification of I/O bottlenecks linked to current instance storage throughput
- Network bandwidth usage patterns to recommend optimized instances
Compute Optimizer does not simply recommend switching to burstable/shared CPU but provides insights into which workloads might be good fits based on your workload's peak resource usage percentiles.
Azure Advisor
Azure Advisor performs similar analyses for your Azure VMs. Key features relevant for burstable/shared CPU decisions include:
- Recommendations on right-sizing VMs based on CPU, disk, and memory usage peaks
- Alerts for VMs approaching throttling limits such as disk IOPS caps
- Network bandwidth and latency usage, facilitating bandwidth planning
Azure Advisor also suggests when burstable VM classes are appropriate, emphasizing the need to review the duration and frequency of CPU burst requirements.
Key Non-CPU Limits to Evaluate
1. Disk I/O Limits
Shared CPU instances often come with fixed disk IOPS computingforgeeks.com or throughput limits that can quickly become the primary bottleneck. Key considerations:
- Measure Disk IOPS and Throughput: Check your workload's P95 and P99 disk read/write rates and IOPS with monitoring tools.
- Compare Against Limits: AWS T-series or Azure B-series instance disk limits vary by instance size and underlying EBS or managed disk types.
- Observe Burst Duration: Instances may burst IOPS for short windows but throttle sustained high usage.
Underprovisioned disk performance often leads to queueing delays and timeouts that contribute to service latency.
2. Memory Constraints
One subtle complexity is that burstable/shared CPU instances generally offer less memory relative to dedicated CPUs. Memory pressure can cause:
- Swapping to disk, killing performance noticeably
- OOM kills or service restarts for memory-intensive applications
- Unpredictable latency spikes
Don’t just look at average memory usage; observe peak consumption patterns with percentiles and consider workload memory growth during traffic spikes or batch jobs.
3. Network Throughput
Network bandwidth and packet rate constraints impact data-heavy applications, microservice communication, and external service calls. When assessing network capabilities:
- Use fine-grained metrics to gauge P95 and P99 throughput, not just averages
- Understand instance-type limits on network bandwidth, which may throttle when exceeded
- Factor in both egress and ingress traffic, since provider limits often differ
Network saturation not only hurts your service but can trigger noisy neighbor problems in shared environments, affecting SLOs.
Summary: Step-by-Step Checklist Before Moving to Shared CPU
- Analyze P95/P99 CPU, Memory, Disk, and Network metrics across a suitable time window. Load data into dashboards or use Compute Optimizer/Azure Advisor insights.
- Map workload peak resource demands against shared CPU instance limits. Include burst credit models and burst durations.
- Verify disk IOPS and throughput requirements can be met without throttling. Choose appropriate disk types or consider instance sizes accordingly.
- Confirm memory headroom for peak working sets, considering usage spikes. Watch out for swapping or OOM events in historical logs.
- Check that network throughput capacity aligns with your peak traffic patterns. Review both egress and ingress metrics.
- Consult AWS Compute Optimizer or Azure Advisor for right-sizing recommendations. Use their insights to adjust instance types or disk configurations.
- Plan rollback criteria before migration. Define performance and error thresholds based on baseline metrics (P95 latency, error rates) to detect regressions.
Wrapping Up
Moving always-on small services to shared CPU instances is a promising way to reduce cloud costs, but only if you comprehensively understand non-CPU resource limitations. Disk I/O limits, memory constraints, and network throughput caps can silently erode performance and cost savings if ignored. Monitoring with the right percentile-based metrics over appropriate windows — complemented by tools like AWS Compute Optimizer and Azure Advisor — is key to making safe and effective migration decisions. Always formulate rollback plans and test with pilots focusing on these non-CPU constraints to avoid surprises.
Stop treating vCPU counts as the sole indicator of workload fit; peek under the hood and you’ll uncover actionable insights that save money while maintaining reliability.
