パフォーマンス仕様
S3 Files は、キャパシティのプロビジョニングや管理を必要とせずに、ワークロードに合わせてスループットと IOPS を自動的にスケーリングします。このページでは、S3 Files のパフォーマンス特性について説明します。
パフォーマンスの概要
| ファイルシステムあたりの総読み取りスループット | 最大テラバイト/秒 |
| ファイルシステムあたりの総書き込みスループット | 1~5 GiB/秒 |
| S3 Files を使用した S3 バケットあたりの最大読み取り IOPS | 制限なし (複数のファイルシステムを同じバケットにアタッチ可能) |
| S3 Files を使用した S3 バケットあたりの最大書き込み IOPS | 制限なし (複数のファイルシステムを同じバケットにアタッチ可能) |
| ファイルシステムあたりの最大読み取り IOPS | 250,000 |
| ファイルシステムあたりの最大書き込み IOPS | 50,000 |
| クライアントあたりの最大読み取りスループット | 3 GiB/秒 |
S3 Files がパフォーマンスを実現する方法
S3 Files は 2 つのストレージ階層からデータを提供し、各オペレーションを最適な階層に自動的にルーティングします。
高性能ストレージ – アクティブに使用されているファイルデータとメタデータが存在するファイルシステム内の低レイテンシーストレージレイヤー。S3 Files は自動的にこのストレージを管理し、ファイルにアクセスするとデータをコピーし、設定可能な有効期限内に読み取られなかったデータを削除します。高性能ストレージに存在するデータに対してストレージ料金が発生します。
S3 から直接 – S3 Files は、ファイルのデータがファイルシステムの高性能ストレージに保存されていない場合と、データがファイルシステムの高性能ストレージに存在していても 1 MiB 以上の大きな読み取りを行う場合の 2 つのケースで、S3 バケットからファイルの読み取りを直接ストリーミングします。S3 バケットは高スループット用に最適化され、ファイルシステムの高性能ストレージレイヤーは低レイテンシーアクセス用に最適化されています。S3 バケットから直接データをストリーミングするこの階層化アプローチは、シーケンシャル読み取りのスループットが高く、分析、メディア処理、その他のストリーミングワークロードに適しています。S3 Files は、小さなファイル (デフォルトでは 128 KiB 未満) のデータをファイルシステムの高性能ストレージに非同期的にインポートし、後続の読み取り時に低レイテンシーアクセスを実現します。
S3 Files はこの 2 層モデルを自動的に適用するため、レイテンシーとスループットのどちらかを選択する必要はありません。小規模ファイルのワークロードでは、ファイルシステムのパフォーマンスが得られます。大規模ファイルのワークロードでは S3 のスループットが得られます。混合ワークロードでは両方が得られます。
読み取りパフォーマンス
読み取りスループットは、接続されたコンピューティングインスタンスの数と各インスタンス内の並列度に応じてスケーリングされます。クライアントあたりの最大読み取りスループットは 3 GiB/秒です。S3 Files は、最大テラバイト/秒の総読み取りスループットと、ファイルシステムあたり最大 250,000 読み取り IOPS をサポートします。
書き込みパフォーマンス
書き込みは高性能ストレージに対して行われ、即座に耐久性が確保されます。リージョンによって異なりますが、S3 Files はファイルシステムあたり 1~5 GiB/秒の総書き込みスループットと最大 50,000 の書き込み IOPS をサポートします。書き込みパフォーマンスは、ワークロードアクティビティに応じて伸縮自在にスケーリングされます。
ファイルシステム内のファイルを変更すると、S3 Files は約 60 秒間待機し、その時間内のファイルへの連続する変更を集約してから、S3 バケットにコピーします。つまり、同じファイルへの高速な連続書き込みは、個々の変更ごとに新しいオブジェクトバージョンを生成するのではなく、単一の S3 PUT リクエストにキャプチャされるため、S3 リクエストのコストとストレージコストを削減できます。S3 Files が変更内容を S3 バケットにコピーした後もファイルを変更し続けると、後続の変更が必要に応じてコピーされます。
最初のアクセスのレイテンシー
ディレクトリに初めてアクセスすると、S3 Files はそのディレクトリ内のすべてのファイルのメタデータをインポートし、インポート設定によっては、小さなファイルのデータをインポートします。したがって、最初のアクセスには後続のオペレーションよりも時間がかかります。一度インポートされると、その後のすべてのディレクトリ一覧表示やファイルアクセスは低レイテンシーで実行されます。
同期パフォーマンス
S3 Files は、ファイルシステムと S3 バケット間の変更をバックグラウンドで同期します。
S3 からの変更のインポート – 別のアプリケーションが S3 バケット内のオブジェクトを追加または変更すると、S3 Files はファイルシステムの変更を通常数秒以内に反映します。S3 Files は、ファイルシステムごとに 1 秒あたり最大 2,400 件のオブジェクト変更を処理し、インポートデータのスループットは 1 秒あたり最大 700 メガバイトです。
S3 への変更のエクスポート – ファイルシステムを介してファイルを書き込むと、S3 Files は変更を約 60 秒間バッチ処理して、連続する書き込みを単一の S3 オブジェクトバージョンに統合し、S3 リクエストとストレージバージョンのコストを削減します。バッチ処理ウィンドウの後、S3 Files はファイルを S3 バケットにコピーします。S3 Files は、ファイルシステムあたり 1 秒あたり最大 800 ファイルをエクスポートし、エクスポートデータのスループットは 1 秒あたり最大 2,700 メガバイトです。
| オペレーションメトリクス | 値 | Unit |
|---|---|---|
| S3 バケットからのインポート IOPS | 2,400 | ファイルシステムあたりの 1 秒あたりのオブジェクト数 |
| S3 バケットからのインポートスループット | 700 | メガバイト/秒 |
| S3 バケットへのエクスポート IOPS | 800 | ファイルシステムあたりの 1 秒あたりのファイル数 |
| S3 バケットへのエクスポートスループット | 2,700 | メガバイト/秒 |
Amazon S3 は、オブジェクトがキー名で識別されるフラットストレージ構造を使用します。S3 Files ではデータをディレクトリに整理できますが、S3 にはディレクトリというネイティブな概念がありません。ファイルシステムにディレクトリとして表示されるのは、S3 バケット内のオブジェクトのキーによって共有される共通のプレフィックスです。さらに、S3 オブジェクトは変更不可能であり、アトミックな名前変更をサポートしていません。その結果、ファイルの名前を変更したり移動したりすると、S3 Files は更新されたキーを使用して新しいオブジェクトにデータを書き込み、元のオブジェクトを削除する必要があります。ディレクトリの名前を変更したり移動したりすると、S3 Files は、そのプレフィックスを共有するすべてのオブジェクトに対してこのプロセスを繰り返す必要があります。したがって、数千万のファイルを含むディレクトリの名前を変更または移動すると、S3 へのリクエストコストと同期時間が大幅に増加します。100,000 ファイルのディレクトリ名を変更すると、S3 バケットに完全に反映されるまでに数分かかりますが、名前の変更はファイルシステム上ですぐに反映されます。詳細については、「名前変更および移動オペレーションの影響を理解する」を参照してください。
ワークロードによって同期レートよりも速く変更を生成する場合、S3 Files は変更をキューに入れ、順番に処理します。PendingExports CloudWatch メトリクスを使用して、保留中のエクスポートの数をモニタリングできます。詳細については、「Amazon CloudWatch による S3 Files のモニタリング」を参照してください。
パフォーマンスのモニタリング
Amazon CloudWatch を使用してファイルシステムのパフォーマンスをモニタリングできます。S3 Files は、DataReadBytes、DataWriteBytes、MetadataReadBytes、MetadataWriteBytes などのメトリクスを発行します。このメトリクスを使用して、スループットと IOPS を経時的に追跡できます。詳細については、「Amazon CloudWatch による S3 Files のモニタリング」を参照してください。