AWS EBS Performance Tips
- EBS Performance depends on several factors including I/O characteristics, instances and volumes configuration and can be improved using Provisioned IOPS (io2 Block Express), EBS-Optimized instances, proper volume type selection, and RAID configuration.
📢 Key Updates (2025-2026)
- gp3 volumes enhanced (Sept 2025) – Now support up to 64 TiB size (4x increase), 80,000 IOPS (5x increase), and 2,000 MiB/s throughput (2x increase).
- io2 Block Express – Delivers up to 256,000 IOPS, 4,000 MB/s throughput, 64 TiB capacity with sub-millisecond latency and 99.999% durability.
- Instance Bandwidth Weighting – New feature allows shifting up to 25% of network bandwidth to EBS for I/O-intensive workloads.
- io1 → io2 migration recommended – AWS recommends upgrading io1 to io2 for better performance and durability at the same cost.
- gp2 → gp3 migration recommended – gp3 offers 20% lower cost with better baseline performance (3,000 IOPS, 125 MiB/s).
- RAID 0 less necessary – With gp3’s increased limits (80,000 IOPS per volume), many workloads no longer require multi-volume striping.
EBS Volume Type Selection for Performance
- Selecting the right volume type is the most impactful decision for EBS performance.
- gp3 (General Purpose SSD) – Recommended default for most workloads.
- Baseline: 3,000 IOPS and 125 MiB/s at any volume size (no burst credits needed)
- Max: 80,000 IOPS and 2,000 MiB/s throughput
- Size: up to 64 TiB
- Performance is provisioned independently of storage capacity
- 20% lower cost per GB than gp2
- io2 Block Express (Provisioned IOPS SSD) – For mission-critical, latency-sensitive workloads.
- Max: 256,000 IOPS, 4,000 MB/s throughput, 64 TiB capacity
- Sub-millisecond latency (avg. under 500 microseconds)
- 99.999% durability (vs 99.8-99.9% for gp3)
- Up to 1,000 IOPS per GiB ratio
- Multi-Attach support (up to 16 instances simultaneously)
- Available on all Nitro-based EC2 instances
- gp2 (Previous Generation General Purpose SSD) – Still available but migration to gp3 is recommended.
- Max: 16,000 IOPS, 250 MB/s throughput, 16 TiB
- IOPS scales with volume size at 3 IOPS/GiB
- Burst credit model for volumes under 1 TiB
- io1 (Previous Generation Provisioned IOPS SSD) – Migration to io2 Block Express is recommended.
- Max: 64,000 IOPS, 1,000 MB/s throughput, 16 TiB
- 50 IOPS per GiB ratio
- 99.8-99.9% durability
EBS-Optimized or 10 Gigabit Network Instances
- An EBS-Optimized instance uses an optimized configuration stack and provides additional, dedicated capacity for EBS I/O.
- Optimization provides the best performance for the EBS volumes by minimizing contention between EBS I/O and other traffic from an instance.
- EBS-Optimized instances deliver dedicated throughput to EBS depending on the instance type used.
- All current-generation EC2 instance types are EBS-optimized by default at no additional cost.
- Some previous-generation instance types support EBS-optimization as an optional feature with an additional hourly fee.
- When attached to an EBS–optimized instance,
- General Purpose (gp3) volumes are designed to deliver within 10% of their provisioned performance 99% of the time in a given year.
- Provisioned IOPS (io2 Block Express) volumes are designed to deliver within 10% of their provisioned performance 99.9% of the time in a given year.
- The maximum EBS throughput varies by instance type – for example, latest generation instances like C8gd/M8gd/R8gd provide up to 40 Gbps of EBS bandwidth.
Instance Bandwidth Weighting
- EC2 instances on select Nitro-based instance types support configurable bandwidth weighting between EBS and VPC networking.
- Using the
ebs-1bandwidth weighting option increases EBS bandwidth by up to 25%, which reduces VPC network bandwidth by the same amount. - This is beneficial for I/O-intensive workloads that require higher EBS throughput but have lower network requirements.
- The total available baseline bandwidth for the instance remains the same; it only shifts the allocation.
- Network PPS and EBS IOPS specifications are unaffected by bandwidth weighting changes.
- Can be configured at launch time using launch templates or modified on running instances.
EBS Volume Initialization – Pre-warming
- Empty EBS volumes receive their maximum performance the moment that they are available and DO NOT require initialization (pre-warming).
- EBS volumes needed a pre-warming, previously, before being used to get maximum performance to start with. Pre-warming of the volume was possible by writing to the entire volume with 0 for new volumes or reading the entire volume for volumes from snapshots.
- Storage blocks on volumes that were restored from snapshots must be initialized (pulled down from S3 and written to the volume) before the block can be accessed.
- This preliminary action takes time and can cause a significant increase in the latency of an I/O operation the first time each block is accessed.
- To avoid this initial performance hit in a production environment, the following options can be used:
- Force the immediate initialization of the entire volume by using the
ddorfioutilities to read from all of the blocks on a volume. - Enable Fast Snapshot Restore (FSR) on a snapshot to ensure that the EBS volumes created from it are fully-initialized at creation and instantly deliver all of their provisioned performance.
- Force the immediate initialization of the entire volume by using the
- Fast Snapshot Restore (FSR) considerations:
- FSR eliminates the latency of I/O operations on first access of snapshot-restored volumes.
- Available in all commercial AWS regions (expanded to 6 additional regions in August 2024).
- Not supported with AWS Outposts, Local Zones, and Wavelength Zones.
- FSR is charged per AZ per hour per snapshot enabled, so cost should be considered.
Elastic Volumes
- Elastic Volumes allows modifying EBS volume size, type, IOPS, and throughput without detaching the volume or stopping the instance.
- Supported on all current-generation instances and several previous-generation instances (C1, C3, C4, G2, I2, M1, M3, M4, R3, R4).
- Modifications include:
- Increasing volume size (cannot decrease)
- Changing volume type (e.g., gp2 → gp3, io1 → io2)
- Adjusting provisioned IOPS and throughput (gp3, io1, io2)
- Size increases take effect once the modification reaches the “optimizing” state (usually seconds).
- The file system must be extended within the OS after a size increase.
- A volume can only be modified once every 6 hours.
RAID Configuration
- EBS volumes can be striped, if a single EBS volume does not meet the performance requirements.
- Note: With gp3 volumes now supporting up to 80,000 IOPS and 2,000 MiB/s per volume, many workloads that previously required RAID 0 can now use a single volume, improving resiliency.
- Striping volumes allows pushing tens of thousands of IOPS beyond single-volume limits.
- EBS volumes are already replicated across multiple servers in an AZ for availability and durability, so AWS generally recommends striping for performance rather than durability.
- For greater I/O performance than can be achieved with a single volume, RAID 0 can stripe multiple volumes together; for on-instance redundancy, RAID 1 can mirror two volumes together.
- RAID 0 allows I/O distribution across all volumes in a stripe, allowing straight gains with each addition.
- RAID 1 can be used for durability to mirror volumes, but in this case, it requires more EC2 to EBS bandwidth as the data is written to multiple volumes simultaneously and should be used with EBS–optimization.
- EBS volume data is replicated across multiple servers in an AZ to prevent the loss of data from the failure of any single component.
- AWS doesn’t recommend RAID 5 and 6 because the parity write operations of these modes consume the IOPS available for the volumes and can result in 20-30% fewer usable IOPS than RAID 0.
- A 2-volume RAID 0 config can outperform a 4-volume RAID 6 that costs twice as much.
- Durability consideration: Each additional volume in a RAID 0 stripe reduces effective durability (e.g., 4 gp3 volumes in RAID 0 = ~99.6% effective durability vs. 99.9% for a single volume). With increased gp3 limits, fewer volumes are needed for the same performance.

