Amazon EFS パフォーマンス - Amazon Elastic File System

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EFS パフォーマンス

Amazon EFS はサーバーレスを提供します set-and-forget 内部のどのコンピュートサービスからでもアクセスできる伸縮自在なファイルシステムAWSおよび以下を含むオンプレミス

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • Amazon Elastic Container Service (Amazon ECS)

  • Amazon Elastic Kubernetes Service (Amazon EKS)

  • AWS Fargate

  • AWS Lambda

Amazon EFS は 1 秒あたり 10 ギビバイト以上を配信します (GiBps)のスループットが500,000 IOPSを超え、ミリ秒未満または1桁ミリ秒未満のレイテンシー。

次のセクションでは、Amazon EFS パフォーマンスの概要と、ファイルシステムの設定が主要なパフォーマンスディメンションにどのように影響するかについて説明します。また、ファイルシステムのパフォーマンスを最適化するための重要なヒントや推奨事項もいくつか紹介します。

パフォーマンスの概要

ファイルシステムのパフォーマンスは通常、レイテンシー、スループット、1 秒あたりの I/O オペレーション (IOPS) のディメンションを使用して測定されます。これらのディメンションにおける Amazon EFS のパフォーマンスは、ファイルシステムの設定によって異なります。次の設定は、Amazon EFS ファイルシステムのパフォーマンスに影響します。

  • ストレージクラス— EFS ワンゾーンまたは EFS 標準

  • パフォーマンスモード— General I/O

  • スループットモード— バーストまたはプロビジョニング済み

次の表は、利用可能なストレージクラスとパフォーマンスモード設定の組み合わせでの Amazon EFS ファイルシステムのパフォーマンスを示しています。

ストレージクラスとパフォーマンスモードの組み合わせによるファイルシステムのパフォーマンス
レイテンシー1 最大 IOPS 最大スループット

ファイルシステムの構成 — ストレージクラスとパフォーマンスモード

読み込み操作

書き込み操作

読み込み操作

書き込み操作

Per-file-system 読む2

Per-file-system 書き込み2

1 クライアント読み取り/書き込み

ワンゾーンストレージと汎用

最低 600 マイクロ秒 (µs)

1 桁ミリ秒

35,000 7,000

3 — 5 GiBps

1 ~ 3 GiBps

500 MiBps

標準ストレージと汎用

600 µsと低い

1 桁ミリ秒

35,000 7,000

3 — 5 GiBps

1 ~ 3 GiBps

500 MiBps

スタンダードストレージと最大 I/O

1 桁のミリ秒

1 桁から 2 桁のミリ秒

>500,000 >100,000

3 — 5 GiBps

1 ~ 3 GiBps

500 MiBps
注記

脚注:

  1. コストが最適化されたストレージクラス (標準 IA および 1 ゾーン IA) へのファイルデータの読み取りと書き込みの待ち時間は 2 桁ミリ秒です。

  2. 最大読み取り/書き込みスループットはAWS リージョンファイルシステムのスループットモード (バーストまたはプロビジョニング済み) で。詳細については、「」の表を参照してください。のデフォルトのスループットバーストモードとプロビジョニングスループットモード用。

    スループットがAWS リージョンの最大スループットには、スループットクォータを増やす必要があります。スループットの追加要求は、 case-by-case Amazon EFS サービスチームがベースとしています。承認はワークロードのタイプによって異なる場合があります。クォータの引き上げをリクエストする方法の詳細については、「」を参照してください。Amazon EFS のクォータと制限

ストレージクラスとパフォーマンス

Amazon EFS は次のストレージクラスを使用します。

  • EFS 1 ゾーンストレージクラス— EFS 1 ゾーンと EFS 1 ゾーン-低頻度アクセス(EFS 1 ゾーン-IA)。EFS 1 ゾーンストレージクラスは単一のアベイラビリティーゾーン内でデータをレプリケートします。

  • EFS スタンダードストレージクラス— EFS 標準と EFS 標準-IA。EFS スタンダードストレージクラスは複数のアベイラビリティーゾーン (マルチ AZ) にわたってデータをレプリケートします。

IA ストレージクラスの読み取りまたは書き込み時の先頭バイトのレイテンシーは、EFS スタンダードまたは EFS 1 ゾーンストレージクラスの場合よりも長くなります。

EFS ストレージクラスの詳細については、「EFS ストレージクラス」を参照してください。

パフォーマンスモード

