この記事は、インテル® デベロッパー・ゾーンに公開されている「Microsoft* SQL Server* Tuning Guide for Online Analytical Processing Workload on 4th Generation Intel® Xeon® Scalable Processors Based Platform」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
この記事の PDF 版はこちらからご利用になれます。
公開日: 2022年11月7日
はじめに
本ガイドは、Microsoft* SQL Server* を使用するユーザー向けです。ほとんどの状況で最高のパフォーマンスを達成するハードウェアとソフトウェアの設定に関する推奨事項を示します。ただし、Microsoft* SQL Server* の展開方法はさまざまであり、特定のシナリオに合わせてこれらの設定を慎重に検討する必要があります。
Microsoft* SQL Server* は、Microsoft 社が開発したリレーショナル・データベース管理システムです。SQL Server* にはさまざまなエディションがありますが、本ガイドでは SQL Server* Enterprise Edition に注目します。SQL Server* のデータベース・アーキテクチャーは、クライアント・サーバー・アーキテクチャー・モデルに基づいています。本ガイドでは、オンライン分析処理 (OLAP) ワークロード (TPC-H-like) 向けに SQL Server* Windows* 版をチューニングします。
第 4 世代インテル® Xeon® スケーラブル・プロセッサーは、AI、暗号化、HPC、ストレージ、データベース・システム、およびネットワーク向けのアクセラレーターを搭載しており、ワークロードに最適化されたパフォーマンスを提供します。また、独自のセキュリティー技術により、オンプレミスやクラウド上のデータ保護を支援します。
- AI、HPC、ネットワーク、セキュリティー、ストレージ、アナリティクス向けの新しい内蔵アクセラレーター
- インテル® ウルトラ・パス インターコネクト (インテル® UPI)
- インテル® スピード・セレクト・テクノロジー (インテル® SST)
- ハードウェアで強化されたセキュリティー
- 新しいフレックスバス I/O インターフェイス (PCIe* 5.0 + CXL)
- 新しい柔軟な I/O インターフェイス―最大 20 HSIO レーン (PCI 3.0)
- PCIe* 5.0 による I/O 帯域幅の拡大 (最大 80 レーン)
- DDR5 によるメモリー帯域幅の拡大
- インテル® UPI 2.0によるマルチソケット帯域幅の拡大 (最大 16GT/秒)
- インテル® Optane™ パーシステント・メモリー 300シリーズのサポート
サーバー構成
ハードウェア
本ガイドでは、第 4 世代インテル® Xeon® プロセッサーをベースにしています。サーバー・プラットフォーム、メモリー、ハードディスク、ネットワーク・インターフェイス・カードは、使用条件に合わせて決定できます。
ハードウェア | モデル |
---|---|
サーバー・プラットフォーム | インテル® Archer City リファレンス・プラットフォーム |
CPU | 第 4 世代インテル® Xeon® スケーラブル・プロセッサー 8490 |
BIOS | EGSDCRB1.86B.0090.D03 |
メモリー | 4096GB (16x256GB DDR5 4800MT/秒) |
ストレージ/ディスク | 1x インテル® SSD D3-S4510 960GB |
8x インテル® SSD D7-P5510 7.68TB | |
NIC | インテル® イーサネット・ネットワーク・アダプター X722-2 |
ソフトウェア
ソフトウェア | バージョン |
---|---|
オペレーティング・システム | Windows Server* 2022 |
カーネル | ビルド 20348.1129 |
バイナリーバージョン | SQL Server* 2022 RTM (16.0.1000.6) |
ワークロード・キット | TPC-H Stepmaster バージョン 2.7.0-1005 |
BIOS 設定
以下の BIOS 設定は、第 3 世代インテル® Xeon® スケーラブル・プロセッサー向けに設計されたインテルのソフトウェア開発プラットフォームに基づいていることに注意してください。まず、BIOS をデフォルト設定にリセットし、その後、以下の提案に従って変更してください。
BIOS の設定項目 | BIOS の場所 | 推奨値 |
---|---|---|
省電力ターボ | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [CPU P State Control] > [Energy Efficient Turbo] を選択します。 | 無効 |
ターボモード | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [CPU P State Control] > [Turbo Mode] を選択します。 | 有効 |
ブート・パフォーマンス・モード | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [CPU P State Control] > [Boot performance Mode] を選択します。 | 最大パフォーマンス* |
ハードウェア P ステート | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [Hardware PM State Control] > [Hardware P State] を選択します。 | 無効 |
電力パフォーマンス・チューニング | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [CPU – Advanced PM Tuning] > [Energy Perf BIAS] > [Power Performance Tuning] を選択します。 | BIOS が EPB を制御 |
電力パフォーマンス CFG モード | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [CPU – Advanced PM Tuning] > [Energy Perf BIAS] > [ENERGYPERFBIASCFGmode] を選択します。 | パフォーマンス |
ワークロードの設定 | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [CPU – Advanced PM Tuning] > [Energy Perf BIAS] > [Workload Configuration] を選択します。 | デフォルトのまま |
パッケージ C ステート | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [CPU C State Control] > [Package C State Control] > [Packge C State] を選択します。 | C0\C1 ステート |
拡張 C1 ステート (C1E) | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [CPU C State Control] > [Enhanced Halt State (C1E)] を選択します。 | 無効 |
CPU C6 レポート | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [CPU C State Control] > [CPU C6 Report] を選択します。 | 無効 |
C1 自動降格 | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [CPU C State Control] > [CPU C1 auto demotion] を選択します。 | 無効 |
C1 自動降格解除 | EDKII メニューから、[Socket Configuration] > [Advanced Power Management Configuration] > [CPU C State Control] > [CPU auto undemotion] を選択します。 | 無効 |
UMA ベースのクラスタリング | EDKII メニューから、[Socket Configuration] > [Common RefCode Configuration] > [UMA-Based Clustering] を選択します。 | 無効 (All2All) |
サブ NUMA クラスター | EDKII メニューから、[Socket Configuration] > [Uncore Configuration] > [Uncore General Configuration] > [SNC (Sub NUMA)] を選択します。 | SNC2 (2 クラスター) 有効 |
(Windows Server* 2019) VTD の無効化 | [Socket Configuration] > [Processor Configuration] > [Extended APIC] を選択します。 | 無効 |
(Windows Server* 2019) VTD の無効化 | [Socket Configuration] > [IIO Configuration] > [Intel VT for Directed I/O (VT-d)] > [Intel VT for Directed I/O] を選択します。 | 無効 |
メモリーの構成と設定
このワークロードは、スケール・ファクター・サイズに対して少なくとも 40% のメモリー容量比率で最適に実行されます。例えば、10TB のスケールファクターで TPC-H-like を実行する場合、4TB 以上の利用可能なメモリーがあれば最適なパフォーマンスが得られます。このプラットフォームで最大の周波数を達成するには、1DPC が理想的です。ワークロードはメモリー周波数に敏感であるため、利用可能な最も高いメモリー周波数 (本ガイドの執筆時点では DDR5 5600 MTS) で実行することを推奨します。詳細は、プラットフォームのマニュアルを参照してください。
ストレージ/ディスクの構成と設定
使用するドライブの種類と数を以下に示します。各ドライブセット (DB、Temp DB など) は JBOD で、最初の 8 台のディスクを 3 つのボリュームに分割し、各ボリュームに同じサイズを割り当てています。注: この構成は、組織で必要とされる冗長性の懸念には対応していません。
ドライブ番号 | ドライブの説明 | ボリューム 1 | ボリューム 2 | ボリューム 3 |
---|---|---|---|---|
ドライブ 1 | インテル® SSD D7-P5510 7.68TB | data01 | tempdb01 | backup01 |
ドライブ 2 | インテル® SSD D7-P5510 7.68TB | data02 | tempdb02 | backup02 |
ドライブ 3 | インテル® SSD D7-P5510 7.68TB | data03 | tempdb03 | backup03 |
ドライブ 4 | インテル® SSD D7-P5510 7.68TB | data04 | tempdb04 | backup04 |
ドライブ 5 | インテル® SSD D7-P5510 7.68TB | data05 | tempdb05 | backup05 |
ドライブ 6 | インテル® SSD D7-P5510 7.68TB | data06 | tempdb06 | backup06 |
ドライブ 7 | インテル® SSD D7-P5510 7.68TB | data07 | tempdb07 | backup07 |
ドライブ 8 | インテル® SSD D7-P5510 7.68TB | data08 | tempdb08 | backup08 |
ドライブ 9 | インテル® SSD D7-P5510 7.68TB | log | N/A | N/A |
ドライブ 10 | インテル® SSD D3-S4510 960GB | OS | N/A | N/A |
ネットワークの構成/設定
このワークロードは、サーバーとクライアントを接続するすべてのアダプターで以下の設定を行うことで最適に動作します。
例えば、以下の PowerShell* スクリプトは、「Ethernet 2」を設定します。
$ Set-NetAdapterAdvancedProperty -Name "Ethernet 2" -RegistryKeyword '*JumboPacket' –
RegistryValue '9014'
$ Set-NetAdapterRss
-Name "Ethernet 2" -Enable 1 -BaseProcessorGroup 0 -BaseProcessorNumber 0 -MaxProcessors 16 -NumaNode 65535 -MaxProcessorGroup 0 -MaxProcessorNumber 16 -NumberOfReceiveQueues 8 -Profile Closest
さらに、SQL Server* で sp_configure コマンドを使用して以下の設定を行う必要があります。
$ sp_configure network_packet_size,8192
$ go
$ RECONFIGURE WITH OVERRIDE
$ go
ソフトウェアのチューニング
ソフトウェア設定のチューニングは不可欠です。オペレーティング・システムから SQL Server* の設定に至るまで、すべて汎用アプリケーション向けに設計されており、既定の設定で最高のパフォーマンスを発揮できることはほとんどありません。
Microsoft* Windows Server* 2022 の設定
設定項目 | 推奨値 |
---|---|
Windows* ファイアウォール | [コントロール パネル] > [Windows ファイアウォール] > [Windows ファイアウォールの有効化または無効化] (左側のペイン) で、プライベート・ネットワークとパブリック・ネットワークの両方で [Windows ファイアウォールを無効にする] を選択します。 |
視覚効果 | [コンピューター] > [プロパティ] > [システムの詳細設定] > [詳細設定] > [パフォーマンス] > [設定] > [視覚効果] で [パフォーマンスを優先する] を選択します。 |
仮想メモリーの設定 | [コンピューター] > [プロパティ] > [詳細設定] で [仮想メモリー] 以下にある変更ボタンをクリックして、表示されたダイアログで [カスタム サイズ] を選択し、[初期サイズ] と [最大サイズ] を 4096 に設定します。 |
電源オプション | [コントロール パネル] > [ハードウェアとサウンド] > [電源オプション] > [高パフォーマンス] を選択します。 |
ラージページの有効化 | [ファイル名を指定して実行] を選択し、「gpedit.msc」を入力して [OK] をクリックします。表示される [ローカル グループ ポリシー エディター] で [コンピューターの構成] > [Windows の設定] > [セキュリティの設定] > [ローカル ポリシー] > [ユーザー権利の割り当て] で [メモリ内のページのロック」 にユーザーまたは Administrators グループ (または SQL Server* の起動に使用するユーザー) を追加します。そして、変更を反映するため、コンピューターを再起動します。 |
Windows Defender* の削除 | Powershell* コマンド: Remove-WindowsFeature -Name Windows-Defender-Features |
OLAP アーキテクチャー
TPC-H-like ワークロードは、ビジネス指向のアドホッククエリーと同時データ変更で構成されています。大量のデータを調査し、高度に複雑なクエリーを実行し、業界標準のベンチマークとして広く信頼されています。TPC-H-like は、電力フェーズとスループット・フェーズからなる段階的なワークロードです。電力フェーズは、最初に ディスク I/O が高い期間があり、その後に続くスループット・フェーズは、長期間の計算負荷の高いアクティビティーで構成されています。メモリー容量とメモリー帯域幅は、このワークロードのパフォーマンスに大きく影響します。
OLAP ベンチマークのハードウェア構成例:
OLAP ワークロード向けの SQL Server* のチューニング
以下の sp_configure コマンドを使用して、SQL Server* を設定する必要があります。
$ sp_configure show_advanced_options,1
$ go
$ RECONFIGURE WITH OVERRIDE
$ go
$ sp_configure max_degree_of_parallelism,<This number should be equal to number of logical processors/threads>
$ go
$ RECONFIGURE WITH OVERRIDE
$ go
$ sp_configure min server memory,<This number should be equal to 90% of system memory>
$ go
$ RECONFIGURE WITH OVERRIDE
$ go
$ sp_configure max server memory,<This number should be equal to 90% of system memory>
$ go
$ RECONFIGURE WITH OVERRIDE
$ go
$ sp_configure network_packet_size,8192
$ go
$ RECONFIGURE WITH OVERRIDE
$ go
OLAP ワークロードを実行する前に SQL Server* を起動する際に、コマンドラインで以下のフラグを使用する必要があります。
$ Sqlservr.exe -c -x -T834
Related Tools
Microsoft Windows Performance Monitor tool (Perfmon) can be used to monitor overall system and disk performance metrics.
テストと検証のベスト・プラクティス
このワークロードは、データベースをバックアップから復元し、システムを再起動した直後に実行するのが最適です。このワークロードを実行すると、スループット・フェーズですべての論理プロセッサーの CPU 使用率が 90% 以上になるはずです。CPU カーネルの使用率は 1% 未満であるべきです。これは、大量の読み取りを必要とするシーケンシャル I/O の期間の後に、大量のメモリー容量と帯域幅を必要とする計算集約型フェーズが続く段階的なワークロードです。通常、このワークロードは、メモリーサイズがデータベース・サイズの約 40% に相当するときにピーク・パフォーマンスに達します。データベースの整合性の検証については、「関連情報」セクションの TPC-H キットを参照してください。TPC-H キットは、TPC-H ベンチマーク仕様に基づく監査に適した検証ツールを提供します。
まとめ
ここでは、OLAP ベンチマークを使用して、第 4 世代インテル® Xeon® スケーラブル・プロセッサーで最適なベンチマーク結果を得る方法を紹介しました。また、最高のパフォーマンスを得るためのソフトウェアとハードウェアの構成に関する注意点も説明しました。
関連情報
Microsoft* SQL Server*
トランザクション処理性能評議会 (英語)
TPC-H ベンチマーク・キット 3.0.1 (英語)
製品および性能に関する情報
1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。