Skip to content

IOPS in AWS Explained: Optimizing EBS Performance & Costs

Ever wondered why your AWS storage performance varies or what those IOPS numbers actually mean for your applications? Understanding IOPS (Input/Output Operations Per Second) is crucial for balancing AWS performance and costs—especially when every millisecond of latency or unnecessary dollar spent impacts your bottom line.

What Are IOPS in AWS?

IOPS measures how many read and write operations your storage can handle each second. Unlike throughput (which measures data volume in MB/s) or latency (which measures response time in milliseconds), IOPS quantifies your storage’s transactional capacity.

Blackboard diagram showing IOPS (ops/sec), Throughput (MB/s), and Latency (ms) as distinct metrics

In AWS, IOPS is particularly important for Amazon Elastic Block Store (EBS) volumes, where it directly impacts:

  • Database transaction speeds
  • Application responsiveness
  • Overall workload performance
  • Your monthly AWS bill

EBS Volume Types and Their IOPS Capabilities

Amazon offers several EBS volume types with different IOPS characteristics:

General Purpose SSD (gp3)

  • Baseline: 3,000 IOPS regardless of volume size
  • Maximum: Up to 16,000 IOPS (can be provisioned independently)
  • Key advantage: No burst credits to manage, predictable performance
  • Best for: Most workloads including development, test environments, and moderate database workloads

General Purpose SSD (gp2)

  • Baseline: 3 IOPS per GB with minimum 100 IOPS
  • Maximum: 16,000 IOPS
  • Bursting: Volumes under 1TB can burst to 3,000 IOPS using a credit system
  • Best for: Boot volumes and non-production workloads, though gp3 is now recommended for most cases

Provisioned IOPS SSD (io1)

  • Range: Up to 64,000 IOPS per volume
  • Ratio: Up to 50 IOPS per GB
  • Best for: I/O-intensive database workloads requiring consistent performance

Provisioned IOPS SSD (io2)

  • Range: Up to 64,000 IOPS per volume
  • Ratio: Up to 500 IOPS per GB
  • Durability: 99.999%
  • Best for: Critical applications requiring high durability and consistent performance

io2 Block Express

  • Range: Up to 256,000 IOPS per volume
  • Latency: Sub-millisecond
  • Best for: The most demanding, latency-sensitive workloads

Throughput Optimized HDD (st1)

  • Baseline: 40 IOPS per TB
  • Focus: Designed for sequential workloads rather than random IOPS
  • Best for: Big data, data warehousing, log processing

Cold HDD (sc1)

  • Baseline: 12 IOPS per TB
  • Cost: Lowest-cost option
  • Best for: Infrequently accessed data requiring fewer IOPS

What Is a “Good” IOPS Number?

A “good” IOPS value depends entirely on your workload:

  • OLTP databases: Generally need 1,000-10,000 IOPS for moderate workloads and 10,000-50,000 IOPS for high-transaction environments
  • NoSQL databases: Cassandra clusters typically require 3,000-15,000 IOPS per node
  • Boot volumes: Usually perform well with 100-500 IOPS
  • Analytics workloads: Often emphasize throughput over IOPS, typically needing 100-1,000 IOPS with large block sizes

When someone asks “how fast is 1000 IOPS?” the answer depends on the workload and I/O pattern. For a boot volume or light application server, 1,000 IOPS is usually sufficient. For a busy database, it might be inadequate.

AWS IOPS Limits to Know

AWS imposes several limits that affect maximum achievable IOPS:

  • Per volume limits: Maximum IOPS varies by volume type (up to 256,000 for io2 Block Express)
  • Per instance limits: Smaller instances typically support 3,000-12,000 aggregate IOPS while larger Nitro instances can handle 80,000+ IOPS
  • Queue depth: Linux kernel typically limits queue depth to 32 per device by default

When you hit these limits, you’ll see increased VolumeQueueLength in CloudWatch metrics and higher latency.

How to Measure and Validate IOPS

To accurately measure your actual IOPS performance, use these approaches:

Using CloudWatch