Amazon EFS には、汎用モードと最大 I/O という 2 つのパフォーマンスモードがあります。

  • 汎用モード最大 35,000 IOPS をサポートし、オペレーションあたりのレイテンシーが最も低くなります。EFS One Zone ストレージクラスのファイルシステムでは、常に汎用パフォーマンスモードが使用されます。EFS 標準ストレージクラスのファイルシステムでは、デフォルトの汎用パフォーマンスモードまたは Max I/O パフォーマンスモードのいずれかを使用できます。

  • 最大 I/O モード500,000 以上の IOPS をサポートし、汎用モードに比べてオペレーションあたりのレイテンシーが高くなっています。

パフォーマンスモードは、ファイルシステムを作成するときに設定し、作成後に変更することはできません。

大部分のアプリケーションには、[General Purpose (汎用)] パフォーマンスモードをお勧めします。どのパフォーマンスモードを使用するかわからない場合は、汎用パフォーマンスモードを選択してください。汎用モードを使用するファイルシステムで使用可能な IOPS 制限内にワークロードが収まるようにするには、PercentIOLimit CloudWatch のメトリクス。詳細については、「アマゾン CloudWatch Amazon EFS のメトリクス」を参照してください。

アプリケーションは、パフォーマンスモードに関連する制限まで柔軟に IOPS をスケーリングできます。IOPS はファイルシステムのスループットアカウンティングに含まれているため、個別に請求されることはありません。すべてのネットワークファイルシステム (NFS) 要求は、4 KB のスループット、つまり実際のリクエストとレスポンスのサイズ (どちらか大きい方) として計算されます。たとえば、100 MBps のスループットを処理できるファイルシステムでは、1 秒あたり最大 25,600 回の 4 KB の書き込みを処理できます (100 MBps を 1 リクエストあたり 4 KB で割ると、1 秒あたり 25,600 件のリクエスト)。

スループットモード

ファイルシステムのスループットモードによって、ファイルシステムで使用できるスループットが決まります。Amazon EFS には、バーストスループットとプロビジョニングされたスループットの 2 つがあります。読み取りスループットは割り引かれ、書き込みスループットよりも高い読み取りスループットを実現できます。指定先はAWS リージョンでは、読み取りのdiscount は1.66〜3倍です。詳細については、「」の表を参照してください。のデフォルトのスループットバーストモードとプロビジョニングスループットモード用。割引によって読み取りの計測対象となるスループットが低下し、書き込みやバーストクレジットの発生には影響しません。さらに、読み取りディスカウントによって、1 つの NFS リクエストで計測されるスループットが最小リクエストサイズの 4 KB を下回ることはありません。

計測スループットについて

すべての Amazon EFS ファイルシステムには、計測されたスループットが関連付けられています。プロビジョニングされたスループットモードを使用するファイルシステムの場合、計測されたスループットはプロビジョニングされたスループットの量によって決定されます。バーストスループットモードを使用するファイルシステムの場合、計測されたスループットは、EFS 標準または EFS 1 ゾーンストレージクラスに保存されているデータの量によって決定されます。

読み取り要求と書き込み要求は、異なるレートで測定されます。Amazon EFS は、他の要求の 3 分の 1 の割合で読み取り要求を計測します。

例 EFS 計測スループット

たとえば、毎秒30メビバイトを運転している場合(MiBps) 読み取りスループットと書き込みスループットの両方のうち、読み取り分は 10 とカウントされます MiBps 従量制スループットのうち、書き込み分は30とカウントされます MiBps、従量制スループットの合計は 40 MiBps。この合算されたスループットにメータリングレートを調整したものが、MeteredIOBytesアマゾン CloudWatch のメトリクス。詳細については、「アマゾン CloudWatch Amazon EFS のメトリクス」を参照してください。

バーストスループットモード

バーストスループットモードはデフォルトの Amazon EFS スループットモードです。スループットパターンがバーストする従来のアプリケーションに適しています。スループットが低い場合、バーストスループットモードはバーストバケットを使用してバーストクレジットを節約します。スループットが高い場合は、バーストクレジットを使用します。

バーストスループットモードでは、ファイルシステムのスループットはスタンダードストレージクラスのファイルシステムサイズに比例し、最大値は Amazon EFS リージョンによって異なります。リージョンごとの制限の詳細については、「」の表を参照してください。のデフォルトのスループットバーストモードとプロビジョニングスループットモード用。

