目次


SAS Foundation の混合ワークロードに対応する新しいソフトウェア定義型コンバージド・インフラストラクチャーの徹底調査

IBM ESS、IBM Spectrum Scale、IBM POWER8、および Mellanox を構成して、SAS アナリティクスで卓越したパフォーマンスを実現する

Comments

このリンク先の技術記事「A new software-defined converged infrastructure for SAS Foundation mixed workloads」では、この新しいソフトウェア定義型コンバージド・インフラストラクチャーをテーマに、SAS の内部テストで使用している SAS Mixed Analytics ワークロードのために卓越したパフォーマンスを引き出すためのアーキテクチャーと方法論について解説しています。このコンバージド・インフラストラクチャーの鍵となる要素としては、IBM Elastic Storage Server (ESS)、IBM Power サーバー、Mellanox 製 Ethernet ストレージ・ファブリックが挙げられます。

この記事では、混合ワークロード・テストの目的、目標、結果について、テストの背後にある技術的詳細、テスト環境の仕様、テスト・シナリオおよびそれらのテストから得たパフォーマンス・データの詳細を含めて説明します。そして最後に、最適なパフォーマンスを達成するためにコンバージド・インフラストラクチャーを調整する際のガイドラインを紹介します。

システムのアーキテクチャー、構成、チューニング、およびファイル・システムの作成

図 1 に、ラボ環境内の IBM Elastic Storage Server と IBM Power E880 サーバーを使用して SAS ソフトウェアをテストする際に適用したアーキテクチャーと構成を示します。図 2 には、ESS ネットワーク構成を示します。

図 1. IBM Power サーバーおよび IBM Elastic Storage Server をベースとした SAS のソリューション・アーキテクチャー
図 2. ESS ネットワークのハードウェア構成

構成

このセクションでは、アーキテクチャーに含まれる各コンポーネントの構成を詳しく説明します。

ソフトウェア

  • SAS 9.4 TS1M3 64 ビット
  • IBM AIX 7.2 (7200-00-02-1614)
  • IBM PowerVM Enterprise Edition
  • Virtual I/O Server (VIOS) 2.2.3.50
  • IBM Spectrum Scale (旧称 IBM GPFS) 4.2.1.1
  • IBM ESS バージョン 4.5.1
    • Red Hat 7.1
  • MLNX-OS 3.3.6.1002

ネットワーク構成

  • IBM スイッチ・モデル: 8831-NF2 (Mellanox SX1710)
  • Mellanox ConnectX-3 40GbE アダプター (IBM フィーチャー・コード EC3A)
  • 36 ポート 40GbE / 56GbE スイッチ
  • MLNX-OS バージョン 3.6.1002
  • グローバル一時停止を有効にしたフロー制御
  • TCP/IP のみのトラフィック

IBM Power System E880 サーバー構成

  • モデル: 9119-MHE
  • ファームウェア・バージョン: IBM FW830.00 (SC830_048)
  • プロセッサー・アーキテクチャー: POWER8
  • クロック速度: 4356 MHz
  • SMT: OFF、2、4、8 (デフォルトの SMT4 は、ベンチマークで使用)
  • コア: 64 (テスト対象の LPAR に 62 コア、VIOS に 2 コアを使用)
  • メモリー: 512 GB (テスト対象の LPAR に 384 GB、VIOS に 8 GB を使用)
  • 内蔵ドライブ: 12 × 600 GB (VIOS と LPAR のブート用)
  • ドロワー × 4 (各ドロワーの x16 スロットには 1 つの 40GbE デュアル・ポート・アダプター (IBM フィーチャー・コード EC3A) を装着)

ESS 構成

  • モデル: 5146-GL4
  • IBM Power System S822L × 2 (I/O サーバーとして使用)
  • 256 GB (16 × 16GB DRAM)
  • IBM Power System S821L サーバー (xCat 管理サーバー用)
  • IBM 7042-CR8 ラック・カウント型ハードウェア管理コンソール (HMC)
  • ストレージ・インターフェース: LSI 9206-16e クアッド・ポート 6Gbps SAS アダプター (A3F2) × 3 (I/O サーバーごと)
  • I/O ネットワーキング: デュアル・ポート 40GbE Mellanox ConnectX-3 アダプター (EC3A) × 3 (I/O サーバーごと)
  • Mellanox アダプター・ポートの ALB ボンディング × 3 (ESS I/O サーバーごと)
  • RAID (Redundant Array of Independent Disks) コントローラー: IBM PCIe IPR SAS アダプター (各サーバーの RAID 10 OS ブート・ドライブ用サーバーごとに 1 つの IPR アダプター)
  • スイッチ:
    • 2 つの VLAN を備えた 1 つの 1GbE スイッチ (サービス・ネットワークと管理ネットワークに、2 つの分離したサブネットを使用)
    • IBM 8831-NF2 (40GbE スイッチ。Mellanox モデル SX1710)
  • DCS3700 JBOD 60 ドライブ・エンクロージャー (1818-80E。60 個のドライブ・スロット) × 4
    • エンクロージャーごとに 58 の 2 TB 7.2K LN-SAS HDD + 2 つの 400 GB 半導体ドライブ (SSD) を収容
  • SAS ケーブル × 16

ESS Spectrum Scale ファイル・システムの作成

以下に、SASWORK、SASDATA、および SASUTIL アプリケーションのストレージ・スペースを作成するために使用した Spectrum Scale ファイル・システムのパラメーターを記載します。最初にブロック・サイズをさまざまに変えてファイル・システムを作成し、パフォーマンスをテストしました。

一般に、Spectrum Scale ファイル・システムのブロック・サイズはアプリケーションのブロック・サイズを 32 で乗算することによって計算できます。IBM ESS では GPFS Native RAID (GNR) を使用します。簡単に説明すると、GNR はファイル・システムのブロック・サイズを 32 のサブブロックに分割してディスク・サブシステムにステージングします。