Monitor these metrics:

  • VolumeReadOps and VolumeWriteOps (total operations)
  • VolumeQueueLength (pending operations)
  • VolumeTotalReadTime/VolumeTotalWriteTime (for latency calculation)

Using fio for Benchmarking

For random read testing:

Terminal window
fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --time_based --group_reporting

For random write testing:

Terminal window
fio --name=randwrite --ioengine=libaio --iodepth=16 --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --time_based --group_reporting

Using iostat

Terminal window
iostat -x 1

This displays real-time IOPS in the r/s and w/s columns, with %util showing device utilization percentage.

Optimizing IOPS: Performance vs. Cost

Balancing IOPS performance against costs requires strategic decisions:

1. Choose the Right Volume Type

Migrating from gp2 to gp3 typically reduces storage costs by approximately 20% per GiB while providing consistent baseline performance.

Blackboard diagram comparing gp2 burst credits with gp3 fixed 3,000 IOPS baseline

As Hykell’s EBS performance guide explains, gp3 eliminates the unpredictable burst credit system of gp2, offering fixed baselines with independent IOPS and throughput provisioning.

2. Right-size Your Provisioned IOPS

Avoid overprovisioning by measuring your actual IOPS requirements. Many workloads don’t need the maximum available IOPS, and paying for unused performance is wasteful.

3. Consider RAID0 for Higher IOPS

Multiple EBS volumes in software RAID0 can exceed single-volume IOPS limits but requires careful consideration of failure domains and backup strategies.

4. Use EBS-Optimized Instances

Enable dedicated bandwidth for EBS traffic, preventing network traffic from interfering with storage performance.

5. Tune Your Application I/O Patterns

Optimize your application’s I/O patterns by:

  • Batching small reads/writes
  • Using appropriate block sizes
  • Implementing effective caching strategies

Cost-Performance Tradeoffs

Consider these key tradeoff points:

  1. gp3 vs. io2: gp3 is more cost-effective for most workloads, but io2 provides better performance guarantees for critical applications

  2. Provisioned IOPS vs. baseline performance: Only provision extra IOPS when your workload consistently requires it

  3. Storage size vs. performance: With gp2, larger volumes automatically get more IOPS (3 IOPS/GB), but with gp3, you can optimize size and performance independently

  4. Instance type impact: Larger, newer instance types generally provide better EBS performance at higher costs

Automating IOPS Optimization with Hykell

Manual IOPS optimization can be time-consuming and complex. Hykell provides automated EBS optimization that:

  1. Continuously monitors your actual IOPS usage patterns
  2. Identifies optimal volume types based on workload patterns
  3. Recommends right-sizing for both storage capacity and IOPS
  4. Automates migration from gp2 to gp3 volumes where beneficial
  5. Dynamically adjusts provisioned IOPS to match changing workloads

This approach typically yields 30-50% cost savings on EBS while maintaining or improving performance, as part of Hykell’s broader AWS cost management best practices.

Common EBS IOPS Scenarios and Solutions

ScenarioProblemSolution
Database performance issuesInsufficient IOPS for transaction volumeUpgrade to io2 or increase provisioned IOPS on gp3
Cost concerns with overprovisioned IOPSPaying for unused performanceSwitch to gp3 and right-size IOPS based on actual usage
Inconsistent performance with gp2Burst credit depletion causing performance dropsMigrate to gp3 for consistent baseline performance
Hitting instance IOPS limitsTotal volume IOPS exceeds instance capabilityUpgrade instance type or distribute workload across multiple instances

Balancing Performance and Cost

Effective IOPS management in AWS requires understanding your workload requirements, choosing appropriate EBS volume types, and continuously monitoring and adjusting your configuration. By right-sizing your IOPS provisioning and selecting cost-effective volume types, you can significantly reduce your AWS EBS latency while maintaining performance.

For most organizations, the complexity of manual optimization makes automated solutions like Hykell valuable for maintaining this balance. With proper IOPS management, you can ensure your AWS infrastructure delivers the performance you need at the lowest possible cost.

Looking to optimize your AWS infrastructure beyond just EBS? Compare AWS vs. Azure performance or learn about the AWS Enterprise Discount Program for additional savings opportunities.