Amazon FSx for Lustre ファイルシステムのパフォーマンスを向上させたいと思っています。
解決方法
ファイルシステムのサイズを増やす
FSx for Lustre ファイルシステムがサポートするスループットは、そのストレージ容量に比例します。
スループット容量 = ストレージ容量 (TiB)\ * 単位あたりのストレージスループット (MBps)
たとえば、ストレージ容量が 4.8 TiB で、ストレージ単位あたり TiB あたり 50 MBps のスループットを持つ永続ファイルシステムでは、次のことが可能になります。
- 240 Mbps のベースラインの総ディスクスループット
- 1.152 GiBps のバーストディスクスループット
オブジェクトストレージターゲット (OST) がほぼいっぱいになると、ファイルシステムの読み取りまたは書き込み時にファイルシステムがハングアップしたり、停止したりすることがあります。この場合は、ファイルシステムのサイズを大きくしてください。
不均衡な OST のトラブルシューティング
FSx for Lustreは、ファイルシステムにデータを格納する OST で構成される分散ファイルシステムです。OST の数と各 OST のサイズを確認するには、クライアントから次のコマンドを実行します。
$lfs df -h
バランスが取れていないファイルシステムの場合、出力は次のようになります。
UUID bytes Used Available Use% Mounted on
testfs-MDT0000_UUID 4.4G 214.5M 3.9G 4% /mnt/testfs[MDT:0]
testfs-MDT0001_UUID 4.4G 144.5M 4.0G 4% /mnt/testfs[MDT:1]
testfs-OST0000_UUID 2.0T 751.3G 1.1G 37% /mnt/testfs[OST:0]
testfs-OST0001_UUID 2.0T 755.3G 1.1G 37% /mnt/testfs[OST:1]
testfs-OST0002_UUID 2.0T 1.9T 55.1M 99% /mnt/testfs[OST:2] <-
testfs-OST0003_UUID 2.0T 751.3G 1.1G 37% /mnt/testfs[OST:3]
testfs-OST0004_UUID 2.0T 747.3G 1.1G 37% /mnt/testfs[OST:4]
testfs-OST0005_UUID 2.0T 743.3G 1.1G 36% /mnt/testfs[OST:5]
filesystem summary: 11.8T 5.5T 5.7T 46% /mnt/lustre
1 つの OST で利用可能なストレージは、他の OST よりも比較的小さい場合や大きい場合があります。これは、次のいずれかの条件が原因で発生します。
- 新しい OST が追加されたが、最適化は完了していない。
- デフォルトのストライプカウントは 1 で、ファイルは 1 つの OST に配置されます。
複数の OST がいっぱいの場合は、ファイルシステムのストレージ容量を増やしてください。いっぱいの OST が少数しかない場合は、OST を再調整します。
また、ストライピング構成を調整してスペースを解放し、パフォーマンスを向上させてください。ファイルのレイアウトをサイズに合わせて変更できる [プログレッシブファイルレイアウト (PFL)] 構成を設定できます。たとえば、レイアウト構成を指定するには、[lfs setstripe] コマンドと [-E] オプションを使用して、さまざまなサイズのファイルのレイアウトコンポーネントを指定します。
lfs setstripe -E 100M -c 1 -E 10G -c 8 -E 100G -c 16 -E -1 -c 32 /mountname/directory
[注記:]
- PFL はサイズが小さいファイルには役立たない場合があります。
- [lfs setstripe] コマンドを使用すると、新しいファイルとフォルダにのみストライプ構成を設定できます。[lfs migrate] コマンドを使用して、既存のファイルまたはフォルダーを削除する必要があります。
- シーケンシャル読み取りでは、ストライピングのメリットが得られない場合があります。
計算量の多いワークロードにはより大きなインスタンスを使用する
負荷の高いワークロードの場合は、メモリまたはコンピューティング容量の大きいインスタンスを選択してください。
チューニングのベストプラクティスを次に示します。
1. 大規模なクライアントインスタンスをチューニングして最適なパフォーマンスを実現:
メモリが 64 GiB を超えるクライアントインスタンスタイプには、次のチューニングを適用にしてください。
lctl set_param ldlm.namespaces.*.lru_max_age=600000
64 個を超える CPU コアのクライアントインスタンスタイプには、次のチューニングを適用してください。
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
2. クライアントがマウントされたら、次のチューニングを適用します。
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] コマンドは再起動しても持続しません。これらのパラメータをクライアント側から永続的に設定することはできません。そのため、[boot cron] ジョブを実装して、推奨されるチューニングで構成を設定するのがベストプラクティスです。
関連情報
ベースラインとバーストスループットの集計
パフォーマンスのヒント