What throughput modes are available in EFS and what is the right throughput mode for my workload?
Last updated: 2022-06-20
What throughput modes are available in Amazon Elastic File System (Amazon EFS)? Also, how do I determine the correct throughput mode for my workload?
Throughput mode determines the throughput available to your file system. Amazon EFS offers two throughput modes, Bursting Throughput and Provisioned Throughput.
Bursting Throughput mode
Bursting Throughput mode is the default Amazon EFS throughput mode. In Bursting Throughput mode, file system baseline throughput is proportional to the file system size in the EFS standard storage or One-Zone storage class. The maximum throughput value depends on the Amazon EFS Region. For more information about per-Region limits, see the table in Amazon EFS quotes that you can increase.
Read and write throughput are metered, and burst credits are deducted from the burst credit balance for metered throughput. Bursting Throughput mode uses burst buckets to save burst credits when the metered throughput is lower than the baseline throughput. However, when the metered throughput is higher than the baseline throughput, it uses burst credits.
For more information on metered throughput, see the Understanding metered throughput section in Throughput modes.
The baseline performance per GiB of file system storage is 50 KiB/s (the equivalent of 50 MiB/s per TiB of storage). All EFS file systems, regardless of size, can burst up to 100 MiB/s of metered throughput, if they have burst credits. For file systems above 1 TiB, the burst throughput is twice the baseline performance. For example, a 2-TiB file system has a baseline performance of 100 MiB/s and can burst up to 200 MiB/s. After all burst credits are used, the file system is throttled to drive baseline performance.
For more information on burst credits, see How do Amazon EFS burst credits work?
Provisioned Throughput mode
Provisioned Throughput mode allows you to provision throughput for your file system (in MiB/s) regardless of how much data you're storing in your file system. Additional charges are associated with using Provisioned Throughput mode. When using Provisioned Throughput mode, you're billed for the storage that you use and for the throughput that you provision above what you're provided. The amount of throughput that you're provided is based on the amount of data stored in the EFS Standard or EFS One Zone storage class.
Note: If your system's metered size provides a higher baseline rate than the amount of provisioned throughput, then your system follows the default Bursting Throughput model. You don't incur charges for Provisioned Throughput below your file system's entitlement in Bursting Throughput mode.
How to decide which throughput mode is suitable for your workload
Use Bursting Throughput mode if your workloads are typically spiky. A spiky workload drives high levels of throughput for short periods of time, with otherwise low levels of throughput. For applications that have a relatively constant throughput, use Provisioned Throughput mode.
Before switching to Provisioned Throughput mode from Bursting Throughput, consider how much throughput to provision. To determine the minimum amount of Provisioned Throughput that you need, check the Average Throughput usage for your file system for the previous two weeks. Note the highest peak amount, rounded up to the next megabyte.
Or, perform a benchmark against EFS using the fio tool. The fio tool spawns a number of threads or processes performing a specified type of I/O action. The fio tool is usually used to write a job file matching the I/O load you want to simulate.
Example syntax for performing a benchmark using the fio tool
fio --directory=/path/to/efs --name fio_test_file --direct=1 --rw=randread --bs=1024k --size=1G --numjobs=4 --time_based --runtime=180 --group_reporting --norandommap
The preceding command creates four files with 1 GiB each. The command then performs random read tests with four concurrent threads. The block size is 1 MiB. The test runs for 180 seconds (three minutes). Non-buffered I/O is used so that the test results aren't influenced by caching. To simulate a different scenario, adjust the syntax as needed.