けれども SAS BUFSIZE を 256 KB に設定し、ラボ環境内でファイル・システムのブロック・サイズをさまざまに変えて SAS ワークロードをテストした結果、最もパフォーマンスに優れているのは 8 MB または 16 MB のファイル・システム・ブロック・サイズであると判断しました。

サンプル・ファイル・システムの作成およびマウント・コマンド

# gssgenvdisks --vdisk-suffix _sasdata_8m --create-vdisk --create-filesystem --filesystem-name sasdata_8m --data-vdisk-size 4000 --data-blocksize 8M
   
# mmmount all
Fri Jun  3 19:21:25 CDT 2016: mmmount: Mounting file systems ...

# df -h
Filesystem       Size  Used Avail Use% Mounted on
/dev/sda3        246G  3.0G  244G   2% /
devtmpfs          60G     0   60G   0% /dev
tmpfs             60G     0   60G   0% /dev/shm
tmpfs             60G   95M   60G   1% /run
tmpfs             60G     0   60G   0% /sys/fs/cgroup
/dev/sda2        497M  156M  341M  32% /boot
/dev/sasdata_1m   16T  264M   16T   1% /gpfs/sasdata_1m
/dev/saswork_1m   16T  264M   16T   1% /gpfs/saswork_1m
/dev/sasutil_1m  7.9T  264M  7.9T   1% /gpfs/sasutil_1m
/dev/sasutil_4m  7.9T  288M  7.9T   1% /gpfs/sasutil_4m
/dev/saswork_4m   16T  288M   16T   1% /gpfs/saswork_4m
/dev/sasdata_4m   16T  288M   16T   1% /gpfs/sasdata_4m
/dev/sasdata_8m   16T  320M   16T   1% /gpfs/sasdata_8m
/dev/sasutil_8m  7.9T  320M  7.9T   1% /gpfs/sasutil_8m
/dev/saswork_8m   16T   16T     0 100% /gpfs/saswork_8m

ワークロード、テスト・シナリオ、テスト結果

このセクションでは、テストを実行するために使用したワークロード、テスト・シナリオ、そしてテスト結果の詳細を説明します。

ワークロード

パフォーマンスの検証時に使用したワークロードは、SAS Foundation Mixed Analytics ワークロードです。このワークロードは、並行して実行される各種のアナリティクス・ジョブからなります。これらのジョブで、所定の IT インフラストラクチャーの計算、メモリー、および I/O 機能に負荷をかけます。

SAS Foundation Mixed Analytics ワークロードを構成する個別の SAS プログラム・テストは全部で 20 個あります。そのうち 10 個は計算集約型、2 個はメモリー集約型、8 個は I/O 集約型となっています。テストのなかには、既存のデータ・ストアを使用して実行されるものもあれば、テスト実行中に固有のデータを生成するものもあります。テストには、短時間 (数分) 実行されるジョブと長時間 (数時間) 実行されるジョブが混在しています。テストは並行して、または順次に実行されるか、あるいは並列実行と順次実行を混在させた形で繰り返し行われます。これによって、20 テストの平均並列ワークロード、あるいは 30 テストの平均並列ワークロードを実現します。20 テストのワークロードでは合計 71 個のジョブが実行され、30 テストのワークロードでは合計 101 個のジョブが実行されます。30 テストのワークロードでは、ピーク負荷時に 55 基のプロセッサーを使用して I/O 集約型のジョブを同時に生成することができます。

ワークロードのパフォーマンス・メトリックは、ワークロードに含まれるすべてのジョブの実際の処理時間を累積した応答時間 (分数) です。応答時間が短ければ短いほど、パフォーマンスに優れていることになります。その一方で、プロセッサー時間 (ユーザー時間 + システム時間)、サーバー使用率、I/O スループットなどの他のパフォーマンス・メトリックも調査しました。これらのメトリックを収集した目的は、圧縮を有効にした場合のパフォーマンスの影響を把握するためです。

ワークロードの応答時間 (実時間) とプロセッサー時間 (ユーザー時間 + システム時間) は、SAS ジョブのログ・ファイルから収集します。これらの統計は SAS の FULLSTIMER オプションによってログに記録されます。IBM POWER7® プロセッサー・アーキテクチャー以降、IBM Power Systems™ では PURR (Processor Utilization Resource Register) というレジスタのアカウンティングを使用してシステム使用状況を正確に報告するようになっています。POWER8 プロセッサーでの PURR 係数は、前述のプロセッサー時間のメトリックに適用する必要があります。PURR 係数の詳細については、このリンク先のホワイト・ぺーパー「SAS Business Analytics deployment on IBM POWER8 processor-based systems with IBM XIV Storage System and IBM FlashSystem」とその付録 B を参照してください。

テスト・シナリオ

ベンチマークの一環として、以下のシナリオを実行しました。

  • 単一ノードのテスト: 20 テスト混合アナリティクス・ワークロード
  • スケーラビリティー・テスト: 20 テストおよび 30 テスト混合アナリティクス・ワークロード
  • 実行速度 56GbE の Mellanox ファブリックを使用したテスト: 30 テスト混合アナリティクス・ワークロード

サーバー・システム上でもストレージ・システム上でも競合するワークロードが実行されていない状態で、テストは実行されました。テスト・チームはワークロード、ホスト側、およびストレージ側のパフォーマンス・メトリクスを収集し、ベースラインと最終テストの結果を比較しました。

テスト結果

このセクションでは、テスト・シナリオの実行結果について説明します。

単一ノードのテスト: 20 テスト混合アナリティクス・ワークロード

