When working with AWS EBS volumes and RDS instances, two critical performance metrics often cause confusion: BurstBalance
and EBSIOBalance%
. While both relate to I/O credit systems, they serve distinct purposes in AWS's architecture.
The BurstBalance
metric applies specifically to General Purpose SSD (gp2) volumes and represents:
// Example CloudWatch query for BurstBalance
aws cloudwatch get-metric-statistics \
--namespace AWS/EBS \
--metric-name BurstBalance \
--dimensions Name=VolumeId,Value=vol-1234567890abcdef0 \
--statistics Average \
--period 300 \
--start-time 2023-01-01T00:00:00Z \
--end-time 2023-01-01T23:59:59Z
In contrast, EBSIOBalance%
is RDS-specific and functions differently:
# Python boto3 example to monitor EBSIOBalance%
import boto3
client = boto3.client('cloudwatch')
response = client.get_metric_statistics(
Namespace='AWS/RDS',
MetricName='EBSIOBalance',
Dimensions=[{'Name':'DBInstanceIdentifier','Value':'your-db-instance'}],
StartTime=datetime.utcnow() - timedelta(minutes=30),
EndTime=datetime.utcnow(),
Period=60,
Statistics=['Average']
)
Characteristic | BurstBalance | EBSIOBalance% |
---|---|---|
Service Scope | EBS gp2 volumes | RDS instances |
Measurement | Percentage of burst bucket credits | Percentage of I/O credits |
Monitoring Level | Detailed monitoring | Basic monitoring only |
Credit Replenishment | Linear (3 credits per GB per hour) | RDS-specific algorithm |
Consider these scenarios when working with both metrics:
- Scaling Decisions: A low
BurstBalance
suggests moving to gp3 or increasing volume size, while lowEBSIOBalance%
may indicate need for RDS instance upgrade - Performance Tuning:
# Example CloudWatch alarm for low EBSIOBalance% aws cloudwatch put-metric-alarm \ --alarm-name "RDS-Low-IO-Credits" \ --metric-name EBSIOBalance \ --namespace AWS/RDS \ --statistic Average \ --period 300 \ --threshold 20 \ --comparison-operator LessThanThreshold \ --dimensions Name=DBInstanceIdentifier,Value=your-db-instance \ --evaluation-periods 2 \ --alarm-actions arn:aws:sns:us-east-1:123456789012:my-alert-topic
Implement these strategies for effective monitoring:
- Create composite alarms combining both metrics for storage-intensive applications
- Set different thresholds based on workload patterns (development vs production)
- Consider using CloudWatch Anomaly Detection for irregular patterns:
// Example anomaly detection model { "Namespace": "AWS/RDS", "MetricName": "EBSIOBalance", "Dimensions": [ {"Name": "DBInstanceIdentifier"} ], "Stat": "Average" }
When working with AWS EBS volumes and RDS instances, two crucial performance metrics often cause confusion: BurstBalance
and EBSIOBalance%
. While both relate to I/O credit systems, they serve different purposes in AWS's architecture.
The BurstBalance
metric applies specifically to General Purpose SSD (gp2) volumes. It represents the percentage of available burst-bucket I/O credits remaining for the volume. GP2 volumes accumulate credits when operating below their baseline performance level and consume them during bursts.
aws cloudwatch get-metric-statistics \
--namespace AWS/EBS \
--metric-name BurstBalance \
--dimensions Name=VolumeId,Value=vol-1234567890abcdef0 \
--statistics Average \
--period 3600 \
--start-time 2023-01-01T00:00:00 \
--end-time 2023-01-02T00:00:00
The EBSIOBalance%
metric is specific to RDS instances using EBS storage. It shows the percentage of I/O credits remaining in the burst bucket for your database instance. This metric is only available with basic monitoring.
aws cloudwatch get-metric-statistics \
--namespace AWS/RDS \
--metric-name EBSIOBalance \
--dimensions Name=DBInstanceIdentifier,Value=mydbinstance \
--statistics Average \
--period 3600 \
--start-time 2023-01-01T00:00:00 \
--end-time 2023-01-02T00:00:00
- Scope: BurstBalance is for EBS volumes, EBSIOBalance% is for RDS instances
- Monitoring Level: EBSIOBalance% is basic monitoring only, BurstBalance is available in both basic and detailed monitoring
- Underlying Mechanism: While both use credit systems, they track different resource allocations
- Threshold Behavior: The consequences of exhausting credits differ between the two systems
When BurstBalance
drops below 20%, gp2 volumes lose their burst capability and throttle to baseline performance. For RDS, when EBSIOBalance%
approaches zero, database performance may degrade significantly until credits are replenished.
For comprehensive monitoring, consider setting up CloudWatch alarms for both metrics:
# Example CloudFormation snippet for BurstBalance alarm
Resources:
GP2BurstAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmDescription: "Alarm when GP2 burst balance drops below 30%"
Namespace: "AWS/EBS"
MetricName: "BurstBalance"
Dimensions:
- Name: VolumeId
Value: "vol-1234567890abcdef0"
ComparisonOperator: "LessThanThreshold"
Threshold: 30
EvaluationPeriods: 1
Period: 300
Statistic: "Average"