Amazon EFS の Elastic Throughput モードと Bursting Throughput モードでファイルの読み書きしてスループットを確認してみた

2022.12.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon EFS の新しいスループットモードElastic Throughput モードが re:Invent 2022 で発表されました。

本記事では EFS 上でファイルを読み書きして Elastic Throughput モードと、Bursting Throughput モードのスループットや、課金体系を確認してみました。

まとめ

  • Elastic Throughput モードのスループットは Bursting Throughput モードでスタンダードストレージクラスに 10 TiB のファイルサイズがあるときのバーストスループット性能と同じ
    • 書き込みスループット 1GiB/s
    • 読み取りスループット 3GiB/s
  • ddコマンドで読み書きするだけではスループットの上限に達することはなかった
  • Elastic Throughput モードは EFS に対してファイルを読み書きしたデータ転送量に応じた従量課金あり
    • Busting Throughput モード、Provisioned Throughput モードにはない新しい課金体系
    • 大量の読み書きが発生するワークロードは他モード、FSx シリーズのストレージの利用を検討する余地あり

Elastic Throughput モードに対して100GBの読み書きを実行した際の請求項目

検証環境

リージョンはオハイオ(us-east-2)で検証しています。HPC ワークロードを想定して One Zone ストレージクラスを利用しています。

EC2 スペック

インスタンスの性能がボトルネックにならないようにc7g.4xlargeを利用しました。

Setting Value
OS Amazon Linux 2
AMI Name amzn2-ami-kernel-5.10-hvm-2.0.20221103.3-arm64-gp2
Instance Type c7g.4xlage
vCPU 16
Memory 32 GiB
Network Bandwidth 15 GB/s(Max)

作成した EFS

EFS は Bursting Throughput モードと、Elastic Throughput モードの違いだけです。

ストレージクラスは書き込み時のレイテンシーがより低い One Zone を採用しています。一般的なワークロードでしたら冗長化の要件で Standard を利用される機会が多いかと思います。違いは One Zone の方が書き込みのレイテンシーがより低い点のみで他は同じパフォーマンスです。

詳しくはドキュメントをご確認ください。

test-EFS-Burst

Setting Value
Performance mode General Purpose
Throughput mode Bursting
Storage class One Zone
Encrypted true

test-EFS-ElasticThroughput

Setting Value
Performance mode General Purpose
Throughput mode Elastic
Storage class One Zone
Encrypted true

ファイルの読み書き検証

ファイルの読み書き方法はddコマンドで 10GiB のファイルを10個作成して書き込みのスループットを確認します。その後、作成したファイルを10個に対して順次読み込り、スループットを確認しました。

ブロックサイズは 10K とし比較的小さめのアクセスを想定しています。当初はブロックサイズ複数パターンで計測するつもりだったのですが Elstic Throughput モードの読み書きコストが地味にかかったので諦めました。

実行コマンド例

# ファイルの書き込み
$ sudo dd if=/dev/urandom of=/mnt/test-efs-Bursting Throughput/test-write-1  bs=10K count=1048576
1048576+0 レコード入力
1048576+0 レコード出力
10737418240 バイト (11 GB) コピーされました、 120.52 秒、 89.1 MB/秒

# 書き込んだファイルの読み取り
$ sudo dd if=/mnt/test-efs-burst/test-write-1 of=/dev/null bs=10K
1048576+0 レコード入力
1048576+0 レコード出力
10737418240 バイト (11 GB) コピーされました、 32.7864 秒、 327 MB/秒

Bursting Throughput モードで読み書きしてみた

ddコマンドの書き込み結果の10回平均

  • ライトスループット: 97.28 MB/s
  • リードスループット: 319.7 MB/s

ClouddWatch のメトリクスからスループットを確認してみました。計測できた値は概ね一致しています。

詳細は折りたたみ

※ 折りたたみ内でマークダウンの表だとレイアウトが崩れてしまったので画像です。

Elastic Throughput モードで読み書きしてみた

ddコマンドで読み込み結果の10回平均

  • ライトスループット: 332 MB/s
  • リードスループット: 529.3 MB/s

こちらも CloudWatch メトリクスから確認できる結果と概ね一致しています。

詳細は折りたたみ

検証データをみていく

Burstig Throughput モードは最低レベルのバースト性能ということもあり、顕著にスループット性能差がでています。

  • 書き込みスループットは約3.2倍 Elastic Throughput モードが優れる
  • 読み込みスループットは約1.6倍 Elastic Throughput モードが優れる
  • ddコマンドの読み書き負荷では Elastic Throughput モードのスループットの上限に達しなかった