20 テスト混合アナリティクス・ワークロードのテストに使用された論理パーティション (LPAR) は、以下で構成されています。

  • SMT4 を実行する 16 コア (専用モード)
  • 96 GB のメモリー
  • 1 つの 40GbE ポート
  • ブロック・サイズを 16 MB に設定した Spectrum Scale ファイル・システム (SASWORK、SASDATA、SASUTIL)
図 3. 単一ノード上での 20 テスト混合アナリティクス・ワークロードのネットワーク I/O スループット
図 4. 単一ノード上での 20 テスト混合アナリティクス・ワークロードのプロセッサー使用率

図 3 と図 4 には、20 テスト単一ノード・テストのネットワーク I/O スループットとプロセッサー使用率が示されています。このテストにより、以下の重要な結果が得られました。

  • 実時間は 1073 分、ユーザー時間 + システム時間は 793 分でした (PURR 係数 0.6 を適用)。
  • 平均 I/O スループットとピーク I/O スループットはそれぞれ 2.75 GBps、4 GBps でした。
  • コアあたりの I/O スループットは約 175 MBps でした (16 コアを使用)。
  • プロセッサー使用率は、LPAR に割り当てた全 16 コアの 60% でした。

スケーラビリティー・テスト: 20 テスト混合アナリティクス・ワークロード

スケーラビリティー・テストは、ワークロードとノードを線形にスケーリングして行いました。20 テスト・ワークロードのスケーリング範囲は、1 ノードから 4 ノードです。1 ノードの場合は 20 のテストが並行して実行され、4 ノードの場合はノードごとに 20 のテスト、つまり 80 のテストが並行して実行されました。バックエンドのストレージと計算機能については、ワークロードをスケーリングする際に変更していません。1 ノード、2 ノード、3 ノード、4 ノードのテストでは、それぞれ合計 20、40、60、80 の混合アナリティクス・ワークロード・テストを実行しました。また、同様のスケーラビリティー・テストを、1 ノードから 3 ノードの範囲で 30 テスト混合アナリティクス・ワークロードを使用して実行しました。

スケーラビリティー・テストで使用した LPAR の構成には、以下が含まれています。

  • 2 つの LPAR に 16 コア (専用モード)、他の 2 つの LPAR に 15 コア (専用モード)
  • SMT4
  • LPAR ごとに 96 GB のメモリー
  • LPAR ごとに 1 つの 40GbE ポート
  • ブロック・サイズを 16 MB に設定した Spectrum Scale ファイル・システム (SASWORK、SASDATA、SASUTIL)
図 5. 20 テスト・ワークロードでのスケーラビリティー・テストによるパフォーマンス・メトリックの要約

図 5 には、20 テスト・ワークロードでのスケーラビリティー・テストによる結果が要約されています。図 6 から図 10 に、テスト中に達成された I/O スループットのグラフを示します。

図 6. 4 ノードにスケーリングした場合の平均および累積実時間
図 7. 単一ノード上での 20 テスト・ワークロードの I/O スループット
図 8. 2 ノードにスケーリングした場合の 20 テスト・ワークロードの I/O スループット (合計テスト数 40)
図 9. 3 ノードにスケーリングした場合の 20 テスト・ワークロードの I/O スループット (合計テスト数 60)
図 10. 4 ノードにスケーリングした場合の 20 テスト・ワークロードの I/O スループット (合計テスト数 80)

速度 56GbE で実行する Mellanox ファブリックを使用したテスト

このセクションでは、Mellanox ファブリック、環境内でのMellanox ファブリックの構成、およびテスト結果について説明します。

ESS を使用した Mellanox 56GbE ファブリック

Power IO ポートフォリオを揃えた IBM では、ESS ベースのストレージ・ソリューション向けの Mellanox ファブリック全体を構築することができます。具体的には、フィーチャー・コード EC3A/EC3B のアダプターを使用し、ケーブル EB40-EB42 および EB4A-EB4G でスイッチ 8831-NF2 を接続します。このように構成すると、堅牢かつ低レイテンシー (ポート間で約 330ns) の Ethernet ベースの TCP/IP ストレージ・ファブリックに仕上がります。

このストレージ・デプロイメントの興味深い部分は、Mellanox スイッチがファブリックを Mellanox 専用 56GbE モードで実行できることです。スイッチで各ポート上の回線速度エントリーを 56000 に変更すると、投資を増やさなくても、既存のネットワーク・ハードウェアによって提供できる帯域幅が 40% 増加します。使用するケーブル配線は、実行速度 56GbE に対応可能でなければなりません。この構成で使用したアダプターは、自動的にスイッチと速度をネゴシエートすることができます。

ネットワーク・スイッチ、ホスト、およびクライアントのポートをラボ環境内で 56GbE の速度で実行するよう調整した上でテストを繰り返し、パフォーマンスが向上するかどうかを調べました。

速度 56GbE で稼働する Mellanox ファブリックを使用して以下のテストを実行し、速度 40GbE との比較でパフォーマンス上の利点を評価しました。

  • gpfsperf ツールを使用した I/O テスト
  • 30 テスト・ワークロード (単一ノードでのテストならびに 4 ノードを使用したスケーラビリティー・テスト)

4 ノード上での gpfsperf ツールを使用した I/O テストの結果

Spectrum Scale デプロイメントには、システム・パフォーマンスを検証するために使用できる複数のパフォーマンス・ツールが組み込まれています (gpfsperf、nsdperf など)。これらのツールについては、この記事の「その他の参考文献」セクションで紹介している Spectrum Scale の資料を参照してください。Spectrum Scale (GPFS) ファイル・システム上での読み取り、書き込み、読み取り/書き込みの I/O パフォーマンスを測定するには、gpfsperf ツールを使用できます。このツールを使用して、ネットワーク・ポートが速度 40GbE および 50GbE のそれぞれで動作しているときの I/O スループットを測定しました。このツールを 4 つすべてのノード上で同時に実行して、ネットワークおよび ESS ストレージに負荷をかけて、I/O スループットを測定するという方法です。図 11 に、ポート速度が 40GbE の場合と 50GbE の場合の I/O スループットの比較を示します。

