Amazon FSx for Lustre のパフォーマンス - FSx for Lustre

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

Amazon FSx for Lustre のパフォーマンス

Amazon FSx for Lustre は、一般的な高性能ファイルシステムである Lustre をベースに構築されており、ファイルシステムのサイズに応じて直線的に増加するスケールアウトパフォーマンスを提供します。Lustre ファイルシステムは、複数のファイルサーバおよびディスクにわたって水平方向に拡張できます。このスケーリングにより、各クライアントは各ディスクに保存されているデータに直接アクセスして、従来のファイルシステムに存在するボトルネックの多くを取り除くことができます。Amazon FSx for Lustre は、Lustre のスケーラブルなアーキテクチャに基づいて構築され、多数のクライアントで高いレベルのパフォーマンスをサポートします。

FSx for Lustre のファイルシステム用のしくみ

各 FSx for Lustre ファイルシステムは、クライアントが通信するファイルサーバと、データを格納する各ファイルサーバに接続されたディスクのセットで設定されます。各ファイルサーバは、高速のインメモリキャッシュを使用して、最も頻繁にアクセスされるデータのパフォーマンスを向上させます。HDD ベースのファイルシステムは、SSD ベースのリードキャッシュを使用してプロビジョニングして、最も頻繁にアクセスされるデータのパフォーマンスをさらに向上させることができます。クライアントがメモリ内キャッシュまたは SSD キャッシュに格納されているデータにアクセスする場合、ファイルサーバーはディスクから読み取る必要がないため、レイテンシーが減少し、ドライブ可能なスループットの合計量が増加します。次の図表は、書き込み操作、ディスクから実行される読み取り操作、およびインメモリまたは SSD キャッシュから実行される読み取り操作のパスを示しています。


        FSx for Lustre パフォーマンスアーキテクチャ。

ファイルサーバーのインメモリまたは SSD キャッシュに保存されているデータを読み取る場合、ファイルシステムのパフォーマンスはネットワークスループットによって決まります。ファイルシステムにデータを書き込むとき、またはインメモリキャッシュに保存されていないデータを読み取る場合、ファイルシステムのパフォーマンスは、ネットワークスループットとディスクスループットの低い方によって決まります。

SSD キャッシュを使用して HDD Lustre ファイルシステムをプロビジョンすると、Amazon FSx はファイルシステムの HDD ストレージ容量の 20% に自動的にサイズ変更される SSD キャッシュを作成します。これにより、頻繁にアクセスされるファイルに対して、サブミリ秒のレイテンシーと高い IOPS が提供されます。

ファイルシステムのパフォーマンスの集計

FSx for Lustre ファイルシステムがサポートするスループットは、そのストレージ容量に比例します。Amazon FSx for Lustre ファイルシステムでは、数百 GBps のスループットと数百万の IOPS に拡張できます。Amazon FSx for Lustre では、何千ものコンピュートインスタンスから同じファイルまたはディレクトリへの同時アクセスもサポートしています。このアクセスにより、ハイパフォーマンスコンピューティング (HPC) で一般的な手法であるアプリケーションメモリからストレージへの迅速なデータチェックポイントが可能になります。ファイルシステムを作成した後、いつでも必要なときにストレージ容量とスループットキャパシティを増やすことができます。詳細については、「ストレージ容量の管理」を参照してください。

FSx for Lustre ファイルシステムは、ネットワーク I/O クレジットメカニズムを使用してバースト読み取りスループットの値を提供し、平均帯域幅使用率に基づいて、ネットワーク帯域幅を割り当てます。インスタンスでは、帯域幅がベースライン帯域幅を下回るとクレジットを獲得し、クレジットをネットワークデータ転送を実行するときに使用できます。

次の表に、FSx for Lustre デプロイオプションが設計されているパフォーマンスを示します。

SSD ストレージオプションのファイルシステムパフォーマンス
デプロイタイプ ネットワークスループット (プロビジョニングされたストレージの MB / 秒 / TiB) ネットワーク IOPS (プロビジョニングされたストレージの IOPS / TiB) キャッシュストレージ (GiB の RAM / TiB のストレージのプロビジョニング) ファイルオペレーションあたりのディスクレイテンシー (ミリ秒、P50) ディスクスループット (MBps/TiB、プロビジョニングされたストレージまたは SSD キャッシュ)

