Select Page

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