このブログでは、最近発表された Dell EMC Ready Solutions for HPC BeeGFS Storage の主な機能について説明します。これは、BeeGFSハイ パフォーマンス ストレージ ソリューションに関するシリーズの3番目のブログです。 最初のブログでは、ソリューションのリリースを発表しました。2番目のブログでは、 Dell EMC Ready Solutions for HPC BeeGFS Storageの拡張性について説明しました。ベース構成、柔軟な拡張性の高い構成、さまざまな構成の実際の測定されたシーケンシャルな読み取り/書き込みパフォーマンスに関する詳細を示し、ソリューション内のサーバー数に関して拡張性が直線的であることを示しました。現在のブログでは、BeeGFSの組み込みストレージ ターゲット ベンチマークである「StorageBench」の使用について説明します。
BeeGFSは、 www.beegfs.io からダウンロードできるオープンソース ファイル システムです。複数のストレージ ターゲットにデータを分散する並列ファイル システムです。これは、基盤となるストレージ ハードウェアから論理ファイル システムを分離するソフトウェア デファインド ストレージであり、ユーザーはデータを保存する方法と場所を定義できます。ファイル システム ソフトウェアには、高可用性、クォータの強制、アクセス制御リストなどのエンタープライズ機能が含まれています。BeeGFSの主な特長は、使いやすさ、拡張性、柔軟性です。 使いやすさは、すべてのサーバー側コンポーネントがユーザースペース デーモンである一方で、クライアントはカーネル自体にパッチを適用する必要のないカーネル モジュールであるという事実に起因しています。すべての BeeGFS コンポーネントは、サーバーを再起動せずにインストールおよびアップデートできます。そのため、ダウンタイムなしでクライアントとサーバーを既存のシステムに追加できます。サーバーとドライブを追加することで、ファイル システムのパフォーマンスと容量を拡張できます。詳細については、こちらのリンクのブログを参照してください。BeeGFSは複数のLinuxディストリビューションをサポートしており、POSIX準拠のローカル ファイル システムと連携するように設計されています。BeeGFSは、同じサーバー上で特定のサービスの複数のインスタンスの実行もサポートします。
Dell EMC Ready Solutions for HPC BeeGFS Storageは、BeeGFSファイル システムのすべての主要機能を活用し、ハイ パフォーマンスを実現するために設計されています。このソリューションでは、メタデータとデータの保存と処理にPowerEdge R740xdサーバーを使用します。 各PowerEdge R740xdサーバーには、24台の1.6 TBインテルP4600 NVMe SSDが搭載されており、ドライブ テクノロジーにおける2番目の大きな飛躍と見なされます。SSDは最初の製品です。 HPC環境では、多くの場合、スクラッチ スペースが制限要因になる可能性があります。小さすぎるか、遅すぎる可能性があります。 Dell EMC Ready Solutions for HPC BeeGFS Storageは、スクラッチ ソリューションとして使用するように設計されており、BeeGFSファイル システムを使用してスクラッチ ストレージを提供します。
BeeGFSには、ネットワークまたはストレージ のNetBenchとStorageBench をそれぞれ特徴付けまたは評価するのに役立つ2つの組み込みベンチマーキング ツールが含まれています。NetBenchモードが有効になっている場合、サーバーはデータを書き込むのではなく、受信した書き込み要求を破棄します。同様に、読み取り要求の場合、基盤となるファイル システムから読み取る代わりに、メモリー バッファーのみがクライアントに送信されます。NetBenchモードは、基盤となるディスクとは独立してネットワーク ストリーミング スループットをテストすることを目的としています。一方、StorageBenchは、ネットワーク パフォーマンスとは無関係に、基盤となるファイル システムのストリーミング スループットを測定することを目的としています。StorageBenchは、ネットワークを使用しないストレージ ターゲットのベンチマークです。storage-benchコマンドは、データの書き込み/読み取りを開始するために、ストレージ ターゲットにリクエストを送信するだけです。そうすることで、ネットワークの影響を排除できます。ストレージ ベンチから得られる出力は、ネットワーク パフォーマンスが理想的な場合にシステムが達成できる最高のパフォーマンスです。このブログでは、StorageBenchを使用してさまざまなストレージ ターゲットのパフォーマンスを比較し、欠陥のあるターゲットまたは不適切な構成のターゲットを特定する方法について説明します。
StorageBenchは、マウントされたファイルシステムを使用しません。StorageBenchを実行すると、ファイルごとに1つのターゲットのみが存在します。Storagebenchは、テスト ファイルが作成されるシステム上のすべてのストレージ ターゲットに、テスト スレッドの数と同じディレクトリーを作成します。データは、ストレージ ターゲットごとに使用可能な低レベルのスループットを示すために、このデータに直接ストリーミングされます。ネットワーク通信がなければ、ファイル ストライピングをシミュレートすることはできません。したがって、ストレージ ベンチマークの結果は、ストライピングが無効になっているクライアントIOと同等です。実際のベンチマークを実行すると、デフォルトのストライピング パターンが採用されている場合、ファイルは4つのストレージ ターゲットにストライピングされます。
さまざまなストレージ ターゲットをテストする目的で、 Dell EMC BeeGFSストレージ ソリューションの拡張性に関するブログで説明されている小規模および中規模の構成が使用されました。 両方の構成で、RAID 1で構成されたメタデータ ターゲットの数は同じです。ストレージ ターゲットのRAID構成は異なります。小規模セットアップにはストレージがあり、ターゲットは6ドライブのうちRAID 0で構成されていますが、メディア構成では6台のドライブのうちRAID 10で構成されたストレージ ターゲットがあります。小規模および中規模のセットアップで構成されたストレージ ターゲットは、次のように表されます。
表1 テストベッドの構成 | ||
---|---|---|
Configuration | 中 - ストレージ ターゲットのRAID 10 | 小規模 - ストレージ ターゲットのRAID 0 |
メタデータ ターゲットの数 | 6 | 6 |
メタデータ サービスのインスタンス数 | 6 | 6 |
ストレージ サーバの数 | 5 | 2 |
ストレージ ターゲットの数 | 22 | 10 |
サーバーあたりのストレージ サービスの数 | 4 | 4 |
NUMAゾーンあたりのストレージ サービスの数 | 2 | 2 |
ストレージ サービスのインスタンスあたりのターゲット数 | 2 | 2 |
注:メディア セットアップの上記の構成は、StorageBenchツールを使用して、異なるRAID構成で構成されたストレージ ターゲットのスループットをテストすることを目的としています。
ストレージ ベンチマークは、beegfs-ctlツールを使用して開始および監視されます。beegfs-utilsパッケージは、ストレージ ターゲットのベンチマークを実行するために使用できる beegfs-ctl コマンド ライン ツールを提供します。次の例では、IOブロック 長が512KBのすべての BeeGFS ストレージ サーバのすべてのターゲットに対して書き込みベンチマークを開始し、ターゲットごとに16個のスレッドを使用します。各ターゲットは、200Gbのデータを独自のファイルに書き込みます。
[root@stor1~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16
書き込みストレージ ベンチマークが開始されました。
beegfs-ctl の --status 引数を使用して、ステータスをクエリーできます。
サーバー ベンチマーク ステータス:実行中:
10
「Running: 10インチ出力は、システムに構成されている合計10個のストレージ ターゲットがあることを示します。
すべてのターゲットのベンチマーク ステータス/結果をクエリーするには、次のコマンドを実行できます。
[root@stor1~]# beegfs-ctl --storagebench --alltargets --status
Server benchmark status:
Finished: 10
ベンチマーク結果の書き込み:
最小スループット: 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6]、targetID: 50
最大スループット: 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2]、targetID: 48
平均スループット: 4907091 KiB/秒
総スループット: 49070915 KiB/秒
上記のコマンドに冗長を追加すると、すべてのターゲットとそれぞれのスループットのリストが表示されます。
[root@meta-stor ~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 10
ベンチマーク結果の書き込み:
最小スループット: 4692435 KiB/s nodeID: stor1-numa0-2 [ID: 6]、targetID: 6
最大スループット: 5368537 KiB/s nodeID: meta-stor-numa1-2 [ID: 2]、targetID: 2
平均スループット: 4907091 KiB/秒
総スループット: 49070915 KiB/s
すべてのターゲットのリスト:
1 5368477 KiB/s nodeID: meta-stor-numa1-1 [ID: 1]
2 5368537 KiB/s nodeID:meta-stor-numa1-2 [ID: 2]
3 4706368 KiB/s nodeID: stor1-numa0-1 [ID: 3]
4 4896077 KiB/s nodeID:stor1-numa1-1 [ID: 4]
5 4872876 KiB/s nodeID:stor1-numa1-2 [ID: 5]
6 4692435 KiB/s nodeID:stor1-numa0-2 [ID: 6]
7 4879054 KiB/s nodeID:stor2-numa1-2 [ID: 7]
8 4864737 KiB/s nodeID:stor2-numa1-1 [ID: 8]
9 4696152 KiB/s nodeID:stor2-numa0-1 [ID: 9]
10 4726202 KiB/s nodeID:stor2-numa0-2 [ID: 10]
RAID 0で構成されたストレージ ターゲットあたりの平均スループットは5.02 GB/秒です。
次の例では、IOブロック 長が512KBのすべての BeeGFS ストレージ サーバのすべてのターゲットに対して書き込みベンチマークを開始し、ターゲットごとに16個のスレッドを使用します。各ターゲットは、200Gbのデータを独自のファイルに書き込みます。
[root@node001~]# beegfs-ctl --storagebench --alltargets --write --blocksize=512K --size=200G --threads=16
書き込みストレージ ベンチマークが開始されました。
beegfs-ctl の --status 引数を使用して、ステータスをクエリーできます。
サーバー ベンチマーク ステータス:実行中:
22
上記のコマンドに冗長を追加すると、すべてのターゲットとそれぞれのスループットのリストが表示されます。
[root@node001~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 22
書き込みベンチマーク結果:
最小スループット: 2705987 KiB/s nodeID: node006-numa0-1 [ID: 19]、targetID: 1
最大スループット: 3364311 KiB/s nodeID: node001-numa1-1 [ID: 1]、targetID: 1
平均スループット: 3212845 KiB/秒
総スループット: 70682603 KiB/秒すべてのターゲットのリスト:
1 3364311 KiB/s nodeID:node001-numa1-1 [ID: 1]
2 3361591 KiB/s nodeID: node001-numa1-2 [ID: 2]
3 3309530 KiB/s nodeID: node002-numa0-1 [ID: 3]
4 3312840 KiB/s nodeID:node002-numa0-2 [ID: 4]
5 3332095 KiB/s nodeID: node002-numa1-1 [ID: 5]
6 3323319 KiB/s nodeID:node002-numa1-2 [ID: 6]
7 3313000 KiB/s nodeID:node003-numa0-1 [ID: 7]
8 3321214 KiB/s nodeID:node003-numa0-2 [ID: 8]
9 3335072 KiB/s nodeID:node003-numa1-1 [ID: 9]
10 3339743 KiB/s nodeID:node003-numa1-2 [ID: 10]
11 3302175 KiB/s nodeID:node004-numa0-1 [ID: 11]
12 3309474 KiB/s nodeID: node004-numa0-2 [ID: 12]
13 3329879 KiB/s nodeID: node004-numa1-1 [ID: 13]
14 3328291 KiB/s nodeID: node004-numa1-2 [ID: 14]
15 3306132 KiB/s nodeID: node005-numa0-1 [ID: 15]
16 3307096 KiB/s nodeID: node005-numa0-2 [ID: 16]
17 3318436 KiB/s nodeID: node005-numa1-1 [ID: 17]
18 3329684 KiB/s nodeID: node005-numa1-2 [ID: 18]
19 2705987 KiB/s nodeID: node006-numa0-1 [ID: 19]
20 2716438 KiB/s nodeID: node006-numa0-2 [ID: 20]
21 2707970 KiB/s nodeID: node006-numa1-1 [ID: 21]
22 2708326 KiB/s nodeID: node006-numa1-2 [ID: 22]
ストレージ ターゲットあたりの平均スループットは3.29 GB/秒です。
2つの異なる BeeGFSセットアップ(1つはRAID 0で構成されたストレージ ターゲット、もう1つはRAID 10で構成されたストレージ ターゲット)で実行されたStorageBenchベンチマーク テストの出力から、RAID 10ではなくRAID 0で構成されたストレージ ターゲットの方が書き込みパフォーマンスが優れていることは明らかです。ddコマンドを使用して10Gファイルを1Mのブロック 長で「oflag=direct」で書き込んだ場合、RAID 0で構成された小規模システムの平均は約5.1 GB/秒でしたが、RAID 10で構成されたメディア システムの平均スループットは約3.4 GB/秒でした。これは、storagebenchツールを使用して取得した結果と同等です。
[root@node001~]# beegfs-ctl --storagebench --alltargets --status --verbose
Server benchmark status:
Finished: 33
ベンチマーク結果の読み取り:
最小スループット: 2830479 KiB/s nodeID: node003-numa1-2 [ID: 14]、targetID: 14
最大スループット: 3025500 KiB/s nodeID: node005-numa0-1 [ID: 22]、targetID: 22
平均スループット: 2917836 KiB/秒
総スループット: 96288596 KiB/s
すべてのターゲットのリスト:
1 2950039 KiB/s nodeID: node001-numa1-1 [ID: 1]
2 2956121 KiB/s nodeID:node001-numa1-2 [ID: 2]
3 2954473 KiB/s nodeID:node001-numa1-3 [ID: 3]
4 2957658 KiB/s nodeID: node002-numa0-1 [ID: 4]
5 2947109 KiB/s nodeID:node002-numa0-2 [ID: 5]
6 2969886 KiB/s nodeID: node002-numa0-3 [ID: 6]
7 2892578 KiB/s nodeID:node002-numa1-1 [ID: 7]
8 2886899 KiB/s nodeID:node002-numa1-2 [ID: 8]
9 2888972 KiB/s nodeID:node002-numa1-3 [ID: 9]
10 2861995 KiB/s nodeID:node003-numa0-1 [ID: 10]
11 2874314 KiB/s nodeID: node003-numa0-2 [ID: 11]
12 2879096 KiB/s nodeID: node003-numa0-3 [ID: 12]
13 2832635 KiB/s nodeID: node003-numa1-1 [ID: 13]
14 2830479 KiB/s nodeID: node003-numa1-2 [ID: 14]
15 2830971 KiB/s nodeID: node003-numa1-3 [ID: 15]
16 2986890 KiB/s nodeID: node004-numa0-1 [ID: 16]
17 2979197 KiB/s nodeID: node004-numa0-2 [ID: 17]
18 2983958 KiB/s nodeID: node004-numa0-3 [ID: 18]
19 2897974 KiB/s nodeID: node004-numa1-1 [ID: 19]
20 2900880 KiB/s nodeID: node004-numa1-2 [ID: 20]
21 2904036 KiB/s nodeID: node004-numa1-3 [ID: 21]
22 3025500 KiB/s nodeID:node005-numa0-1 [ID: 22]
23 3021558 KiB/s nodeID: node005-numa0-2 [ID: 23]
24 3017387 KiB/s nodeID: node005-numa0-3 [ID: 24]
25 2921480 KiB/s nodeID:node005-numa1-1 [ID: 25]
26 2930226 KiB/s nodeID: node005-numa1-2 [ID: 26]
27 2930548 KiB/s nodeID:node005-numa1-3 [ID: 27]
28 2900018 KiB/s nodeID: node006-numa0-1 [ID: 28]
29 2898520 KiB/s nodeID: node006-numa0-2 [ID: 29]
30 2907113 KiB/s nodeID: node006-numa0-3 [ID: 30]
31 2855079 KiB/s nodeID: node006-numa1-1 [ID: 31]
32 2853527 KiB/s nodeID: node006-numa1-2 [ID: 32]
33 2861480 KiB/s nodeID: node006-numa1-3 [ID: 33]
上記の出力から、すべてのストレージ ターゲットが均一に実行され、システムに欠陥のあるターゲットがないことは明らかです。