EBS Performance Best Practices Summary
- Use gp3 as the default volume type – provides better baseline performance than gp2 at 20% lower cost.
- Use io2 Block Express for critical databases – sub-millisecond latency, 99.999% durability, up to 256K IOPS.
- Right-size your instance – ensure the instance’s EBS bandwidth limit is not the bottleneck (use CloudWatch EBSIOBalance% and EBSByteBalance% metrics).
- Use EBS bandwidth weighting for I/O-intensive workloads with lower network needs.
- Prefer single larger volumes over RAID 0 when gp3 limits (80,000 IOPS, 2,000 MiB/s) are sufficient – simpler and more durable.
- Enable Fast Snapshot Restore for production volumes restored from snapshots to avoid first-access latency.
- Monitor with CloudWatch – track VolumeReadOps, VolumeWriteOps, VolumeQueueLength, and BurstBalance (gp2) metrics.
- Migrate legacy volumes – upgrade gp2 → gp3 and io1 → io2 using Elastic Volumes (no downtime required).
AWS Certification Exam Practice Questions
- Questions are collected from Internet and the answers are marked as per my knowledge and understanding (which might differ with yours).
- AWS services are updated everyday and both the answers and questions might be outdated soon, so research accordingly.
- AWS exam questions are not updated to keep up the pace with AWS updates, so even if the underlying feature has changed the question might not be updated
- Open to further feedback, discussion and correction.
- A user is trying to pre-warm a blank EBS volume attached to a Linux instance. Which of the below mentioned steps should be performed by the user?
- There is no need to pre-warm an EBS volume (with latest update no pre-warming is needed)
- Contact AWS support to pre-warm (This used to be the case before, but pre warming is not necessary now)
- Unmount the volume before pre-warming
- Format the device
- A user has created an EBS volume of 10 GB and attached it to a running instance. The user is trying to access EBS for first time. Which of the below mentioned options is the correct statement with respect to a first time EBS access?
- The volume will show a size of 8 GB
- The volume will show a loss of the IOPS performance the first time (the volume needed to be wiped cleaned before for new volumes, however pre warming is not needed any more)
- The volume will be blank
- If the EBS is mounted it will ask the user to create a file system
- You are running a database on an EC2 instance, with the data stored on Elastic Block Store (EBS) for persistence At times throughout the day, you are seeing large variance in the response times of the database queries Looking into the instance with the isolate command you see a lot of wait time on the disk volume that the database’s data is stored on. What two ways can you improve the performance of the database’s storage while maintaining the current persistence of the data? Choose 2 answers
- Move to an SSD backed instance
- Move the database to an EBS-Optimized Instance
- Use Provisioned IOPs EBS
- Use the ephemeral storage on an m2.4xLarge Instance Instead
- You have launched an EC2 instance with four (4) 500 GB EBS Provisioned IOPS volumes attached. The EC2 Instance is EBS-Optimized and supports 500 Mbps throughput between EC2 and EBS. The two EBS volumes are configured as a single RAID 0 device, and each Provisioned IOPS volume is provisioned with 4,000 IOPS (4000 16KB reads or writes) for a total of 16,000 random IOPS on the instance. The EC2 Instance initially delivers the expected 16,000 IOPS random read and write performance. Sometime later in order to increase the total random I/O performance of the instance, you add an additional two 500 GB EBS Provisioned IOPS volumes to the RAID. Each volume is provisioned to 4,000 IOPS like the original four for a total of 24,000 IOPS on the EC2 instance Monitoring shows that the EC2 instance CPU utilization increased from 50% to 70%, but the total random IOPS measured at the instance level does not increase at all. What is the problem and a valid solution?
- Larger storage volumes support higher Provisioned IOPS rates: increase the provisioned volume storage of each of the 6 EBS volumes to 1TB.
- EBS-Optimized throughput limits the total IOPS that can be utilized use an EBS-Optimized instance that provides larger throughput. (EC2 Instance types have limit on max throughput and would require larger instance types to provide 24000 IOPS)
- Small block sizes cause performance degradation, limiting the I’O throughput, configure the instance device driver and file system to use 64KB blocks to increase throughput.
- RAID 0 only scales linearly to about 4 devices, use RAID 0 with 4 EBS Provisioned IOPS volumes but increase each Provisioned IOPS EBS volume to 6.000 IOPS.
- The standard EBS instance root volume limits the total IOPS rate, change the instant root volume to also be a 500GB 4,000 Provisioned IOPS volume
- A user has deployed an application on an EBS backed EC2 instance. For a better performance of application, it requires dedicated EC2 to EBS traffic. How can the user achieve this?
- Launch the EC2 instance as EBS provisioned with PIOPS EBS
- Launch the EC2 instance as EBS enhanced with PIOPS EBS
- Launch the EC2 instance as EBS dedicated with PIOPS EBS
- Launch the EC2 instance as EBS optimized with PIOPS EBS
- A company is running an I/O-intensive database on a gp2 EBS volume and experiencing inconsistent performance. The DBA wants to achieve consistent 50,000 IOPS with the lowest cost. Which approach should they use?
- Use multiple gp2 volumes in RAID 0 configuration
- Migrate to a single gp3 volume and provision 50,000 IOPS
- Use an io2 Block Express volume with 50,000 provisioned IOPS
- Use multiple gp3 volumes in RAID 0 to aggregate IOPS
(gp3 now supports up to 80,000 IOPS per volume at a lower cost than io2. For 50,000 IOPS without needing 99.999% durability, gp3 is the most cost-effective choice.)
- An application requires 256,000 IOPS with sub-millisecond latency for a critical Oracle database. Which EBS configuration provides the required performance?
- Four gp3 volumes with 64,000 IOPS each in RAID 0
- Multiple io1 volumes in RAID 0 configuration
- A single io2 Block Express volume with 256,000 provisioned IOPS on a Nitro-based instance
- Eight gp3 volumes with 32,000 IOPS each in RAID 0
(io2 Block Express supports up to 256,000 IOPS per volume with sub-millisecond latency. A single volume approach is simpler and provides higher durability (99.999%) than RAID configurations.)
- A team has restored an EBS volume from a snapshot and needs to serve production traffic immediately with full provisioned IOPS. What should they do?
- Pre-warm the volume by reading all blocks using the dd utility
- Wait for 24 hours for background initialization to complete
- Enable Fast Snapshot Restore (FSR) on the snapshot before creating the volume
- Attach the volume to an EBS-optimized instance to speed up initialization
(Fast Snapshot Restore ensures volumes created from the snapshot are fully initialized at creation, eliminating first-access latency. This must be enabled before creating the volume.)
- An EC2 instance is running an I/O-heavy analytics workload with low network traffic requirements. The team wants to maximize EBS throughput without changing the instance type. What feature can help?
- Enable Enhanced Networking on the instance
- Configure the instance with ebs-1 bandwidth weighting to increase EBS bandwidth by 25%
- Enable placement groups for the instance
- Attach additional network interfaces to the instance
(Instance bandwidth weighting allows reallocating up to 25% of VPC network bandwidth to EBS, beneficial for workloads with high I/O but low networking needs.)
- A company wants to migrate their existing io1 volumes to a newer volume type with better durability and performance without application downtime. Which approach is recommended? (Select TWO)
- Create new io2 volumes from snapshots and switch
- Use Elastic Volumes to modify the volume type from io1 to io2 without detaching
- The migration provides 99.999% durability (up from 99.8-99.9%) at the same cost
- io1 to io2 migration requires stopping the instance
- io2 volumes cost 50% more than io1 for the same IOPS
(Elastic Volumes supports online type change from io1 to io2. io2 provides higher durability and performance (1,000 IOPS/GiB vs 50 IOPS/GiB) at the same storage and IOPS pricing.)