[Baseline] (ベースライン)

[Burst] (バースト)

[Baseline] (ベースライン)

バースト

SCRATCH_2 200 1300

数万規模のベースライン

数十万規模のバースト

6.7

メタデータ: sub-ms

データ: sub-ms

200 (読み取り)

100 (書き込み)

PERSISTENT-125 320 1300 3.4

125

500
PERSISTENT-250 640 1300 6.8

250

500
PERSISTENT-500 1300 13.7 500

PERSISTENT-1000 2600 27.3 1000
HDD ストレージオプションのファイルシステムパフォーマンス
デプロイタイプ ネットワークスループット (MB / 秒 / TiB のストレージまたは SSD キャッシュのプロビジョニング) ネットワーク IOPS (プロビジョニングされたストレージの IOPS / TiB) キャッシュストレージ (GiB の RAM / TiB のストレージのプロビジョニング) ファイルオペレーションあたりのディスクレイテンシー (ミリ秒、P50) ディスクスループット (MBps/TiB、プロビジョニングされたストレージまたは SSD キャッシュ)

[Baseline] (ベースライン)

[Burst] (バースト)

[Baseline] (ベースライン)

バースト

PERSISTENT-12
HDD ストレージ 40 375*

数万規模のベースライン

数十万規模のバースト

0.4 memory

メタデータ: sub-ms

データ: 一桁ミリ秒

12

80 (読み取り)

50 (書き込み)

SSD キャッシュの読み取り

200

1,900

200 SSD キャッシュ

データ: sub-ms

200

-

PERSISTENT-40
HDD ストレージ 150 1,300*

数万規模のベースライン

数十万規模のバースト

1.5

メタデータ: sub-ms

データ: 一桁ミリ秒

40

250 (読み取り)

150 (書き込み)

SSD キャッシュの読み取り

750

6500

200 SSD cache

データ: sub-ms

200

-

旧世代の SSD ストレージオプションのファイルシステムパフォーマンス
デプロイタイプ ネットワークスループット (プロビジョニングされたストレージの TiB あたり MB / 秒、) ネットワーク IOPS (プロビジョニングされたストレージの TiB あたりの IOPS) キャッシュストレージ (プロビジョニングされたストレージの TiB あたり GiB) ファイルオペレーションあたりのディスクレイテンシー (ミリ秒、P50) ディスクスループット (プロビジョニングされたストレージまたは SSD キャッシュの TiB あたり MB / 秒、プロビジョニング)

ベースライン

[Burst] (バースト)

[Baseline] (ベースライン)

[Burst] (バースト)

PERSISTENT-50 250 1,300*

数万規模のベースライン

数十万規模のバースト

2.2 RAM

メタデータ: sub-ms

データ: sub-ms

50

240

PERSISTENT-100 500 1,300* 4.4 RAM 100 240
PERSISTENT-200 750 1,300* 8.8 RAM 200 240
注記

*以下の AWS リージョン の永続ファイルシステムは、ストレージの TiB あたり最大 530 MB / 秒のネットワークバーストを提供します: アフリカ (ケープタウン)、アジアパシフィック (香港)、アジアパシフィック (大阪)、アジアパシフィック (シンガポール)、カナダ (中部)、ヨーロッパ (フランクフルト)、ヨーロッパ (ロンドン)、ヨーロッパ (ミラノ)、ヨーロッパ (ストックホルム)、中東 (バーレーン)、南米 (サンパウロ)、中国、米国西部 (ロサンゼルス)。

注記

FSx for Lustre SCRATCH_1 デプロイオプションは 200MB / 秒 / TiB をサポートするように設計されました。

例: ベースラインとバーストスループットの集計

次の例は、ストレージ容量とディスクスループットがファイルシステムのパフォーマンスに与える影響を示しています。

ストレージ単位あたりのスループットあたり 4.8TiB、50 MB / 秒のスループットを持つ永続ファイルシステムでは、総ベースラインのディスクスループットが 240 MB / 秒、バーストディスクスループットは 1.152 GB / 秒 になります。

ファイルシステムのサイズについては、Amazon FSx for Lustre は、ファイルオペレーションに対して一貫したミリ秒未満のレイテンシーを提供します。