バーストクレジットが利用可能な場合、ファイルシステムはストレージのテラバイト (TB) あたり最大 100 MBps、最低 100 MBps を駆動できます。バーストクレジットを使用できない場合、ファイルシステムはストレージ 1 TB あたり最大 50 MBps、最低 1 MBps を駆動できます。

読み取りと書き込みのスループットは計測され、従量制スループットのバーストクレジットバランスからバーストクレジットが差し引かれます。バーストクレジットは、ファイルシステムの基本レートでファイルシステムのサイズに比例して発生します。ストレージの TB ごとに 50 MBps のバーストクレジットが蓄積されます。ファイルシステムの消費量が基本レートを下回ると、バーストクレジットが発生します。ファイルシステムが基本レートよりも多く消費するたびに、バーストクレジットを消費します。の計測サイズValueInStandardを使用して、I/O スループットのベースラインとバーストレートを決定します。バーストスループットパフォーマンスの計測されたファイルシステムのサイズには、低頻度アクセスストレージクラスに保存されているデータの量は含まれていません。

Amazon EFS バーストクレジット

Amazon EFS は、クレジットシステムを使用して、ファイルシステムがバーストできる時期を判断します。各ファイルシステムは、EFS 標準または 1 ゾーンスタンダードストレージクラスに保存されているファイルシステムのサイズによって決定されるベースラインレートで時間の経過とともにクレジットを取得します。ファイルシステムは、データを読み書きするたびにクレジットを使用します。ベースラインレートは50です MiBps ストレージ 1 TiB あたり (ストレージの 1 GiB あたり 50 KiB/秒に相当)。Amazon EFS は、ベースラインレートに対して他のオペレーションの 3 分の 1 の割合で読み取りオペレーションを計測するため、EFS ファイルシステムは、このベースラインレートにおいて、読み取りスループットで GiB あたり最大 150KiB/s、書き込みスループットで GiB あたり 50KiB/秒を駆動することができます。

ファイルシステムは、ベースラインの従量制レートでスループットを継続的に向上させることができます。ファイルシステムは、非アクティブであるか、スループットをベースラインの従量制レートより低くするたびに、バーストクレジットを蓄積します。蓄積されたバーストクレジットにより、ファイルシステムは、ベースラインレートを上回るスループットを駆動できます。

たとえば、標準ストレージに 100 GiB の従量制データがあるファイルシステムでは、バースト (100) になることがあります。 MiBps残りの 95 パーセントで非アクティブになっていると、5 パーセントの時間。24 時間にわたって、ファイルシステムは、432,000 MiB のクレジットを獲得します。これは、100 でバーストするのに使用することができます。 MiBps 72分間。

1 TiB を超えるファイルシステムは、残りの 50 パーセントで非アクティブになっていると、常に最大 50 パーセントの時間バーストすることができます。

次の表に、バーストの動作の例を示します。

