この記事は、2019年11月にDell EMC HPCおよびAI Innovation LabのNirmala Sundararajanによって作成されました。
「HPC BeeGFS高性能ストレージ向けDell EMC Readyソリューション(英語)」
表1および2では、管理サーバーとメタデータ/ストレージ サーバーのハードウェア仕様についてそれぞれ説明しています。表3では、ソリューションに使用されるソフトウェア バージョンについて説明しています。
表1:PowerEdge R640構成(管理サーバー) | |
---|---|
Server | Dell EMC PowerEdge R640 |
CPU | 2 インテルXeon Gold 5218 2.3 GHz、16コア |
メモリー | 12 8GB DDR4 2666MT/s DIMM - 96GB |
ローカル ディスク | 6 300GB 15K RPM SAS 2.5インチHDD |
RAIDコントローラー | PERC H740P内蔵RAIDコントローラー |
帯域外管理 | iDRAC9 Enterprise with Lifecycle Controller |
PSU | デュアル1100W電源供給ユニット |
BIOSのバージョン | 2.2.11 |
オペレーティングシステム | CentOS™ 7.6 |
カーネル バージョン | 3.10.0-957.27.2.el7.x86_64 |
表2:PowerEdge R740xd構成(メタデータおよびストレージ サーバー) | |
---|---|
Server | Dell EMC PowerEdge R740xd |
CPU | 2 インテルXeon Platinum 8268 CPU @ 2.90GHz、24コア |
メモリー | 12 32GB DDR4 2933MT/s DIMM - 384GB |
BOSSカード | 2 240GB M.2 SATA SSD(OS用RAID 1) |
ローカル ドライブ | 24 Dell Express Flash NVMe P4600 1.6TB 2.5インチU.2 |
Mellanox EDRカード | 2 Mellanox ConnectX-5 EDRカード(スロット1および8) |
帯域外管理 | iDRAC9 Enterprise with Lifecycle Controller |
PSU | デュアル2000W電源供給ユニット |
表3:ソフトウェア構成(メタデータおよびストレージ サーバー) | |
---|---|
BIOS | 2.2.11 |
CPLD | 1.1.3 |
オペレーティングシステム | CentOS™ 7.6 |
カーネル バージョン | 3.10.0-957.el7.x86_64 |
iDRAC | 3.34.34.34 |
システム管理ツール | OpenManage Server Administrator 9.3.0-3407_A00 |
Mellanox OFED | 4.5-1.0.1.0 |
NVMe SSD | QDV1DP13 |
*インテル® データセンター ツール | 3.0.19 |
BeeGFS | 7.1.3 |
Grafana | 6.3.2 |
InfluxDB | 1.7.7 |
IOzoneベンチマーク | 3.487 |
上の例では、同じクライアントに2つの異なるファイル システムがマウントされています。このテストでは、32個のC6420ノードがクライアントとして使用されました。$ cat /etc/beegfs/beegfs-mounts.conf
/mnt/beegfs-medium /etc/beegfs/beegfs-client-medium.conf
/mnt/beegfs-small /etc/beegfs/beegfs-client-small.conf
図8は、テストベッドを示しています。NUMAゾーンへのInfiniBand接続がハイライトされています。 各サーバーには2つのIPリンクがあり、NUMA 0ゾーンを介したトラフィックはインターフェイスIB0によって処理され、NUMA 1ゾーンを介したトラフィックはインターフェイスIB1によって処理されます。# cat /proc/sys/kernel/numa_balancing
0
表4:クライアント構成 | |
---|---|
クライアント | 32 Dell EMC PowerEdge C6420コンピュート ノード |
BIOS | 2.2.9 |
CPU | 2 Intel Xeon Gold 6148 CPU @ 2.40 GHz(プロセッサーあたり20コア) |
メモリー | 12 16GB DDR4 2666 MT/s DIMM - 192GB |
BOSSカード | 2 120GB M.2ブート ドライブ(OS用RAID 1) |
オペレーティングシステム | Red Hat Enterprise Linux Serverリリース7.6 |
カーネル バージョン | 3.10.0-957.el7.x86_64 |
内部接続 | 1 Mellanox ConnectX-4 EDRカード |
OFEDのバージョン | 4.5-1.0.1.0 |
シーケンシャルな読み取りおよび書き込みを評価するため、IOzoneベンチマークがシーケンシャルな読み取りおよび書き込みモードで使用されました。これらのテストは、1つのスレッドから、2の累乗(最大1024スレッド)で増加する複数のスレッド数に対して実施されました。このテストでは、スレッドあたり1つのファイル、またはNクライアント - Nファイル(N-N)の場合に作動するため、各スレッド数では同じ数のファイルが生成されました。プロセスが、ラウンド ロビンまたは循環式で32個の物理クライアント ノードに分散されるため、リクエストが均等に分散され、ロード バランシングが行われます。8TBの合計ファイル サイズが選択され、特定のテスト内のスレッド数に均等に分けられました。合計ファイル サイズは、サーバーとBeeGFSクライアントからのキャッシュの影響を最小限に抑えるのに十分な大きさが選択されました。IOzoneは、操作間の境界を調整できるように、書き込みおよび読み取り(-i 0、-i 1)の組み合わせモードで実行されました。このテストと結果では、実行ごとに1MiBのレコード サイズを使用しました。シーケンシャルなN-Nテストに使用されたコマンドは次のとおりです。
Sequential Writes and Reads: iozone -i 0 -i 1 -c -e -w -r 1m -I -s $Size -t $Thread -+n -+m /path/to/threadlist
また、OSキャッシュは、次のコマンドを実行して、反復の間、および書き込みテストと読み取りテストの間にクライアント ノードでドロップまたはクリーニングされました。
# sync&echo 3 > /proc/sys/vm/drop_caches
Beegfsのデフォルトのストライプ数は4です。ただし、ファイルあたりのチャンク サイズとターゲット数は、ディレクトリー単位で構成できます。これらすべてのテストでは、BeeGFSストライプ サイズは2MBで、ストライプ数は3で選択されました。これは、次に示すようにNUMAゾーンごとに3つのターゲットがあるためです。
$ beegfs-ctl --getentryinfo --mount=/mnt/beegfs /mnt/beegfs/benchmark --verbose
EntryID: 0-5D9BA1BC-1
ParentID: root
Metadata node: node001-numa0-4 [ID: 4]
Stripe pattern details:
+ Type: RAID0
+ Chunksize: 2M
+ Number of storage targets: desired: 3
+ Storage Pool: 1 (Default)
Inode hash path: 7/5E/0-5D9BA1BC-1
透過的な大きなページが無効になり、次のチューニング オプションがメタデータ サーバーとストレージ サーバーに配置されました。
- vm.dirty_background_ratio = 5
- vm.dirty_ratio = 20
- vm.min_free_kbytes = 262144
- vm.vfs_cache_pressure = 50
- vm.zone_reclaim_mode = 2
- kernel.numa_balancing = 0
上記に加えて、次のBeeGFSチューニング オプションが使用されました。
図9では、ピーク リード パフォーマンスが1024スレッドで132 GB/秒、ピーク ライト パフォーマンスが256スレッドで121 GB/秒であることが分かります。各ドライブは、3.2 GB/秒のピーク リード パフォーマンスと1.3 GB/秒のピーク ライト パフォーマンスを実現できます。これにより、理論上のピークは読み取りで422 GB/秒、書き込みで172 GB/秒となります。ただし、ここではネットワークが制限要因です。セットアップには、ストレージ サーバー用にInfiniBand EDRリンクが合計11個あります。各リンクは、理論上12.4 GB/秒のピーク パフォーマンスを提供できるため、これにより理論上136.4 GB/秒のピーク パフォーマンスが可能です。達成したピーク リード パフォーマンスおよびライト パフォーマンスは、理論上のピーク パフォーマンスのそれぞれ97%と89%です。
1つのスレッドのライト パフォーマンスは最大3 GB/秒で、読み取りは最大3 GB/秒であることが確認されています。ライト パフォーマンスは直線的に向上し、ピークは256スレッドで、その後減少し始めます。スレッド数が少ない場合、リード パフォーマンスとライト パフォーマンスは同じです。8スレッドになるまで、8つのクライアントが24のターゲットに対して8つのファイルを書き込むため、すべてのストレージ ターゲットが完全に使用されているわけではありません。システムには33のストレージ ターゲットがあるため、すべてのサーバーを完全に活用するには、少なくとも11個のスレッドが必要です。リード パフォーマンスは、同時スレッド数の増加に伴って直線的に向上し、512スレッドと1024スレッドでほぼ同様のパフォーマンスとなることが確認されています。
また、リード パフォーマンスは16~128のスレッド数でのライト パフォーマンスよりも低くなりますが、その後リード パフォーマンスは上がり始めることも確認されています。これは、PCIe読み取り操作はRequestとCompletionの両方を必要とするNon-Postedタイプの操作となりますが、PCIe書き込み操作は「ファイア アンド フォーゲット」タイプの操作となるためです。トランザクション レイヤー パケットがデータ リンク レイヤーに渡されると、操作は完了します。書き込み処理は、リクエストのみで構成される「Posted」操作です。
読み取りスループットは通常、同じ量のデータに対して1回の書き込みではなく2つのトランザクションを必要とするため、書き込みスループットよりも低くなります。PCI Expressは、読み取りに分割トランザクション モデルを使用します。読み取りトランザクションには、次の手順が含まれます。
読み取りスループットは、読み取り要求が発行されるまでの時間と、Completerがデータを返すのにかかる時間の間の遅延によって異なります。ただし、アプリケーションがこの遅延をカバーするのに十分な数の読み取り要求を発行すると、スループットが最大化されます。そのため、リード パフォーマンスは16~128スレッドのライト パフォーマンスよりも低くなりますが、要求の数が増加するとスループットが向上します。 後続のリクエストを発行する前にRequesterがCompletionを待機すると、スループットが低下します。最初のデータが返された後の遅延をカバーするために複数のリクエストが発行されると、より高いスループットが登録されます。
ランダムIOパフォーマンスを評価するため、IOzoneがランダム モードで使用されました。テストは、4スレッドから最大1024スレッドまでのスレッド数に対して実施されました。IOzoneの実行には、すべての操作がバッファ キャッシュをバイパスしてディスクに直接移動できるように、ダイレクトIOオプション(-I)が使用されました。BeeGFSストライプ数は3で、チャンク サイズは2MBが使用されました。IOzoneでは、4KiBのリクエスト サイズが使用されます。パフォーマンスは、1秒あたりのI/O操作数(IOPS)で測定されます。OSキャッシュは、BeeGFSサーバーとBeeGFSクライアント上での実行の間にドロップされました。ランダム書き込みと読み取りを実行するために使用されたコマンドは、次のとおりです。
Random reads and writes: iozone -i 2 -w -c -O -I -r 4K -s $Size -t $Thread -+n -+m /path/to/threadlist
図10: IOzoneを使用したランダム読み取り/書き込みパフォーマンス(8TB合計ファイル サイズ使用)
図10に示すように、ランダム書き込みのピークは512スレッドで最大360万IOPS、ランダム読み取りピークは1024スレッドで最大350万IOPSです。ライト パフォーマンスとリード パフォーマンスの両方で、IO要求の数が多い場合に、より高いパフォーマンスを示しています。これは、NVMe標準では、キューあたり最大64KのI/Oキューと最大64Kのコマンドをサポートするためです。このNVMeキューの大規模なプールは、より高いレベルのI/O並列化を提供するため、IOPSが300万を超えています。
このブログでは、Dell EMCハイ パフォーマンスBeeGFSストレージ ソリューションのリリースについてお知らせし、そのパフォーマンス特性について説明します。このソリューションでは、最大132 GB/秒と最大121 GB/秒のシーケンシャルな読み取り/書き込みパフォーマンスを実現し、ランダム書き込みのピークは最大360万IOPS、ランダム読み取りは最大350万IOPSです。
このブログは、『BeeGFS Storage Solution』の第一部であり、ハイ パフォーマンスのスクラッチ領域に重点を置いて設計されています。このブログ シリーズの第二部では、パフォーマンスと容量を向上させるためにサーバーの数を増やすことでソリューションを拡張する方法について説明します。このブログ シリーズの第三部では、BeeGFSの追加機能について説明し、BeeGFSの組み込み型ストレージ ターゲット ベンチマークである「StorageBench」の使用方法について詳しく説明します。
次のステップの一環として、メタデータ パフォーマンス、Nスレッド - 1ファイルのIORパフォーマンス、および設計に関する考慮事項、チューニング、構成についての詳細を含むホワイト ペーパーを公開する予定です。