書き込み 読み込み
Bursting 97.28 MB/s 319.7 MB/s 約3.2倍
Elastic Throughput 332 MB/s 529.3 MB/s 約1.6倍

おさらいしておきますと Busting モードは EFS のスタンダードストレージクラスまたは、One Zone ストレージクラスに保存されたデータサイズに対して性能が高くなります。以下の画像ですとバースト性能のオレンジ色のラインの方です。

画像引用: 20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Am…

EFS に何も保存していない状態で合計 100 GB のファイルを作成(保存)しています。1 TiB までは 100 MiB/s の最低レベルのスループットしか得られません。

EFS のメトリクス(PermittedThroughput)から EFS のスループット性能を確認できます。

両モードを表示してみました。Bursting Throughput モードは約100MB/s に対して、Elastic Throughput モードは約1GB/s のスループット性能であることが読み取れます。

Elastic Throughput モードはライトスループットの値が表示されると説明されています。リードは3分の1で計測されるとのこと。

For file systems in Bursting Throughput mode, this value is a function of the file system size and BurstCreditBalance.
For file systems in Elastic Throughput mode, this value reflects the maximum write throughput of the file system.

Note
Read operations are metered at one-third the rate of other operations.

Amazon CloudWatch metrics for Amazon EFS - Amazon Elastic File System

ライトスループット 1GB/s あれば 3GB/s になるため Elstic Throughput モードの公称スペック通りです。Bursting Throughput モードは書き込み 100MB/s 読み込み 300MB/s ということになります。

Elastic Throughput can drive up to 3 GiBps for read operations and 1 GiBps for write operations per file system, in all AWS Regions.

Amazon EFS performance - Amazon Elastic File System

Elastic Throughput モードは今回の計測方法では書き込み 300MB/s 読み込み 500MB/s でしたのでまだまだ余力があったことなります。一方で Busting モードはバーストスループット性能が頭打ちになり、EFS の性能がボトルネックという状態です。

Busting Throughput モードのバースト性能に影響のあるストレージクラス

バーストスループットの上限、ベースラインスループットの上限を引き上げるために必要な要素を復習しておきましょう。

EFS に保存しているファイルサイズが重要なのですがどのストレージクラスに保存しているかが一番大切です。

よく利用されるマルチAZ構成の EFS であればスタンダードクラス、シングル AZ 構成の EFS であればOne Zone ストレージクラスにファイルが保存されている必要があります。

For file systems that use Bursting Throughput mode, the metered throughput is determined by the amount of data stored in the EFS Standard or EFS One Zone storage class.

Amazon EFS performance - Amazon Elastic File System

EFS 低頻度アクセス (EFS IA)を利用されるケースは多いかと思います。

IA ストレージクラスに移動されたファイルはバースト性能向上に貢献しません。

以下の EFS の例では全体で 1.9 TiB ありますがスタンダードクラスには 80GB しかありません。残りの 1.8 TiB は IA ストレージクラスクラスに保存されています。

ストレージクラスに 1TiB 以上ファイルがあればバースト性能があがりますが、このとおり最低限のバースト性能(105 MB/s)しか得られません。

Elastic Throughput モードの優位性

Bursting Throughput モードで Elastic Throughput モードと同じスループットを確保するにはスタンダードストレージクラスに10TiB の容量が必要になります。Busrting Throughput モードと比較して Elastic Throughput モードの優位性を考えてみます。

  • スタンダードストレージクラスの保存量は少なくが、ある程度スループットが必要な場合
  • バーストスループットの性能で要件は満たせるが、バーストクレジット枯渇が心配な場合

ユーザーが悩ましい部分を解決してくれる新モードといったところでしょうか。

自分のワークロードだとどのスループットモードを選んだら良いのか?については参考となる目安がドキュメントに載っておりますので参照ください。

Choosing the correct throughput mode for a file system

Amazon EFS performance - Amazon Elastic File System

Elstic Throughput モードの気になる読み書き料金

Elastic Throughput モードはファイルの読み書きで課金される料金体系です。本件では 100GB 書き込み、100GB 読み込みました。

「単価 x 読み書きした容量」で請求されました。純粋に読み書きした容量で課金されるということを確認したかったので満足です。

念のため日本でも同検証を試していました。料金単価は異なりますが同じですね。

読み書きの量が多く従量課金だと相性が悪く、IOPS、スループット性能を重要視する場合は FSx for NetApp ONTAP, FSx for OpenZFS もご検討ください。EFS よりお安くご利用いただける可能性がございます。

おわりに

EFS の Elasitc Throughput モードのスループット性能がわからず調べたついでに手を動かしてみました。ファイルの読み書きの従量課金部分も実際に確認しておきたかったのでちょうどよい機会でした。

参考