ファイルシステムストレージレイアウト

Lustre のすべてのファイルデータは、オブジェクトストレージターゲット(OST) と呼ばれるストレージボリュームに格納されます。すべてのファイルメタデータ (ファイル名、タイムスタンプ、アクセス許可などを含む) は、メタデータターゲット (MDT) と呼ばれるストレージボリュームに保存されます。Amazon FSx for Lustre ファイルシステムは、1 つの MDT と複数の OST で設定されます。各 OST のサイズは、ファイルシステムの展開タイプに応じて、約 1~2 TiB です。Amazon FSx for Lustre は、ストレージ容量とスループットと IOPS 負荷のバランスをとるために、ファイルシステムを設定する OST にファイルデータを分散します。

ファイルシステムを設定する MDT および OST のストレージ使用状況を表示するには、ファイルシステムがマウントされているクライアントから次のコマンドを実行します。

lfs df -h mount/path

このコマンドの出力は以下のようになります。

UUID bytes Used Available Use% Mounted on mountname-MDT0000_UUID 68.7G 5.4M 68.7G 0% /fsx[MDT:0] mountname-OST0000_UUID 1.1T 4.5M 1.1T 0% /fsx[OST:0] mountname-OST0001_UUID 1.1T 4.5M 1.1T 0% /fsx[OST:1] filesystem_summary: 2.2T 9.0M 2.2T 0% /fsx

ファイルシステム内のデータのストライピング

ファイルストライピングにより、ファイルシステムのスループットパフォーマンスを最適化できます。Amazon FSx for Lustre は、データがすべてのストレージサーバーから確実に提供されるように、OST 間で自動的にファイルを分散します。複数の OST にまたがるファイルのストライピング方法を設定することで、同じ概念をファイルレベルで適用できます。

ストライピングとは、ファイルを複数のチャンクに分割して、異なる OST に格納できることを意味します。ファイルが複数の OST にストライプされると、ファイルへの読み取りまたは書き込みリクエストがそれらの OST にまたがって分散され、アプリケーションがそれを介して処理できる総スループットまたは IOPS が向上します。

Amazon FSx for Lustre ファイルシステムのデフォルトのレイアウトを次に示します。

  • 2020 年 12 月 18 日より前に作成されたファイルシステムでは、デフォルトのレイアウトでストライプカウントが 1 に指定されています。つまり、異なるレイアウトを指定しない限り、標準の Linux ツールを使用して Amazon FSx for Lustre で作成された各ファイルは 1 つのディスクに格納されます。

  • 2020 年 12 月 18 日以降に作成されたファイルシステムのデフォルトレイアウトは、プログレッシブファイルレイアウトであり、サイズが 1 GiB 未満のファイルは 1 つのストライプに保存され、大きいファイルにはストライプカウント 5 が割り当てられます。

  • 2023 年 8 月 25 日以降に作成されたファイルシステムのデフォルトレイアウトは、プログレッシブファイルのレイアウト で説明されている 4 コンポーネントのプログレッシブファイルレイアウトです。

  • すべてのファイルシステムでは、作成日に関係なく、Amazon S3 からインポートされたファイルはデフォルトのレイアウトを使用せずに、ファイルシステムの ImportedFileChunkSize パラメータにあるレイアウトを使用します。ImportedFileChunkSize より大きい S3 インポートされたファイルは、(FileSize / ImportedFileChunksize) + 1 のストライプカウントで複数の OST に格納されます。ImportedFileChunkSize のデフォルト値は 1 GiB です。

lfs getstripe コマンドを使用してファイルまたはディレクトリのレイアウト設定を表示できます。

lfs getstripe path/to/filename

このコマンドは、ファイルのストライプカウント、ストライプサイズ、およびストライプオフセットを報告します。ストライプカウントは、ファイルがストライプされている OST の数です。ストライプサイズは、OST に保存されている連続データの量です。ストライプオフセットは、ファイルがストライプされる最初の OST のインデックスです。

ストライピング設定の変更

ファイルのレイアウトパラメータは、ファイルが最初に作成されたときに設定されます。lfs setstripe コマンドを使用すると、指定したレイアウトで新しい空のファイルを作成します。

lfs setstripe filename --stripe-count number_of_OSTs