図 11. ファブリックが 40GbE および 56GbE で実行されているときにテスト・ツールを使用して達成された I/O スループットの比較

gpfsperf ツールを使用したテストによって、インフラストラクチャーを追加またはアップグレードしなくても、既存のネットワーク・インフラストラクチャーで読み取り/書き込みの I/O スループット (70:30) が 8% から 10% 改善されることが明らかになりました。このテスト中に、ESS GL4 ストレージの I/O スループットの限界に達しました。

gpfsperf の順次書き込みコマンドの例:

/usr/lpp/mmfs/samples/perf/gpfsperf create seq /gpfs/sasdata_1m/data/n1aa -r 1m -th $1 -n 3072M &

gpfsperf の順次読み取りコマンドの例:

/usr/lpp/mmfs/samples/perf/gpfsperf read seq /gpfs/sasdata_1m/data/n1aa -r 1m -th $1 &

gpfsperf の順次読み取り/書き込みコマンドの例:

/usr/lpp/mmfs/samples/perf/gpfsperf mixrw seq /gpfs/sasdata_1m/data/n1aa -r 1m -th $1 -n 3072M -readratio 70 &

56GbE ファブリックを使用した SAS ワークロード・テストの結果

20 テスト混合アナリティクス・ワークロードは、ネットワーク I/O の制約を受けません。そのため、(単一ノード上でも複数のノード上でも) 20 テストでは速度 40GbE での結果と比べ、パフォーマンスの改善は見られませんでした。ただし、56GbE で動作するようにポートを調整して 30 テストを実行すると、速度 40GbE で動作中のときよりもパフォーマンスが向上する結果となりました。

  • ポートが速度 56GbE で動作する単一ノード上で実行した 30 テスト・ワークロードでは、実時間が 5% 短縮されました。
  • ポートが速度 56GbE で動作する 4 つのノード上のすべてで同時に実行した 30 テスト・ワークロードでは、実時間が 8% 短縮されました。
  • 4 ノードのテストでのピーク I/O スループットは、速度 40GbE では 14 GBps であるのに対し、速度 56GbE では 16 GBps を達成しました。平均 I/O スループットについては、速度 40GbE では 11 GBps であるのに対し、速度 56GbE では 12.15 GBps を達成しました。

図 12 と図 13 に、速度 40GbE と 56GbE のそれぞれで実行した 30 テスト・ワークロードの I/O スループットを示します。

図 12. 速度 40GbE で、4 ノードにスケーリングした場合の 30 テスト・ワークロードの I/O スループット (合計テスト数 120)
図 13.速度 56GbE で、4 ノードにスケーリングした場合の 30 テスト・ワークロードの I/O スループット (合計テスト数 120)

チューニング

このセクションでは、環境の各側面をどのように調整するのかに関するガイダンスと推奨事項を紹介します。

スイッチのチューニング

スイッチで調整したチューニング・パラメーターは 5 つあります。

  • フロー制御
Interface ethernet 1/n flowcontrol receive on force
Interface ethernet 1/n flowcontrol send on force
  • インターフェース速度
Interface ethernet 1/n speed 56000, where n= port 1-36
  • インターフェース MTU サイズ
Interface ethernet 1/n mtu 9000, where n= port 1-36
  • LAG 構成のチューニング (必要な場合)
Interface port-channel y flowcontrol receive on force, where y = 1 – max number of LAG groups
Interface port-channel y flowcontrol send on force, where y = 1 – max number of LAG groups
  • LAG ロード・バランシング
port-channel load-balance ethernet source-destination-ip source-destination-mac source-destination-port

冗長性を持たせるために、クライアント・ノード (LPAR) ではデュアル・ポート・アダプターが使用されました。アダプターの接続先 PCI Gen3.0 x8 バスの制限事項により、アダプターの最大合計帯域幅は 56GbE に制限されます。帯域幅の拡大と冗長性が必要な場合は、スイッチ・ポートを56GbE で実行して帯域幅を増やすことを推奨します。また、アダプターをモード 1 のアクティブ/スタンバイで構成して冗長性を持たせます。

注: ラボ環境では 36 ポート 40GbE / 56GbE スイッチを使用しました。このスイッチにはクライアント・ノード (LPAR) からのリンクが 4 つあり、ESS ストレージからのリンクが 7 つあります。したがって、全部で 11 のポートが使用されました。場合によっては、顧客がスイッチ全体を 11 のポートだけにコミットすることを望まないこともありますが、その場合、Mellanox では、ポート・カウントが低い別のスイッチとして、IBM ビジネス・パートナー製の MSX-1012B-2BFS スイッチを使用できるようになっています。12 ポート搭載のこのスイッチは、IBM 8831-NF2 と同じ MLNX-OS および ASIC を使用し、機能についても IBM 8831-NF2 と同じものを備えています。

AIX クライアントのネットワーク・チューニング・パラメーター

オペレーティング・システムの以下のネットワーク・チューニング・パラメーターには、AIX のデフォルトとは異なる値が使用されました。lsattr コマンドと no -a コマンドの全出力ならびに Spectrum Scale のチューニング・パラメーターは、「付録: チューニング・パラメーター」のセクションで確認できます。

AIX SAS クライアント・アダプター・インターフェース en3 のデフォルト・アダプター設定からの変更

     # en3
     mtu           9000          Maximum IP Packet Size for This Device        True
     rfc1323       1             Enable/Disable TCP RFC 1323 Window Scaling    True
     tcp_nodelay   1             Enable/Disable TCP_NODELAY Option             True
     tcp_recvspace 1048576       Set Socket Buffer Space for Receiving         True
     tcp_sendspace 1048576       Set Socket Buffer Space for Sending           True
     thread        on            Enable/Disable thread attribute               True

