This chapter dives deep into Amazon EFS performance modes and throughput configurations, two critical choices that directly impact application performance and cost in production. For the SOA-C02 exam, questions on EFS performance and throughput appear in roughly 5-8% of the exam, often in scenario-based questions asking you to select the right mode for a given workload. Mastering these concepts ensures you can design cost-optimized, high-performance shared file storage for EC2 instances and on-premises servers.
Jump to a section
Imagine a logistics warehouse that receives shipments and must distribute items to different processing stations. The warehouse has two distinct conveyor systems. The first is a high-speed, dual-track conveyor that can process two pallets simultaneously side by side, but each pallet must be handled in the exact order it arrives—no skipping, no reordering. This conveyor is ideal for large, uniform batches where order doesn't matter. The second system is a single-track conveyor with a variable-speed motor that can accelerate or decelerate based on how quickly downstream stations consume items. It keeps a single stream moving at the optimal speed to avoid jams. In the warehouse, you choose the dual-track system when you have massive parallel throughput needs and can tolerate strict ordering, and the single-track variable-speed system when you need to match a variable consumption rate. In AWS EFS, the General Purpose performance mode is like the dual-track conveyor: it uses two parallel metadata servers to handle many concurrent operations with low latency, but it enforces strong consistency and ordering. The Max I/O mode is like the variable-speed conveyor: it scales horizontally across many metadata servers, allowing higher aggregate throughput but with weaker consistency guarantees. The throughput mode selection is like choosing the motor power and speed range of the conveyor—Bursting Throughput gives you a baseline speed with bursts for short sprints, while Provisioned Throughput lets you set a fixed high speed regardless of load.
What Are EFS Performance Modes and Why Do They Exist?
Amazon EFS offers two performance modes—General Purpose (GP) and Max I/O—and two throughput modes—Bursting and Provisioned. These settings are chosen at file system creation (performance mode) or can be modified after creation (throughput mode). They exist because different workloads have vastly different access patterns: some need low latency for many small files (e.g., web serving, content management), while others need high aggregate throughput for large sequential operations (e.g., big data analytics, media processing). Choosing the wrong mode can lead to poor performance or unnecessary cost.
How General Purpose Performance Mode Works
General Purpose (GP) is the default performance mode. It is optimized for latency-sensitive workloads that require strong consistency. Internally, GP mode uses a dual-metadata-server architecture. When a client performs a metadata operation (e.g., open, close, stat), the request goes to one of two metadata servers that maintain a strongly consistent view of the file system namespace. This dual-server setup provides low-latency metadata operations (typically single-digit milliseconds) and supports up to 7,000 file operations per second (ops/s) per file system. However, GP mode has a ceiling: it cannot scale beyond 7,000 metadata ops/s, making it unsuitable for workloads that require very high rates of small file access.
How Max I/O Performance Mode Works
Max I/O mode is designed for workloads that need high levels of aggregate throughput and operations per second, especially for large files and sequential access. Instead of two metadata servers, Max I/O uses a distributed metadata architecture that scales horizontally. Each metadata operation is handled by one of many metadata servers, allowing the file system to achieve up to 500,000 ops/s or more. However, this scalability comes at a cost: Max I/O provides weaker consistency. While EFS always offers close-to-open consistency (i.e., once a file is closed, subsequent opens see the latest data), Max I/O may have slightly higher metadata latency on individual operations because the distributed system introduces coordination overhead. For workloads that can tolerate this (e.g., big data, genomics, media transcoding), Max I/O is ideal.
Key Components, Values, Defaults, and Timers
Performance mode selection: Can only be set at file system creation. Cannot be changed later. Default is General Purpose.
General Purpose metadata ops limit: ~7,000 ops/s (soft limit, may vary). Exceeding this can cause throttling (503 errors).
Max I/O metadata ops scale: Up to 500,000 ops/s, but no guaranteed limit; scales with file system size.
Throughput modes: Bursting (default) and Provisioned. Can be changed after creation.
Bursting Throughput baseline: 50 MiB/s per TiB of storage (for EFS Standard). For example, a 1 TiB filesystem gets a baseline of 50 MiB/s.
Burst credit accumulation: Earn credits at baseline rate. Can burst up to 100 MiB/s per TiB (i.e., 2x baseline) for a limited time based on accumulated credits.
Burst credit bucket: Size is 2.1 TiB of credits (approximately 2.2 hours of bursting at maximum rate for a 1 TiB filesystem).
Provisioned Throughput: You specify a fixed amount of throughput (e.g., 200 MiB/s) regardless of storage size. Minimum is 1 MiB/s; maximum is 10 GiB/s per account per region (soft limit).
Throughput limits: For General Purpose, maximum throughput is 3 GiB/s for reads and 1 GiB/s for writes (with Provisioned). For Max I/O, maximum throughput is 10 GiB/s for reads and 3 GiB/s for writes.
Configuration and Verification
To create a file system with a specific performance mode via AWS CLI:
aws efs create-file-system --creation-token mytoken --performance-mode generalPurpose --throughput-mode bursting --region us-east-1To change throughput mode to Provisioned:
aws efs update-file-system --file-system-id fs-12345678 --throughput-mode provisioned --provisioned-throughput-in-mibps 100To view current settings:
aws efs describe-file-systems --file-system-id fs-12345678The output includes PerformanceMode, ThroughputMode, and ProvisionedThroughputInMibps.
Interaction with Related Technologies
EFS performance interacts with several AWS services: - EC2 placement groups: For Max I/O, using a cluster placement group can reduce network latency between EC2 instances and EFS, improving throughput. - VPC endpoints: Using an EFS VPC endpoint (gateway endpoint) reduces data transfer costs and can improve latency by keeping traffic within the VPC. - EFS mount targets: Each mount target provides a network endpoint. For high throughput, distribute client traffic across multiple mount targets in different Availability Zones. - EFS replication: When using EFS replication (one-way), the destination file system inherits the performance mode of the source. Replication adds latency and can impact throughput. - AWS DataSync: For large-scale data transfers, DataSync can be used to migrate data to EFS, but it does not affect performance mode selection.
Throughput Mode Deep Dive: Bursting
Bursting Throughput is the default and works on a credit model. The file system accumulates burst credits whenever it uses less than its baseline throughput. Credits are consumed when throughput exceeds the baseline. The burst rate is up to 100 MiB/s per TiB, but only for a limited duration. The burst credit bucket size is 2.1 TiB (approximately 2.2 hours of maximum burst for a 1 TiB filesystem). If credits are exhausted, throughput is throttled to the baseline. This model is cost-effective for workloads with variable throughput, such as periodic backups or batch processing.
Throughput Mode Deep Dive: Provisioned
Provisioned Throughput allows you to specify a fixed throughput independent of storage size. This is useful for workloads that consistently require high throughput but have small storage footprints (e.g., a 100 GiB filesystem needing 200 MiB/s). Without Provisioned, bursting would be limited because the baseline is only 50 MiB/s per TiB (i.e., ~5 MiB/s for 100 GiB). Provisioned costs more than Bursting for the same throughput level because you pay for the provisioned amount regardless of usage. You can change between Bursting and Provisioned at any time, but changes take effect within a few minutes.
Performance Mode Selection Criteria
Choose General Purpose for: web serving, content management, home directories, CI/CD pipelines, and any workload requiring low latency for metadata operations (e.g., many small files).
Choose Max I/O for: big data analytics (e.g., Apache Spark), media processing, genomics, financial modeling, and any workload needing high aggregate throughput for large files (e.g., >1 MB per file).
Exam tip: If a scenario mentions high throughput for large files, choose Max I/O. If it mentions low latency for many small files, choose General Purpose.
Performance Monitoring and Troubleshooting
Use Amazon CloudWatch metrics for EFS:
- PermittedThroughput: The maximum throughput allowed based on bursting credits or provisioned setting.
- BurstCreditBalance: The amount of burst credits remaining (in bytes). If this drops to zero, throughput is throttled.
- MeteredIOBytes: The amount of data read/written (used for billing).
- DataReadIOBytes, DataWriteIOBytes: I/O size metrics.
- PercentIOLimit: How close you are to the metadata ops limit (for General Purpose).
If you see high latency or throttling (503 errors), check BurstCreditBalance and PercentIOLimit. If credits are low, consider switching to Provisioned Throughput or increasing storage (which increases baseline). If metadata ops are near 7,000 ops/s for General Purpose, consider moving to Max I/O (requires creating a new filesystem).
Exam Specifics
On the SOA-C02 exam, you will encounter questions that test your ability to:
Differentiate between GP and Max I/O based on workload descriptions.
Calculate burst duration or baseline throughput given storage size.
Identify when to use Provisioned Throughput over Bursting.
Recognize that performance mode cannot be changed after creation.
Understand that throughput mode can be changed after creation.
Common wrong answers include: selecting Max I/O for low-latency workloads, thinking throughput mode is fixed at creation, or confusing burst credit calculations.
Identify workload characteristics
Begin by analyzing the application's file access pattern. Determine whether the workload is latency-sensitive with many small files (e.g., web server serving static assets) or throughput-intensive with large sequential files (e.g., video transcoding). Also estimate the expected metadata operations per second (ops/s) and aggregate throughput (MiB/s). This step is critical because performance mode is immutable after creation. For the exam, look for keywords like 'millions of small files' (General Purpose) or 'high throughput for large files' (Max I/O).
Select performance mode at creation
Based on the workload analysis, choose General Purpose (default) or Max I/O. Use the AWS Management Console, CLI, or SDK to create the file system with the appropriate `--performance-mode` parameter. For example: `aws efs create-file-system --creation-token mytoken --performance-mode maxIO --throughput-mode bursting`. Remember that this choice is permanent; you cannot switch later. If you need to change performance mode, you must create a new file system and migrate data.
Calculate baseline and burst throughput
If using Bursting Throughput (default), calculate the baseline throughput: 50 MiB/s per TiB of storage (for EFS Standard). For example, a 2 TiB file system gets 100 MiB/s baseline. The burst rate is up to 100 MiB/s per TiB (2x baseline). The burst credit bucket accumulates at the baseline rate when usage is below baseline, and can store up to 2.1 TiB of credits (about 2.2 hours of maximum burst for a 1 TiB file system). Use CloudWatch metric `BurstCreditBalance` to monitor. If the workload consistently exceeds baseline, consider Provisioned Throughput.
Configure throughput mode
After creation, you can set the throughput mode to Bursting (default) or Provisioned. If Provisioned, specify the desired throughput in MiB/s (minimum 1 MiB/s). Use CLI: `aws efs update-file-system --file-system-id fs-12345678 --throughput-mode provisioned --provisioned-throughput-in-mibps 200`. Changes take effect within minutes. Provisioned throughput costs more than Bursting for the same level because you pay for reserved capacity. For exam questions, if a small file system needs high sustained throughput, Provisioned is the answer.
Mount and verify performance
Mount the EFS file system on EC2 instances using the NFS client. Use mount options like `nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport` for optimal performance. Verify throughput using tools like `fio` or `dd`. Monitor CloudWatch metrics to ensure `BurstCreditBalance` stays above zero (for Bursting) and `PermittedThroughput` matches expectations. If performance is below expectations, check for network bottlenecks, mount target distribution, or metadata ops limits.
Scenario 1: Web Serving Platform for E-commerce
A large e-commerce company runs a web serving platform on hundreds of EC2 instances behind an Application Load Balancer. They use EFS to store static assets (HTML, CSS, JavaScript, images) that are frequently accessed by all instances. The workload involves millions of small files (average 10-50 KB) and requires low latency for each file open. They chose General Purpose performance mode because it provides low-latency metadata operations (single-digit milliseconds) and strong consistency. They use Bursting Throughput because traffic spikes during sales events (e.g., Black Friday) can be absorbed by burst credits. They monitor BurstCreditBalance closely and have a CloudWatch alarm to alert if credits drop below 20%. During peak, they temporarily switch to Provisioned Throughput to avoid throttling. A common misconfiguration is choosing Max I/O for this workload, which would increase metadata latency and cause poor user experience.
Scenario 2: Genomic Data Analysis
A biotech company processes genomic sequencing data using Apache Spark on EC2. Each sequencing run produces large files (1-10 GB) that need to be read and written sequentially. The cluster has 50+ nodes that frequently read and write these large files concurrently. They need high aggregate throughput (multiple GiB/s) to keep the cluster busy. They chose Max I/O performance mode because it can scale to hundreds of thousands of metadata ops/s and provides up to 10 GiB/s read throughput. They use Provisioned Throughput set to 5 GiB/s to ensure consistent performance regardless of storage size (which is only 5 TiB). Without Provisioned, Bursting would provide only 250 MiB/s baseline (50 MiB/s per TiB * 5 TiB), far below their needs. They also distribute mount targets across three Availability Zones to maximize network throughput. A pitfall is using General Purpose mode, which would limit metadata ops to ~7,000/s and throttle the Spark driver's directory listing operations.
Scenario 3: Media Transcoding Pipeline
A media company transcodes video files using a pipeline of EC2 instances. Input and output files are stored on EFS. Each transcoding job reads a large input file (2-5 GB) and writes multiple output files (hundreds of MB each). The pipeline runs continuously, processing hundreds of jobs per day. They chose Max I/O for high throughput and Provisioned Throughput (2 GiB/s) to handle the sustained load. They use EFS lifecycle management to move older files to Infrequent Access (IA) storage class to reduce costs. A common issue is misconfiguring mount options: using default rsize/wsize (128 KB) instead of 1 MB, which reduces throughput by 80%. They resolved this by setting rsize=1048576, wsize=1048576 in the mount command.
Exactly What SOA-C02 Tests
Domain: Deployment, Objective 3.3: "Configure and manage Amazon EFS"
The exam tests your ability to:
Select the appropriate performance mode based on workload characteristics (latency vs. throughput).
Calculate burst credit consumption and duration.
Determine when to use Provisioned Throughput over Bursting.
Understand that performance mode is immutable after creation; throughput mode is mutable.
Interpret CloudWatch metrics to diagnose performance issues.
Most Common Wrong Answers and Why Candidates Choose Them
Choosing Max I/O for low-latency workloads: Candidates see 'Max I/O' and assume it's always better. They overlook that Max I/O has higher metadata latency due to distributed architecture. The exam will describe a workload with many small files and ask for the best performance mode. Wrong answer: Max I/O. Correct: General Purpose.
Selecting Provisioned Throughput for variable workloads: Candidates think Provisioned is always better because it's fixed. They ignore cost. The exam might ask for the most cost-effective option for a workload with periodic spikes. Wrong answer: Provisioned. Correct: Bursting.
Thinking throughput mode is immutable: Candidates confuse performance mode (immutable) with throughput mode (mutable). The exam may present a scenario where a file system needs higher throughput and ask what to do. Wrong answer: Create a new file system. Correct: Change throughput mode to Provisioned.
Miscalculating burst duration: Candidates forget that the burst credit bucket is 2.1 TiB (not 2.1 GiB). They might calculate incorrectly. For example, a 2 TiB file system bursting at 200 MiB/s (100 MiB/s per TiB) would consume credits at 200 MiB/s. The bucket is 2.1 TiB = 2,150,400 MiB, so burst duration = 2,150,400 / 200 = 10,752 seconds ≈ 3 hours. But they might think it's 2.1 GiB and get 10.5 seconds.
Specific Numbers and Terms That Appear Verbatim
'7,000 file operations per second' for General Purpose.
'50 MiB/s per TiB' baseline.
'100 MiB/s per TiB' burst rate.
'2.1 TiB' burst credit bucket.
'Max I/O can achieve up to 500,000 ops/s'.
'Provisioned Throughput minimum 1 MiB/s'.
'General Purpose is default'.
Edge Cases and Exceptions
If a file system is smaller than 1 TiB, the baseline throughput is still 50 MiB/s per TiB, so a 100 GiB file system gets 5 MiB/s baseline. Burst rate is 10 MiB/s (100 MiB/s per TiB).
Burst credits are earned even when the file system is idle, up to the bucket limit.
EFS One Zone (EFS One Zone-IA) uses the same performance modes but with lower durability.
When using EFS Replication, the destination file system must have the same performance mode as the source.
How to Eliminate Wrong Answers Using the Underlying Mechanism
If a question mentions 'low latency for metadata operations', immediately eliminate Max I/O because it uses distributed metadata. If a question mentions 'high throughput for large files', eliminate General Purpose because its metadata ops limit can throttle. For throughput, if the workload is spiky, Bursting is cheaper; if steady high throughput, Provisioned is needed. Always check if the scenario specifies a small file system with high throughput: that forces Provisioned because bursting baseline would be too low.
Performance mode (General Purpose vs. Max I/O) is set at file system creation and cannot be changed later.
General Purpose is for low-latency, many small files; Max I/O is for high throughput, large files.
Throughput mode (Bursting vs. Provisioned) can be changed after creation at any time.
Bursting baseline: 50 MiB/s per TiB; burst rate: 100 MiB/s per TiB; credit bucket: 2.1 TiB.
Provisioned Throughput is needed when a small file system requires high sustained throughput (e.g., 100 GiB needing 200 MiB/s).
CloudWatch metrics: BurstCreditBalance, PermittedThroughput, PercentIOLimit are critical for monitoring.
For Max I/O, distribute mount targets across multiple AZs to maximize network throughput.
Mount options like rsize=1048576, wsize=1048576 improve throughput for large files.
These come up on the exam all the time. Here's how to tell them apart.
General Purpose
Optimized for low-latency metadata operations (single-digit ms).
Supports up to ~7,000 file operations per second.
Uses dual-metadata-server architecture for strong consistency.
Ideal for web serving, home directories, CI/CD.
Cannot be changed after creation; must create new file system.
Max I/O
Optimized for high aggregate throughput (up to 10 GiB/s reads).
Scales to 500,000+ ops/s via distributed metadata servers.
Slightly higher metadata latency due to distributed coordination.
Ideal for big data, genomics, media processing.
Cannot be changed after creation; must create new file system.
Bursting Throughput
Default mode; cost-effective for variable workloads.
Baseline: 50 MiB/s per TiB; burst: 100 MiB/s per TiB.
Burst credit bucket: 2.1 TiB; credits earned when below baseline.
Throttled to baseline if credits exhausted.
Can be changed to Provisioned at any time.
Provisioned Throughput
Fixed throughput independent of storage size.
Minimum 1 MiB/s; maximum 10 GiB/s per account (soft limit).
Pay for reserved capacity; no burst credits.
Suitable for small file systems needing high sustained throughput.
Can be changed to Bursting at any time.
Mistake
Max I/O mode always provides better performance than General Purpose.
Correct
Max I/O is optimized for high throughput and high metadata ops, but it has higher metadata latency due to distributed architecture. For latency-sensitive workloads with many small files, General Purpose performs better. Always match the mode to the workload.
Mistake
Throughput mode can only be set at file system creation.
Correct
Throughput mode (Bursting vs. Provisioned) can be changed at any time after creation. Only performance mode is immutable. You can update throughput mode using the AWS CLI, Console, or SDK.
Mistake
Burst credits are measured in GiB and the bucket is 2.1 GiB.
Correct
Burst credits are measured in bytes (TiB). The bucket size is 2.1 TiB (approximately 2.2 hours of maximum burst for a 1 TiB file system). Confusing units leads to incorrect duration calculations.
Mistake
Provisioned Throughput is always more expensive than Bursting.
Correct
Provisioned Throughput costs more than Bursting for the same throughput level because you pay for reserved capacity regardless of usage. However, for workloads that consistently need high throughput, Provisioned may be cheaper than paying for large amounts of storage just to increase the baseline.
Mistake
You can increase burst credits by adding more storage.
Correct
Adding storage increases the baseline throughput (50 MiB/s per TiB) and the burst rate (100 MiB/s per TiB), but it does not increase the burst credit bucket size (2.1 TiB). However, with a larger baseline, you earn credits faster and consume them slower, effectively extending burst duration.
Reveal each answer, then mark whether you got it right. Score 60%+ to unlock the next chapter.
No, performance mode (General Purpose or Max I/O) is set at creation and cannot be changed. If you need a different performance mode, you must create a new file system and migrate your data using tools like rsync or AWS DataSync. The exam tests this immutability frequently.
First, determine the burst rate (100 MiB/s per TiB of storage). Then calculate the burst credit bucket size (2.1 TiB = 2,150,400 MiB). Divide the bucket by the burst rate to get seconds. For a 2 TiB file system bursting at 200 MiB/s: 2,150,400 / 200 = 10,752 seconds (about 3 hours). If the file system is using less than the burst rate, credits are consumed slower, extending the burst duration.
Use Provisioned Throughput when your workload consistently requires higher throughput than the Bursting baseline can provide, especially if the file system is small. For example, a 100 GiB file system needs 200 MiB/s sustained. Bursting baseline is only 5 MiB/s (50 MiB/s per TiB * 0.1 TiB), and burst credits would deplete quickly. Provisioned allows you to set 200 MiB/s directly.
General Purpose uses two metadata servers, providing low latency (single-digit ms) but limited to ~7,000 ops/s. Max I/O uses many distributed metadata servers, scaling to 500,000+ ops/s but with slightly higher latency per operation. Choose General Purpose for latency-sensitive, small-file workloads; choose Max I/O for high-throughput, large-file workloads.
Use the CloudWatch metric `BurstCreditBalance` for the EFS file system. It shows the current credit balance in bytes. Set an alarm to notify when the balance drops below a threshold (e.g., 20% of the bucket). If it reaches zero, throughput is throttled to baseline. You can also use the `PermittedThroughput` metric to see the current allowed throughput.
Yes, you can mount EFS on on-premises servers using AWS Direct Connect or VPN. However, performance will be limited by network latency and bandwidth. For on-premises access, consider using AWS DataSync for bulk transfers or AWS Storage Gateway for low-latency caching. On-premises workloads still use the same EFS performance and throughput modes.
For large file throughput, use: `nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport`. The `rsize` and `wsize` set the NFS read/write buffer size to 1 MiB, which is optimal for EFS. The `noresvport` option allows the NFS client to use a non-privileged port, improving performance. `hard` and `timeo=600` ensure reliability.
You've just covered EFS Performance Modes and Throughput — now see how well it sticks with free SOA-C02 practice questions. Full explanations included, no account needed.
Done with this chapter?