lfs setstripe コマンドは、新しいファイルのレイアウトにのみ影響します。これを使用して、ファイルを作成する前にファイルのレイアウトを指定します。ディレクトリのレイアウトを定義することもできます。ディレクトリに設定されると、そのレイアウトはそのディレクトリに追加されたすべての新しいファイルに適用されますが、既存のファイルには適用されません。作成した新しいサブディレクトリも新しいレイアウトを継承し、そのサブディレクトリ内に作成した新しいファイルまたはディレクトリに適用されます。

既存のファイルのレイアウトを変更するには、lfs migrate コマンドを使用します。このコマンドは、必要に応じてファイルをコピーし、コマンドで指定したレイアウトに従ってコンテンツを配信します。例えば、ファイルに追加されたファイルやサイズが増加しても、ストライプカウントは変更されないため、ファイルのレイアウトを変更するにはそれらを移行する必要があります。または、lfs setstripe コマンドを使用して、レイアウトを指定し、元のコンテンツを新しいファイルにコピーし、新しいファイルの名前を変更して元のファイルと置き換えます。

デフォルトのレイアウト設定がワークロードに最適ではない場合があります。例えば、数十個の OST と多数のマルチギガバイトファイルがあるファイルシステムでは、デフォルトのストライプカウント値である 5 OST を超えるファイルをストライピングすることで、パフォーマンスが向上します。ストライプカウントの少ない大きなファイルを作成すると、I/O パフォーマンスのボトルネックが発生し、OST がいっぱいになる可能性もあります。この場合、ファイルのストライプカウントが多いディレクトリを作成できます。

大きなファイル (特にサイズが 1 ギガバイトを超えるファイル) のストライプレイアウトを設定することは、次の理由で重要です。

  • 大きなファイルの読み取りと書き込み時に、複数の OST とその関連サーバーが IOPS、ネットワーク帯域幅、および CPU リソースを提供できるようにすることで、スループットが向上します。

  • OST の小さなサブセットが全体的なワークロードパフォーマンスを制限するホットスポットになる可能性を低減します。

  • 1 つの大きなファイルが OST を埋め尽くし、ディスクフルエラーを引き起こす可能性を防ぎます。

すべてのユースケースに単一の最適なレイアウト設定はありません。ファイルレイアウトに関する詳細なガイダンスについては、「Lustre.org ドキュメント」の「ファイルレイアウト (ストライピング) と空き領域の管理」を参照してください。一般的なガイドラインを次に示します。

  • ストライプのレイアウトは、大きなファイル、特にファイルのサイズが数百メガバイト以上のユースケースで最も重要です。このため、新しいファイルシステムのデフォルトのレイアウトでは、サイズが 1 GiB を超えるファイルに対してストライプカウント 5 が割り当てられます。

  • ストライプカウントは、大きなファイルをサポートするシステム用に調整する必要があるレイアウトパラメータです。ストライプカウントは、ストライプファイルのチャンクを保持する OST ボリュームの数を指定します。例えば、ストライプ数が 2、ストライプサイズが 1 MiB の場合、Lustre はファイルの代替の 1 MiB チャンクを 2 つの OST のそれぞれに書き込みます。

  • 有効なストライプカウントは、実際の OST ボリュームの数と指定したストライプカウント値のうち小さい方です。特別なストライプカウント値の -1 を使用できます。これは、ストライプをすべての OST ボリュームに配置する必要があることを示します。

  • 特定の操作では、ファイルが小さすぎてすべての OST ボリュームの容量を消費できない場合でも、Lustre はレイアウト内のすべての OST へのネットワークラウンドトリップを必要とするため、小さなファイルに対して大きなストライプカウントを設定することは最適ではありません。

  • プログレッシブファイルレイアウト (PFL) を設定して、ファイルのレイアウトをサイズに応じて変更することができます。PFL 設定では、各ファイルに対して明示的に設定しなくても、大小のファイルを組み合わせたファイルシステムの管理を簡素化できます。詳細については、「プログレッシブファイルのレイアウト」を参照してください。

  • ストライプサイズは、デフォルトで 1 MiB です。ストライプオフセットを設定すると、特殊な状況では便利ですが、通常は指定しないままにしておき、デフォルトを使用するのが最善です。

プログレッシブファイルのレイアウト