AIX SAS クライアント・アダプター・デバイス ent3 のデフォルト設定からの変更

# ent3
jumbo_frames    yes       Request jumbo frames                            True
jumbo_size      9014      Requested jumbo frame size                      True
large_receive   yes       Request Rx TCP segment aggregation              True
large_send      yes       Request Tx TCP segment offload                  True
tx_comp_cnt     2048      Tx completions before hardware notification     True

AIX ネットワーク環境/アダプター・パラメータの「no -L -F」の変更とデフォルト値の比較

一般的なネットワーク・パラメーター

-------------------------------------------------------------------------------------------------
NAME                      CUR    DEF    BOOT   MIN    MAX    UNIT           TYPE     DEPENDENCIES
-------------------------------------------------------------------------------------------------
fasttimo                  100    200    100    50     200    millisecond       D
-------------------------------------------------------------------------------------------------
sb_max                    32M    1M     32M    4K     8E-1   byte              D
-------------------------------------------------------------------------------------------------
##Restricted tunables
poolbuckets               7      1      1      1      20     numeric           D
-------------------------------------------------------------------------------------------------

TCP ネットワークのチューニング・パラメーター

--------------------------------------------------------------------------------
NAME            CUR    DEF    BOOT   MIN    MAX    UNIT      TYPE  DEPENDENCIES
--------------------------------------------------------------------------------
hstcp           1      0      1      0      1      boolean   D
--------------------------------------------------------------------------------
rfc1323         1      0      1      0      1      boolean   C
--------------------------------------------------------------------------------
sack            1      0      1      0      1      boolean   C
--------------------------------------------------------------------------------
tcp_mssdflt     8960   1460   8960   1      64K-1  byte      C
--------------------------------------------------------------------------------
tcp_recvspace   856K   16K    856K   4K     8E-1   byte      C     sb_max
--------------------------------------------------------------------------------
tcp_sendspace   856K   16K    856K   4K     8E-1   byte      C     sb_max
--------------------------------------------------------------------------------

UDP ネットワークのチューニング・パラメーター

NAME            CUR    DEF    BOOT   MIN    MAX    UNIT   TYPE  DEPENDENCIES
--------------------------------------------------------------------------------
udp_recvspace   768K   42080  768K   4K     8E-1   byte   C     sb_max
--------------------------------------------------------------------------------
udp_sendspace   256K   9K     256K   4K     8E-1   byte   C     sb_max
--------------------------------------------------------------------------------
      
n/a means parameter not supported by the current platform or kernel
      
Parameter types:
S = Static: cannot be changed
D = Dynamic: can be freely changed
B = Bosboot: can only be changed using bosboot and reboot
R = Reboot: can only be changed during reboot
C = Connect: changes are only effective for future socket connections
M = Mount: changes are only effective for future mountings
I = Incremental: can only be incremented
      
Value conventions:
K = Kilo: 2^10       G = Giga: 2^30       P = Peta: 2^50
M = Mega: 2^20       T = Tera: 2^40       E = Exa: 2^60

注: 自動構成されるポート速度を変更するには、接続スイッチ・ポートの速度を 56000 に変更した後、電源サイクルを行います。

ESS Linux I/O サーバー・アダプター・ボンディングの変更

広範なテストを行った結果、ESS ネットワーク・アダプターの bond0 パラメーターを LACP から ALB に変更することにしました。

# vi /etc/sysconfig/network-scripts/ifcfg-bond-bond0
BONDING_OPTS=”miimon=100 mode=balance-alb xmit_hash_policy=layer3+4”
MTU=9000

ESS Linux I/O サーバー・ネットワークのチューニング・パラメーター

オペレーティング・システムの以下のネットワーク・チューニング・パラメーターには、Linux ESS I/O ネットワーク共有ディスク (NSD) サーバーのデフォルトとは異なる値を使用しました。

ppc64_cpu --smt=2
ethtool -G enP4p1s0 rx 8192 tx 8192
ethtool -G enP9p1s0 rx 8192 tx 8192
ethtool -G enp1s0 rx 8192 tx 8192
mlnx_tune -r -c
ethtool -K enP9p1s0d1 tx-nocache-copy off
ethtool -K enP4p1s0d1 tx-nocache-copy off
ethtool -K enp1s0d1 tx-nocache-copy off

注: ESS ノード・ネットワークのチューニング・パラメーターは、ESS インストール・プロセスの一環として事前に設定/調整されています。

ESS Spectrum Scale のチューニング・パラメーター

このセクションでは、デフォルト値を変更して混在 AIX/Linux クラスター用に使用した Spectrum Scale クラスター・チューニング・パラメーターについて説明します。Spectrum Scale 4.2.0.3 以降、最初の列に示されるピリオド「.」は、そのパラメーターが workerThreads パラメーターによって変更されたことを意味します。この仕様は、自動調整機能とも呼ばれ、ある workerThreads パラメーターを変更すると、他のチューニング・パラメーターも自動的にデフォルトから変更される仕組みになっています。

変更された Spectrum Scale チューニング・パラメーターは、(パフォーマンスへの影響が大きいものから小さいものの順で) Pagepool、workerThreads、prefetchPct、maxFilesToCache、maxblocksize、maxMBpS です。これらのチューニング・パラメーターは、SAS Mixed Analytics ワークロードに極めて大きなパフォーマンス上の利点をもたらします。一般に、SAS ワークロードに対して最も重要となる Spectrum Scale チューニング・パラメーターは Pagepool です。初期の環境テストでは、クライアント・ノード上で Pagepool の値を大きくすると、他の Spectrum Scale チューニング・パラメーターよりも群を抜いたパフォーマンスの改善が見られました。他の環境での以降の関連する ESS GL4 テストでは、クライアント・ノード上で Pagepool を 32 GB から 64 GB に増やした場合、この記事で報告している数値よりもパフォーマンスが 5% から 10% 向上することが見込まれます。