ファイルシステムサイズ バーストスループット ベースラインスループット
標準ストレージに 100 GiB の従量制データを格納するファイルシステムは...
  • 毎秒300メビバイトにバーストする(MiBps1 日あたり最大 72 分間、読み取り専用に

  • バースト100 MiBps 1 日あたり最大 72 分間、書き込み専用または

  • 15 MiBps 読み取り専用 1

  • 最大 5 MiBps [Write-only]

標準ストレージに 1 TiB の従量制データを格納するファイルシステムでは、...
  • 300 MiBps 1 日 12 時間、読み取り専用 12 時間

  • バースト100 MiBps 1 日あたり 12 時間、書き込み専用に 1 日あたり 12 時間

  • 150 MiBps 読み取り専用 1

  • ドライブ 50 MiBps [Write-only]

標準ストレージに 10 TiB の従量制データを格納するファイルシステムでは、...
  • バースト3 GiBps 1 日 12 時間、読み取り専用 12 時間

  • バースト GiBps 1 日あたり 12 時間、書き込み専用または

  • ドライブ 1.5 GiBps 読み取り専用 1

  • 500 MiBps [Write-only]

一般的に、より大きなファイルシステムは ...
  • 300 MiBps 1 日 12 時間、ストレージの 1 TiB あたり読み取り専用の 1 時間

  • バースト100 MiBps 1 日 12 時間、ストレージの 1 TiB あたり書き込み専用または

  • 150 MiBps ストレージ 1 TiB あたり読み取り専用で連続駆動

  • ドライブ 50 MiBps ストレージ 1 TiB あたり連続書き込み専用に

注記

Amazon EFS は計測スループット1 MiBps ベースラインレートが低くても、すべてのファイルシステムに。

ベースラインレートとバーストレートを決定するために使用されるファイルシステムサイズは、ValueInStandardメーターサイズはDescribeFileSystemsAPI オペレーション

ファイルシステムは、1 TiB より小さいファイルシステムの場合、2.1 TiB、または 1 TiB を超えるファイルシステムの場合は、1 TiB あたり 2.1 TiB の最大クレジットバランスを得ることができます。この方法は、ファイルシステムが連続して最大 12 時間バーストするのに十分なクレジットを蓄積できることを示しています。

プロビジョニングされたスループットットモード

スループットが比較的一定のアプリケーションには、プロビジョンドスループットモードをお勧めします。プロビジョニングされたスループットモードでは、ファイルシステムのサイズやバーストクレジットバランスに関係なく、ファイルシステムが処理できるスループットのレベルを指定します。ファイルシステムがバーストスループットモードを使用していた場合、ストレージ量に基づくファイルシステムの基本スループットレートを超えるプロビジョニングスループット量に対して課金されます。ファイルシステムの標準ストレージに保存されているデータの従量制サイズが、プロビジョニングしたスループット量よりもベースラインスループットが高い場合、ファイルシステムは自動的にバーストスループットモードを使用します。

スループットモードの切り替えとプロビジョニング量の変更に関する制限

既存のファイルシステムのスループットモードを切り替えて、スループット量を変更できます。ただし、スループットモードをプロビジョンドスループットに切り替えた後、またはプロビジョニングされたスループット量を変更した後は、次のアクションは 24 時間制限されます。

  • プロビジョニングされたスループットモードからの切り替え。

  • プロビジョニングされたスループット量を減らします。

Amazon EFS パフォーマンスのヒント

Amazon EFS を使用する場合は、次のパフォーマンスのヒントに留意してください。

平均 I/O サイズ

Amazon EFS は分散型であるため、可用性、耐久性、およびスケーラビリティが高いレベルで実現されています。分散型のアーキテクチャによって、それぞれのファイル操作のレイテンシーオーバーヘッドも小さくなります。このオペレーションあたりのレイテンシーのため、通常は平均 I/O サイズの増加に応じて全体のスループットが向上します。大量のデータにオーバーヘッドが分散するためです。

リクエストモデル

ファイルシステムへの非同期書き込みを有効にすると、保留中の書き込みオペレーションは、非同期で Amazon EFS に書き込まれる前に、Amazon EC2 インスタンスでバッファリングされます。非同期書き込みは、通常レイテンシーが低くなります。非同期書き込みを実行するとき、カーネルはキャッシュの追加のメモリを使用します。

同期書き込みが有効になっているファイルシステム、またはキャッシュをバイパスするオプションを使用してファイルを開く場合 (たとえば、O_DIRECT)、Amazon EFS に同期リクエストを発行します。各オペレーションはクライアントと Amazon EFS の間のラウンドトリップを通過します。

注記

選択したリクエストモデルでは、整合性 (複数の Amazon EC2 インスタンスを使用している場合) と速度にトレードオフがあります。同期書き込みを使用すると、次の要求を処理する前に各書き込み要求トランザクションを完了できるため、データの一貫性が向上します。非同期書き込みを使用すると、保留中の書き込み操作がバッファリングされるため、スループットが向上します。

NFS クライアントマウント設定

で説明されている推奨マウントオプションを使用していることを確認します。EFS ファイルシステムをマウントするマウントに関する追加の考慮事項

ファイルシステムを Amazon EC2 インスタンスにマウントする場合、Amazon EFS はネットワークファイルシステムバージョン 4.0 と 4.1 (NFSv4) プロトコルをサポートします。NFSv4.1は、NFSv4.0(1秒あたり1,000ファイル未満)と比較して、小さなファイルのparallel 読み取り操作(1秒あたり10,000ファイル以上)のパフォーマンスが優れています。macOS Big Sur を実行している Amazon EC2 macOS インスタンスでは、NFSv4.0 のみがサポートされています。

次のマウントオプションは使用しないでください。

  • noac,actimeo=0,acregmax=0,acdirmax=0— これらのオプションは、パフォーマンスに非常に大きな影響を与える属性キャッシュを無効にします。

  • lookupcache=pos,lookupcache=none— これらのオプションは、パフォーマンスに非常に大きな影響を与えるファイル名検索キャッシュを無効にします。

  • fsc— このオプションはローカルファイルキャッシュを有効にしますが、NFS キャッシュの一貫性は変わらず、レイテンシーも短縮されません。

注記

ファイルシステムをマウントするときに、NFS クライアントの読み込みおよび書き込みバッファのサイズを 1 MB に増やすことを検討します。

小容量ファイルのパフォーマンスの最適化

ファイルの再オープンを最小限に抑え、並列処理を増やし、可能な限り参照ファイルをバンドルすることで、小さなファイルのパフォーマンスを向上させることができます。

  • サーバーへのラウンドトリップの回数を最小限に抑えます。

    後でワークフローで必要になる場合は、ファイルを不必要に閉じないでください。ファイルディスクリプタを開いたままにしておくと、キャッシュ内のローカルコピーに直接アクセスできるようになります。ファイルのオープン、クローズ、およびメタデータの操作は、通常、非同期またはパイプライン経由で行うことはできません。

    小さなファイルの読み取りまたは書き込みを行う場合、2 回のラウンドトリップが重要です。

    1 回の往復 (ファイルを開く、ファイルを閉じる) には、メガバイトの大容量データの読み取りまたは書き込みと同じくらいの時間がかかります。コンピューティングジョブの開始時に入力ファイルまたは出力ファイルを 1 回開き、ジョブの全期間にわたって開いたままにしておく方が効率的です。

  • 並列処理を使用して、ラウンドトリップ時間の影響を軽減します。

  • 参照ファイルを a にバンドル.zipファイルを開きます。アプリケーションによっては、ほとんどが読み取り専用の小さな参照ファイルを大量に使用します。これらを束ねて.zipファイルを使用すると、1回の開閉で多くのファイルを読み取ることができます。

    -.zipフォーマットにより、個々のファイルにランダムにアクセスできます。

ディレクトリパフォーマンスの最適化

リスティングを実行する場合 (ls) 並行して変更される非常に大きなディレクトリ (100k を超えるファイル) では、Linux NFS クライアントが応答を返さずにハングアップすることがあります。この問題は Amazon Linux 2 カーネル 4.14、5.4、5.10 に移植されたカーネル 5.11 で修正されています。

可能であれば、ファイルシステム上のディレクトリ数を10,000未満に抑えることをお勧めします。可能な限りネストされたサブディレクトリを使用します。

ディレクトリを一覧表示する場合、ファイル属性はディレクトリ自体には保存されないため、必要でない場合は取得しないでください。

NFS を最適化する read_ahead_kb サイズ

NFS read_ahead_kb 属性は、シーケンシャル読み取り操作中に Linux カーネルが先読みまたはプリフェッチするキロバイト数を定義します。

5.4.* より前のバージョンの Linux カーネルでは、read_ahead_kb の値は、NFS_MAX_READAHEADrsize の値(マウントオプションで設定されたクライアント設定の読み取りバッファサイズ)を乗じて設定されます。推奨されるマウントオプションを使用する場合、この式は read_ahead_kb を15MBに設定します。

注記

Linux カーネルバージョン 5.4.* 以降、Linux NFS クライアントはデフォルトを使用しますread_ahead_kb128キロバイトの値。この値を 15 MB に増やすことをお勧めします。

で使用できる Amazon EFS マウントヘルパーは、amazon-efs-utilsバージョン 1.33.2 以降では、read_ahead_kb15に等しい値*rsizeファイルシステムをマウントした後は、または 15 MB。

Linux カーネル 5.4 以降では、マウントヘルパーを使用してファイルシステムをマウントしない場合は、手動で設定することを検討してくださいread_ahead_kb15 MB にするとパフォーマンスが向上します。ファイルシステムをマウントしたら、read_ahead_kb次のコマンドを使用します。コマンドを使用する前に、次の値を置き換えます。

  • 置換read-ahead-value-kb希望のサイズをキロバイト単位で指定します。

  • ファイルシステムのマウントポイントで efs-mount-point を置き換えます。

device_number=$(stat -c '%d' efs-mount-point) ((major = ($device_number & 0xFFF00) >> 8)) ((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00))) sudo bash -c "echo read-ahead-value-kb > /sys/class/bdi/$major:$minor/read_ahead_kb"

たとえば、次の例では、 read_ahead_kb サイズを 15 MB に設定します。

device_number=$(stat -c '%d' efs) ((major = ($device_number & 0xFFF00) >> 8)) ((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00))) sudo bash -c "echo 15000 > /sys/class/bdi/$major:$minor/read_ahead_kb"