ディレクトリのプログレッシブファイルレイアウト (PFL) 設定を指定して、小さなファイルと大きなファイルに対して異なるストライプ設定を指定してから、それを入力できます。例えば、データが新しいファイルシステムに書き込まれる前に、最上位ディレクトリに PFL を設定できます。

PFL 設定を指定するには、lfs setstripe コマンドで -E オプションを使用して、以下のコマンドのように、異なるサイズのファイルのレイアウトコンポーネントを指定します。

lfs setstripe -E 100M -c 1 -E 10G -c 8 -E 100G -c 16 -E -1 -c 32 /mountname/directory

このコマンドは、4 つのレイアウトコンポーネントを設定します。

  • 最初のコンポーネント (-E 100M -c 1) は、最大 100 MiB のファイルのストライプカウント値 1 を示します。

  • 2 番目のコンポーネント (-E 10G -c 8) は、サイズが 10 GiB までのファイルのストライプカウントを 8 であることを示します。

  • 3 番目のコンポーネント (-E 100G -c 16) は、サイズが 100 GiB までのファイルのストライプカウントを 16 であることを示します。

  • 4 番目の要素 (-E -1 -c 32) は、100 GiB を超えるファイルのストライプカウントが 32 であることを示しています。

重要

PFL レイアウトで作成されたファイルにデータを追加すると、そのレイアウトコンポーネントがすべて入力されます。例えば、上記の 4 コンポーネントコマンドで、1 MiB のファイルを作成し、その末尾にデータを追加すると、ファイルのレイアウトが展開され、ストライプカウントが -1 になります。これは、システム内のすべての OST を指します。これは、データがすべての OST に書き込まれるという意味ではありませんが、ファイル長の読み取りなどのオペレーションは、すべての OST に並行してリクエストを送信し、ファイルシステムに大きなネットワークロードを追加します。

したがって、その後にデータを追加できる小またはミディアムの長さのファイルのストライプカウントを制限するように注意してください。通常、ログファイルは新しいレコードを追加することで増加するため、Amazon FSx for Lustre では、親ディレクトリで指定されたデフォルトのストライプ設定に関係なく、追加モードで作成されたファイルに、デフォルトのストライプカウント 1 が割り当てられます。

2023 年 8 月 25 日以降に作成された Amazon FSx for Lustre ファイルシステムのデフォルトの PFL 設定は、次のコマンドを実行して設定します。

lfs setstripe -E 100M -c 1 -E 10G -c 8 -E 100G -c 16 -E -1 -c 32 /mountname

中~大規模ファイルへの同時アクセスが多いワークロードを持つお客様は、前述の 4 つのコンポーネントのレイアウト例で示したように、ファイルサイズが小さい場合はストライプカウントが多いレイアウトを使用し、ファイルサイズが最大の場合はすべての OST にまたがるストライピングのレイアウトを使用することでメリットが得られます。

パフォーマンスと使用状況のモニタリング

毎分、Amazon FSx for Lustre は、各ディスク (MDT および OST) の使用状況メトリクスを Amazon に発行します CloudWatch。

ファイルシステムの総使用状況の詳細を表示するには、各メトリクスの Sum 統計を調べます。例えば、DataReadBytes 統計は、ファイルシステム内のすべての OST で見られる総読み取りスループットを報告します。同様に、FreeDataStorageCapacity 統計は、ファイルシステム内のファイルデータに使用可能なストレージ容量の合計を報告します。

ファイルシステムのパフォーマンスのモニタリングの詳細については、「Amazon FSx for Lustre のモニタリング」を参照してください。

パフォーマンスのヒント