したがって、以下に取り上げるチューニング・パラメーターは前者を重視して変更されることから、より重要なパラメーターであると思われます。ESS の場合、デフォルトの構成値の多くは ESS インストール・プロセスの一環として変更されることに注意してください。ESS は高度に最適化されているため、テストのために変更する必要のあるチューニング・パラメーターはほんのわずかです。例えば、ESS ノードの Pagepool は、デフォルトで最大サイズの 72 GB に設定されます。Spectrum Scale 構成のチューニング・パラメーターの全リストについては、「付録: チューニング・パラメーター」を参照してください。

AIX で稼働するクライアント・ノード:

  • maxblocksize 16777216
  • maxFilesToCache 50000
  • maxMBpS 24000
  • Pagepool 34359738368
  • prefetchPct 40
  • workerThreads 1024

ESS/Linux ノード:

  • maxblocksize 16777216
  • maxFilesToCache 50000
  • maxMBpS 24000
  • prefetchPct 40
  • seqDiscardThreshhold 1073741824
  • workerThreads 1024

注: デフォルト以外のパラメーターの多くは、ESS インストール・プロセスで Spectrum Scale パフォーマンス・スクリプトによってあらかじめ設定されます。

まとめ

IBM と Mellanox は、SAS ワークロード向けに、Ethernet と JBOD ニアライン・ディスクを使用した効率的で比較的安価なストレージ・ソリューションを実現しました。安価ながらも、このソリューションのパフォーマンスは、より高価な中間層の光ファイバー・チャネル・アタッチド・フラッシュ・ストレージに匹敵します。IBM POWER8 プロセッサー・ベースのサーバー上で SAS クライアントとして使用された AIX は、この見事な POC に対応する強力なワーク・エンジンとして自身を差別化しました。このソリューションでは、スイッチを 56GbE に設定し、IBM ポートフォリオに含まれる 56GbE ケーブルを使用して、40GbE のアダプターを 50GbE で実行するよう自動構成することを可能にしています。このソリューション構成以外のコストをかけることなく、ESS の I/O スループットを最大限に引き出し、40GbE ファブリックを実行可能にする上で不可欠の役割を果たしたのは、Mellanox 専用 Ethernet 高速ストレージ・ネットワークです。

このソリューションが SAS アプリケーションを使用して IBM Elastic Storage Server、Mellanox ネットワーク、および Power E880 の可能性を十分に達成することは、この SAS Mixed Analytics ワークロード概念検証から収集されたパフォーマンス・メトリックが実証しています。複数の分野にまたがって結成されたこの分野横断型チームは、卓越したパフォーマンスを実現するために、サーバー、ネットワーク、ストレージ、アプリケーションに関するチームの専門知識を交換してシステムのすべての部分を調整および最適化しました。業界トップのハードウェアとソフトウェアに加え、このような協調したチームの取り組みが、この POC を成功に導く鍵となったのです。

その他の参考文献

IBM と SAS のホワイト・ペーパーs

IBM Power Systems

IBM ストレージ・ソリューション

ネットワーク

付録: チューニング・パラメーター

以下に、AIX SAS クライアント用に使用された、オペレーティング・システムのネットワーク・チューニング・パラメーターを記載します。lsattr AIX コマンドを使用すると、属性の特性と、所定のデバイスに有効な属性値を確認できます。以下はその一例です。

lsattr -El ent3

: rfc1323 イネーブルメントにより、インターフェース固有のチューニング・パラメーターが no set パラメーターより優先されます。

[root@brazos06]> # lsattr -El ent3
alt_addr        0x000000000000     Alternate Ethernet address                       True
bar0            0x88100000         Bus memory address 0                             False
bar1            0x80000000         Bus memory address 1                             False
bar2            0x88000000         Bus memory address 2                             False
chksum_offload  yes                Request checksum offload                         True
delay_open      no                 Delay open until link state is known             True
devid           0xb31503101410b504 Device ID                                        False
eeh_cfgsp_delay 999                EEH config space delay (miliseconds)             False
eeh_reset_delay 5                  EEH reset delay (seconds)                        False
flow_ctrl       yes                Request flow control                             True
flow_ctrl_rx    yes                Receive pause frames                             True
flow_ctrl_tx    yes                Transmit pause frames                            True
intr_cnt        10                 Interrupt event coalesce counter                 True
intr_priority   3                  Interrupt priority                               False
intr_time       5                  Interrupt event coalesce timer (microseconds)    True
ipv6_offload    yes                Request IPV6 stateless offloads                  True
jumbo_frames    yes                Request jumbo frames                             True
jumbo_size      9014               Requested jumbo frame size                       True
large_receive   yes                Request Rx TCP segment aggregation               True
large_send      yes                Request Tx TCP segment offload                   True
link_delay_mode logging            Link status delay mode                           True
link_delay_time 5                  Link status delay timer (seconds)                True
lro_threshold   2                  Rx TCP segment aggregation minimum pkt threshold True
media_speed     40000_Full_Duplex  Requested Media speed                            False
queue_pairs     8                  Requested number of queue pairs                  True
queues_rdma     1                  Requested number of RDMA event queues            True
rdma            desired            Request RDMA                                     True
rom_mem         0x0                ROM memory address                               False
rsp_comp_cnt    128                RSP Completions Before Hardware Notification     True
rsp_limit       1000               Response queue entries processed per interrupt   True
rsp_max_events  512                Max RSP events that can be received              True
rx_buffer_low   90                 Rx queue buffer replenish threshold              True
rx_chain        16                 Rx packets chained for stack processing          True
rx_comp_limit   128                Response queue entries processed per interrupt   True
rx_max_pkts     2048               Rx queue maximum packet count                    True
rx_notify_cnt   128                Rx packets per Rx complete notification          True
rx_send_cnt     8                  Rx Immediate Data mode                           True
systrc_enable   no                 Enable config debug tracing                      True
timer_eeh       1                  EEH event poll timer (seconds)                   True
timer_error     1                  Error poll timer (seconds)                       True
timer_link      1                  Link poll timer (seconds)                        True
timer_stats     0                  Statistics poll timer (seconds)                  True
tx_comp_cnt     2048               Tx completions before hardware notification      True
tx_comp_limit   1                  Tx completions processed per event               False
tx_free_delay   no                 Delay free of Tx packet mbufs                    True
tx_limit        1024               Tx packets sent per transmit thread              True
tx_max_pkts     1024               Tx queue maximum packet count                    True
tx_notify_cnt   64                 Tx packets per Tx complete notification          True
tx_swq_max_pkts 8192               Software Tx queue maximum packet count           True
use_alt_addr    no                 Request alternate Ethernet address               True
vpd_missing     no                 VPD is not present                               True

