EBS Performance Essentials
- EBS uses IOPS (I/O operations per second) as a performance measure
- IOPS – measured in 256 KiB (Kibibytes) chunks of I/O operations for SSDs
- SSDs deliver constant performance for both random and sequential I/O operations
- 4,000 IOPS can transfer 4,000 256KiB chunks per second
- 5 I/O operations at 54KiB will count as 5 operations
- IOPS – measured in 1,024 KiB (Kibibytes) chunks of I/O operations for HDDs
- HDDs have optimal performance with large and sequential I/O operations
- 8 sequential 128KiB operations will count as 1 operation
- 8 random 128KiB operations will count as 8 operations
EBS Performance
SSD-backed volumes
- Two different types of SSD volumes: io1 and gp2
- gp2 – General Purpose (default)
- Baseline performance of 3 IOPS per GB up to 10,000 IOPS
- Minimum of 100 IOPS (ie: 8 GB volume has 100 IOPS instead of 24)
- The larger the volume, the more IOPS
- Can burst up to 3,000 IOPS if the size is under 1 TB
- Up to 160 MiB/s of throughput
General Purpose SSD Credits
- Credits represent how much available bandwidth a volume can use to burst I/O operations
- Volumes get credits at the rate of 3 IOPS per GiB of volume size per second
- Volumes start out with their maximum amount of 5.4 million I/O credits
- Running out of credits causes the volume to revert back to baseline IOPS performance, and it also changes the throughput limit
SSD-backed volumes
- io1 – Provisioned IOPS
- Ideal for IOPS-intensive and throughput intensive workloads (like databases)
- Baseline performance of 30 IOPS per GB up to 20,000 IOPS
- Does not use credits to burst above baseline performance, instead, it gives a consistent IOPS rate
- Delivers within 10 percent of provisioned IOPS performance 99.9 percent of the time in a given year
- Up to 320 MiB/s of throughput
HDD-backed volumes
- Throughput Optimized HDD (st1) and Cold HDD (sc1)
- Can sometimes provide more throughput (MB/s) but drastically less IOPS
- Throughput Optimized HDD (st1)
- Ideal for frequently accessed and throughput intensive workloads
- Cold HDD (sc1)
- Less frequently accessed workloads
- Lowest cost HDD volume
Pre-warming / initialization
- Initialization (previously named pre-warming) is no longer needed for new EBS volumes
- EBS volumes get maximum performance right away
- Storage blocks on volumes restored from snapshots do need to be initialized
- Initialization can be accomplished by reading from all blocks on a volume with dd or fio utilities
- Examples:
- sudo dd if=/dev/xvdf of=/dev/null bs=1M
EBS Monitoring
GetMetricStatistics
- VolumeReadBytes & VolumeWriteBytes
- The sum statistic reports the total number of bytes transferred
- Average is also useful to see the average size of each I/O operation
- VolumeReadOps & VolumeWriteOps
- Represents the total number of I/O operations
- You can calculate the average I/O operations per second (IOPS) for a period by dividing the total operations by the number of seconds in that period
- VolumeTotalReadTime & VolumeTotalWriteTime
- The total number of seconds spent by all operations in a given time period
- A steady increase in these numbers could indicate the need to increase volume size or increase the number of provisioned IOPS
- VolumeQueueLength
- Number of read/write operation requests waiting to finish
Provisioned IOPS Metrics
- VolumeThroughputPercentage
- The percentage of I/O operations per second that we achieved out of the total provisioned IOPS for our EBS volume
- VolumeConsumedReadWriteOps
- The total amount of read and write operations consumed within a specific time period
EBS Status Checks
- Status checks run every 5 minutes to determine the status of a volume
- If all checks pass, the status is ok
- If a check fails, the status is impaired
- If the checks are running, the status is insufficient-data
- When Amazon EBS finds that data might be inconsistent on a volume it disables I/O to that volume (by default)
- This helps prevent data corruption
- It causes a volume status to be impaired which can alert you