Amazon FSx for Lustre を使用する場合は、次のパフォーマンスのヒントに留意してください。サービスの制限については、「クォータ」を参照してください。

  • 平均 I/O サイズ - Amazon FSx for Lustre はネットワークファイルシステムであるため、各ファイルオペレーションはクライアントと Amazon FSx for Lustre の間でラウンドトリップされるため、レイテンシーのオーバーヘッドが小さくなります。このオペレーションあたりのレイテンシーのため、通常は平均 I/O サイズの増加に応じて全体のスループットが向上します。大量のデータにオーバーヘッドが分散するためです。

  • リクエストモデル -ファイルシステムへの非同期書き込みを有効にすることで、保留中の書き込みオペレーションは、Amazon FSx for Lustre に非同期で書き込まれる前に、Amazon EC2 インスタンスでバッファリングされます。非同期書き込みは、通常レイテンシーが低くなります。非同期書き込みを実行するとき、カーネルはキャッシュの追加のメモリを使用します。同期書き込みを有効にしているファイルシステムは、Amazon FSx for Lustre に同期リクエストを発行します。各オペレーションはクライアントと Amazon FSx for Lustre の間のラウンドトリップを通過します。

    注記

    選択したリクエストモデルでは、整合性 (複数の Amazon EC2 インスタンスを使用している場合) と速度にトレードオフがあります。

  • Amazon EC2 インスタンス - 多数の読み取りおよび書き込みオペレーションを実行するアプリケーションは、そうでないアプリケーションよりも多くのメモリまたはコンピューティング容量ーを必要とします。コンピューティングを多用するワークロードのために Amazon EC2 インスタンスを起動するときは、アプリケーションが必要とする量のリソースを持つインスタンスタイプを選択します。Amazon FSx for Lustre ファイルシステムのパフォーマンス特性は、Amazon EBS 最適化インスタンスの使用に依存しません。

  • 最適なパフォーマンスを得るために推奨されるクライアントインスタンスの調整

    1. すべてのクライアントインスタンスタイプとサイズでは、次の調整を適用することをお勧めします。

      sudo lctl set_param osc.*.max_dirty_mb=64
    2. メモリが 64 GiB を超えるクライアントインスタンスタイプでは、次の調整を適用することをお勧めします。

      lctl set_param ldlm.namespaces.*.lru_max_age=600000
    3. 64 vCPU コアを超えるクライアントインスタンスタイプでは、次の調整を適用することをお勧めします。

      echo "options ptlrpc ptlrpcd_per_cpt_max=32" >> /etc/modprobe.d/modprobe.conf echo "options ksocklnd credits=2560" >> /etc/modprobe.d/modprobe.conf # reload all kernel modules to apply the above two settings sudo reboot

      クライアントをマウントした後、次の調整を適用する必要があります。

      sudo lctl set_param osc.*OST*.max_rpcs_in_flight=32 sudo lctl set_param mdc.*.max_rpcs_in_flight=64 sudo lctl set_param mdc.*.max_mod_rpcs_in_flight=50

    注: lctl set_param は再起動すると持続しないことが知られています。これらのパラメータはクライアント側から永続的に設定することはできないため、ブート cron ジョブを実装して、お勧めの調整を使用して設定することをお勧めします。

  • OST 間でのワークロードバランス - 場合によっては、ワークロードによってファイルシステムが提供できる総スループット (ストレージ 1 TiB あたり 200 MB / 秒) が駆動されないことがあります。その場合は、 CloudWatch メトリクスを使用して、ワークロードの I/O パターンの不均衡によってパフォーマンスが影響を受けるかどうかをトラブルシューティングできます。これが原因かどうかを確認するには、Amazon FSx for Lustre の最大 CloudWatch メトリクスを確認します。

    場合によっては、この統計は 240 MBps のスループット (単一の 1.2 TiB Amazon FSx for Lustre ディスクのスループットキャパシティ) 以上の負荷を示します。このような場合、ワークロードはディスク全体に均等に分散されません。この場合、lfs setstripe コマンドを実行して、ワークロードが頻繁にアクセスしているファイルのストライピングを変更します。最適なパフォーマンスを得るには、ファイルシステムを設定するすべての OST で、スループット要件が高いファイルをストライプ化します。

    ファイルをデータリポジトリからインポートする場合は、別の方法を使用して、高スループットファイルを OST 全体で均等にストライプできます。そのためには、次の Amazon FSx for Lustre ファイルシステムを作成するときの ImportedFileChunkSize パラメータを変更できます。

    例えば、ワークロードが 7.0 TiB ファイルシステム (6 x 1.17 TiB OST で設定されている) を使用し、2.4 GiB ファイル間で高いスループットを駆動する必要があるとします。この場合、ImportedFileChunkSize の値を (2.4 GiB / 6 OSTs) = 400 MiB に設定できます。これにより、ファイルがファイルシステムの OST 全体に均等に分散されます。