ネットワークのチューニング・パラメーターを管理するには、no AIX コマンドを使用できます。以下はその一例です。

no -a output

arpqsize = 1024
arpt_killc = 20
arptab_bsiz = 7
arptab_nb = 149
bcastping = 0
bsd_loglevel = 3
clean_partial_conns = 0
delayack = 0
delayackports = {}
dgd_flush_cached_route = 0
dgd_packets_lost = 3
dgd_ping_time = 5
dgd_retry_time = 5
directed_broadcast = 0
fasttimo = 100
hstcp = 1
icmp6_errmsg_rate = 10
icmpaddressmask = 0
ie5_old_multicast_mapping = 0
ifsize = 256
igmpv2_deliver = 0
init_high_wat = 0
ip6_defttl = 64
ip6_prune = 1
ip6forwarding = 0
ip6srcrouteforward = 1
ip_ifdelete_notify = 0
ip_nfrag = 200
ipforwarding = 0
ipfragttl = 2
ipignoreredirects = 0
ipqmaxlen = 100
ipsendredirects = 1
ipsrcrouteforward = 1
ipsrcrouterecv = 0
ipsrcroutesend = 1
limited_ss = 0
llsleep_timeout = 3
lo_perf = 1
lowthresh = 90
main_if6 = 0
main_site6 = 0
maxnip6q = 20
maxttl = 255
medthresh = 95
mpr_policy = 1
multi_homed = 1
nbc_limit = 12582912
nbc_max_cache = 131072
nbc_min_cache = 1
nbc_ofile_hashsz = 12841
nbc_pseg = 0
nbc_pseg_limit = 25165824
ndd_event_name = {all}
ndd_event_tracing = 0
ndogthreads = 0
ndp_mmaxtries = 3
ndp_umaxtries = 3
ndpqsize = 50
ndpt_down = 3
ndpt_keep = 120
ndpt_probe = 5
ndpt_reachable = 30
ndpt_retrans = 1
net_buf_size = {all}
net_buf_type = {all}
net_malloc_frag_mask = {0}
netm_page_promote = 1
nonlocsrcroute = 0
nstrpush = 8
passive_dgd = 0
pmtu_default_age = 10
pmtu_expire = 10
pmtu_rediscover_interval = 30
psebufcalls = 20
psecache = 1
psetimers = 20
rfc1122addrchk = 0
rfc1323 = 1
rfc2414 = 1
route_expire = 1
routerevalidate = 0
rtentry_lock_complex = 1
rto_high = 64
rto_length = 13
rto_limit = 7
rto_low = 1
sack = 1
sb_max = 33554432
send_file_duration = 300
site6_index = 0
sockthresh = 85
sodebug = 0
sodebug_env = 0
somaxconn = 1024
strctlsz = 1024
strmsgsz = 0
strthresh = 85
strturncnt = 15
subnetsarelocal = 1
tcp_bad_port_limit = 0
tcp_cwnd_modified = 0
tcp_ecn = 0
tcp_ephemeral_high = 65535
tcp_ephemeral_low = 32768
tcp_fastlo = 0
tcp_fastlo_crosswpar = 0
tcp_finwait2 = 1200
tcp_icmpsecure = 0
tcp_init_window = 0
tcp_inpcb_hashtab_siz = 24499
tcp_keepcnt = 8
tcp_keepidle = 14400
tcp_keepinit = 150
tcp_keepintvl = 150
tcp_limited_transmit = 1
tcp_low_rto = 0
tcp_maxburst = 0
tcp_mssdflt = 8960
tcp_nagle_limit = 65535
tcp_nagleoverride = 0
tcp_ndebug = 100
tcp_newreno = 1
tcp_nodelayack = 1
tcp_pmtu_discover = 1
tcp_recvspace = 876544
tcp_sendspace = 876544
tcp_tcpsecure = 0
tcp_timewait = 1
tcp_ttl = 60
tcprexmtthresh = 3
tcptr_enable = 0
thewall = 50331648
timer_wheel_tick = 0
tn_filter = 1
udp_bad_port_limit = 0
udp_ephemeral_high = 65535
udp_ephemeral_low = 32768
udp_inpcb_hashtab_siz = 24499
udp_pmtu_discover = 1
udp_recv_perf = 0
udp_recvspace = 786432
udp_sendspace = 262144
udp_ttl = 30
udpcksum = 1
use_sndbufpool = 1

Spectrum Scale のチューニング・パラメーター

以下に参考として、AIX/Linux 混在 GPFS クラスターに対する Spectrum Scale クラスター・チューニング・パラメーターをリストアップします。デフォルト値から変更されているチューニング・パラメーターは、パラメーターの前の「!」マークで示されています。Spectrum Scale の最近のバージョンに備わっている自動調整機能では、workerThreads を変更すると、他のチューニング・パラメーターも自動的にデフォルトから変更されるようになっています。太字で強調表示されているチューニング・パラメーターは前者を重視して変更されることから、より重要なパラメーターであると思われます。ESS の場合、デフォルトの構成値の多くは ESS インストール・プロセスの一環として変更されることに注意してください。ESS は高度に最適化されているため、変更する必要のあるチューニング・パラメーターはほんのわずかです。

AIX ノード

 ! ccrEnabled 0
 ! cipherList AUTHONLY
 ! deadlockDataCollectionDailyLimit 10
 ! deadlockDetectionThreshold 0
 ! dmapiFileHandleSize 32
 ! expelDataCollectionDailyLimit 10
 ! logBufferCount 20
 ! logWrapThreads 128
 ! maxblocksize 16777216
 ! maxBufferDescs 32768
 ! maxFilesToCache 50000
 ! maxMBpS 24000
 ! maxReceiverThreads 128
 ! maxStatCache 10000
 ! minReleaseLevel 1502
 ! pagepool 34359738368
 ! prefetchPct 40
 ! scatterBuffers 0
 ! seqDiscardThreshhold 1073741824
 ! socketMaxListenConnections 512
 ! worker1Threads 1024
 ! workerThreads 1024

ESS/Linux モード

: ここに示したデフォルト以外のパラメーターの多くは、ESS インストール・プロセスによってあらかじめ設定されます。

 ! ccrEnabled 0
 ! cipherList AUTHONLY
 ! deadlockDataCollectionDailyLimit 10
 ! deadlockDetectionThreshold 0
 ! dmapiFileHandleSize 32
 ! envVar MLX4_USE_MUTEX 1 MLX5_SHUT_UP_BF 1 MLX5_USE_MUTEX 1
 ! expelDataCollectionDailyLimit 10
 ! flushedDataTarget 1024
 ! flushedInodeTarget 1024
 ! ioHistorySize 65536
 ! logBufferCount 20
 ! logWrapAmountPct 10
 ! logWrapThreads 128
 ! maxAllocRegionsPerNode 32
 ! maxBackgroundDeletionThreads 16
 ! maxblocksize 16777216
 ! maxBufferCleaners 1024
 ! maxBufferDescs 2097152
 ! maxFileCleaners 1024
 ! maxFilesToCache 50000
 ! maxGeneralThreads 1280
 ! maxInodeDeallocPrefetch 128
 ! maxMBpS 24000
 ! maxReceiverThreads 128
 ! maxStatCache 10000
 ! minReleaseLevel 1502
 ! myNodeConfigNumber 1
 ! nsdClientCksumTypeLocal NsdCksum_Ck64
 ! nsdClientCksumTypeRemote NsdCksum_Ck64
 ! nsdInlineWriteMax 32768
 ! nsdMaxWorkerThreads 3072
 ! nsdMinWorkerThreads 3072
 ! nsdMultiQueue 512
 ! nsdRAIDBlockDeviceMaxSectorsKB 8192
 ! nsdRAIDBlockDeviceNrRequests 32
 ! nsdRAIDBlockDeviceQueueDepth 16
 ! nsdRAIDBlockDeviceScheduler deadline
 ! nsdRAIDBufferPoolSizePct (% of PagePool) 80
 ! nsdRAIDEventLogToConsole all
 ! nsdRAIDFastWriteFSDataLimit 262144
 ! nsdRAIDFastWriteFSMetadataLimit 1048576
 ! nsdRAIDFlusherBuffersLimitPct 80
 ! nsdRAIDBlockDeviceQueueDepth 16
 ! nsdRAIDBlockDeviceScheduler deadline
 ! nsdRAIDBufferPoolSizePct (% of PagePool) 80
 ! nsdRAIDEventLogToConsole all
 ! nsdRAIDFastWriteFSDataLimit 262144
 ! nsdRAIDFastWriteFSMetadataLimit 1048576
 ! nsdRAIDFlusherBuffersLimitPct 80
 ! nsdRAIDFlusherBuffersLowWatermarkPct 20
 ! nsdRAIDFlusherFWLogHighWatermarkMB 1000
 ! nsdRAIDFlusherFWLogLimitMB 5000
 ! nsdRAIDFlusherThreadsHighWatermark 512
 ! nsdRAIDFlusherThreadsLowWatermark 1
 ! nsdRAIDFlusherTracksLimitPct 80
 ! nsdRAIDFlusherTracksLowWatermarkPct 20
 ! nsdRAIDMaxTransientStale2FT 1
 ! nsdRAIDMaxTransientStale3FT 1
 ! nsdRAIDReconstructAggressiveness 1
 ! nsdRAIDSmallBufferSize 262144
 ! nsdRAIDSmallThreadRatio 2
 ! nsdRAIDThreadsPerQueue 16
 ! nsdRAIDTracks 131072
 ! nspdQueues 64
 ! numaMemoryInterleave yes
 ! pagepool 76168560640
 ! prefetchPct 40
 ! prefetchThreads 341
 ! scatterBuffers 0
 ! scatterBufferSize 262144
 ! seqDiscardThreshhold 1073741824
 ! socketMaxListenConnections 512
 ! syncWorkerThreads 256
 ! worker1Threads 1024
 ! worker3Threads 32
 ! workerThreads 1024

ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=1059048
ArticleTitle=SAS Foundation の混合ワークロードに対応する新しいソフトウェア定義型コンバージド・インフラストラクチャーの徹底調査
publish-date=03222018