この記事では、構成可能な制約付きコア (CCC) と同時マルチスレッド (SMT) 設定を無効にする機能を含む Azure VM の VM 仮想コアのカスタマイズ を使用して、Azure Virtual Machines (VM) 上の SQL Server のパフォーマンスを最適化し、ライセンス コストを削減する方法について説明します。
注
VM 仮想コアのカスタマイズ は、現在、Azure VM 上の SQL Server のプレビュー段階です。
概要
構成可能な制約付きコア (CCC) は、Azure VM の元の制約付き vCPU モデルに基づいて改善されます。 親仮想マシンよりもアクティブな仮想コア (vCPU とも呼ばれます) の数を細かく制御できます。 CCC を使用すると、SQL Server のお客様は VM メモリと I/O に関係なく仮想コアを割り当てることができます。 この構成により、コア ライセンスごとに大幅な節約が可能になりますが、バッファー プール、列ストア、 tempdb、バックアップ/復元スループット、ストレージ帯域幅に必要なメモリと IO ヘッドルームは維持されます。
必要に応じて、CCC をレイテンシーに敏感なワークロードに対して使用する場合、同時マルチスレッド (SMT) /ハイパースレッディング を無効にし (コアあたりのスレッド数を 1 に設定) 組み合わせることが可能です。
これらの VM カスタマイズ オプションを組み合わせることで、他の VM サイズ機能を犠牲にすることなく、ゲスト OS への CPU プレゼンテーションをきめ細かく制御できます。
元の制約付き vCPU モデル
元の 制約付き vCPU モデルは、VM の完全なコンピューティング容量を利用する必要のないワークロードのコスト効率を最適化するように設計された Azure VM の機能です。 制約付き vCPU を使用すると、元の VM サイズと同じメモリ、ストレージ、ネットワーク リソースを維持しながら、vCPU の数を減らした VM サイズを選択できます。 この機能は、コンピューティング バインドではなくメモリまたは IO を集中的に使用するアプリケーションに特に役立ちます。
たとえば、使用可能な CPU リソースの一部を使用するアプリケーションのメモリ構成が高い M シリーズ ファミリ VM をデプロイしたとします。 制約付き vCPU 機能を使用すると、同じ M シリーズ VM をデプロイできますが、アクティブな vCPU は少なくなります。 この vCPU の削減により、特に SQL Server などの仮想コアの数に基づくソフトウェア ライセンスの場合、大幅なコスト削減につながる可能性があります。
制約付き vCPU は VM サイズの選択に組み込まれており、VM の名前はコア数の減少を示します。 たとえば、VM サイズ E96-24ads_v5 には、親 E96ads_v5 VM サイズで使用できる完全な 96 個の vCPU ではなく、24 個のアクティブ vCPU があります。 引き続き 672 GB の RAM と、親仮想マシンのストレージとネットワーク パフォーマンスが保持されます。 詳細については、 制約付き vCPUS で使用可能なサイズの完全な一覧を参照してください。
制約付き vCPU は、次の場合に最適です。
- メモリとストレージのパフォーマンスが重要ですが、CPU 使用率が低いデータベース サーバー。
- コアごとのライセンス コストが高いアプリケーション。
制限付き vCPU では、支払う仮想コア数は少なくなりますが、親またはホスト仮想マシンのコンピューティング コストと Windows Server ライセンスの料金は引き続き課金されます。
元の制約付き vCPU モデルの主な利点と機能
次の一覧では、Azure VM 上の SQL Server に制約付き vCPU を使用する主な利点と機能について説明します。
- 価格パフォーマンスの利点: 元の vCPU の 50% または 75% の VM サイズを選択できます。これにより、SQL Server のライセンス コストが大幅に削減されます。
- メモリ: メモリ割り当ては親 VM 構成と同じであるため、メモリ負荷の高いワークロードは侵害されません。
- ストレージ: ストレージのパフォーマンスは親 VM 構成と同じであるため、ストレージ集中型ワークロードは影響を受けません。
- パフォーマンス: vCPU を減らすと、スレッドの競合を減らし、アプリケーションのニーズに合わせて CPU 使用率を調整することで、パフォーマンスを向上させることができます。
注
SQL Server では、 NUMA ノードあたり 64 を超える論理プロセッサを持つ構成はサポートされていません。 SQL Server 2022 CU15 以降、この制限を超えるサーバーに SQL Server をインストールしようとすると、インストールが失敗し、エラー ログにサポートされていない NUMA 構成が示されます。
元の制約付き vCPU モデルの欠点
元の制約付きコア モデルは、大幅なコスト削減と柔軟性を提供しますが、いくつかの欠点があります。
- VM ファミリ間の一貫性のないサポート: すべての Azure VM ファミリが制約付き vCPU をサポートしているわけではありません。
- 柔軟性の制限: 元の制約付き vCPU モデルでは、親 VM の仮想コアの 25% または 50% のみに制限され、細分性はありません。 この制限は、親 VM の完全なリソースを必要とするが、特定の少数の仮想コアのみを必要とするワークロードでは問題になります。
-
スケーリングの課題: VM のサイズが大きくなると、粒度の不足が顕著になります。 たとえば、
Standard_M416ms_v2VM には 416 個の仮想コアが用意されており、制約付きオプション (208 仮想コア) であっても、多くの SQL Server デプロイのニーズをはるかに超える可能性があります。
構成可能な制約付きコア (CCC) で導入された機能強化
Azure VM 構成可能な制約付きコア (CCC) モデルでは、次の機能など、SQL Server VM デプロイに真の柔軟性と一貫性が導入され、元の制約付き vCPU モデルの欠点が解決されます。
- 細かいコア選択: CCC を使用すると、事前設定された分数に制限されるのではなく、VM のアクティブな vCPU の数を指定できます。 つまり、親 VM サイズの完全なメモリ、ストレージ、I/O 帯域幅を保持したまま、サポートされている vCPU 数 (16、32、48 など) を選択できます。
- 一貫性のある可用性: CCC は幅広い VM ファミリで利用でき、一貫性のないサポートのリスクが軽減されます。 ワークロードとライセンスのニーズに最適な VM を自信を持って選択できます。
- ライセンスとリソース使用率の最適化: アクティブな vCPU の数を SQL Server ライセンスの権利とワークロードの要件に合わせることにより、CCC は未使用のコアの支払いを回避するのに役立ちます。これにより、より大きな VM サイズのパフォーマンス特性を完全に使用できます。
- 顧客満足度の向上: CCC を使用することで、コストとパフォーマンスの両方を最適化する柔軟性が得られ、予期しない費用や最適でない構成の可能性が減り、SQL Server VM のデプロイに対する全体的な満足度が向上します。
CCC を使用すると、SQL Server のお客様は、Azure VM のデプロイを調整し、ライセンスの効率とリソース使用率を最大化しながら、コストと複雑さを最小限に抑えることができます。
Azure VM 上の SQL Server の CCC のベスト プラクティス
構成可能な制約付きコア (CCC) は、Azure VM 上の SQL Server に特に便利な機能です。 パフォーマンスとコストの両方に合わせてデプロイを最適化できます。
- コアごとの SQL Server ライセンスを実際の CPU ニーズに合わせます。SQL Server ワークロードが CPU バインドではなくメモリまたは I/O バインドである場合は、メモリとディスクのスループットに対してより大きな VM サイズを選択しますが、ライセンスされたコアと一致するようにアクティブな vCPU を制限します。 この選択により、同じ VM メモリと I/O 特性を維持しながら、SQL Server のライセンス コストを削減できます。
- 待機時間の一貫性の向上: OLTP と待機時間の影響を受けやすいデータベース パターンによっては、SMT (コアあたりのスレッド数 = 1) を 無効にすると 、重要なクエリまたは同期ワークロードの論理コア競合と末尾待機時間が短縮されます。 1 つのデプロイで SMT Off と CCC を組み合わせることができます。
- デプロイを計画する: デプロイする前に、SQL Server ワークロードを分析して、必要な vCPU の最適な数を決定します。 CCC と SMT の設定は、VM の初期作成時またはサイズ変更操作中にのみ変更できます。 実行中の VM でこれらのオプションを変更することはできません。サイズ変更には再起動が必要です。
-
vCPU を適切に割り当てる: 値を指定する場合、アクティブな vCPU (
vCPUsAvailable) の数が、選択した VM サイズの既定の vCPU 数を超えないようにする必要があります。 ハイパースレッディングを使用する VM サイズ (コアあたり 2 つのスレッド) の場合、vCPUsAvailableの有効な値は偶数 (2、4、6 など) ですが、ハイパースレッド化されていないサイズでは 1 ずつインクリメントできます。 VM のサイズを別の互換性のあるサイズに変更した場合、CCC と SMT の設定は保持されます。 ターゲット VM サイズでこれらの機能がサポートされていない場合、サイズ変更操作はブロックされます。 Azure ハイブリッド特典をアクティブ化する場合、またはコア ライセンスごとに使用する場合は、vCPUsAvailableを実行する ライセンスコア数 に設定します。 SQL Server では、その数の論理プロセッサのみが表示されます。 この選択により、不要な SQL コアに対して料金を支払うことなく、より大きなメモリまたは I/O VM (バッファー プールまたはスループット用) を選択できます。 Sql Server 上の タスク マネージャー と sys.dm_os_sys_info を使用して、Windows 内のコア数を検証します。 - SMT を無効にする: 一部の OLTP ワークロードでは、共有コア リソースの競合が減るため、SMT を無効にするとメリットがあります。 分析や高度に並列なワークロードなどの他のワークロードは、SMT を有効のままにすることでメリットを得ることができます。 最終的に終了する前に、代表的なロード テストを使用してワークロードの両方をテストします。
- NUMA と MAXDOP: CCC は、基になる VM メモリまたは I/O スループットではなく、論理 CPU 数のみを変更します。 コアを制約した後の並列処理の MAXDOP と コストのしきい値 を確認して、削減された CPU で最適な並列処理を確保します。 SQL Server ワークロードごとにチューニングすることで、一般的なパフォーマンスのベスト プラクティスを適用します。
- 可用性グループとバックアップ: コアを制約しても、VM サイズのディスク スループットの権利は変更されません。 バックアップと復元、可用性グループの同期には、より大きな VM のストレージ帯域幅を引き続き使用できます。 このスループットは、アクティブ コア数が少ない、より大きなメモリまたは I/O サイズを選択するための一般的なドライバーです。
- 追加料金なし: CCC または SMT/HT コントロールを使用するための 追加 の Azure VM コストは発生しません。VM コンピューティングの価格は、コンピューティング、メモリ、ストレージのコストを含む、選択したサイズと同じままです。 潜在的な節約は、 vCPU 数の削減を認識するコア ライセンス ソフトウェア (SQL Server など) ごとに発生します。 ライセンス条項を確認して、節約額と全体的なコストを見積もります。
SQL Server のデプロイ パターンのサンプル
次の SQL Server ワークロードデプロイ パターンの例を考えてみましょう。
- メモリ集中型 OLTP: 高メモリの E シリーズまたは Ebdsv5 VM を選択します。 を SQL Server ライセンス (8 コアなど) と一致するように設定し、必要に応じて、待機時間が影響を受けやすいワークロードに対して SMT を無効にするようにを設定します。 この構成では、ライセンス コストを削減しながら、VM のメモリと I/O が保持されます。
- メモリと記憶域を集中的に使用する OLAP/DW: 高いメモリとストレージ用の M シリーズ VM を選択します。 を SQL Server ライセンス (32 コアなど) と一致するように設定し、必要に応じて、待機時間が影響を受けやすいワークロードに対して SMT を無効にするようにを設定します。
-
バックアップと復元のスループット: BLOB またはマネージド ディスクに対する最大帯域幅を実現するために、ストレージ最適化 VM を選択します。
vCPUsAvailable必要な SQL コアの数に設定し、ライセンス数を減らしながら高いディスク スループットを維持します。
CCC の使い方を始める
Azure portal、Azure CLI、PowerShell、ARM テンプレートを使用して、Azure VM の CCC と SMT の設定を設定できます。 詳細については、 VM 仮想コアのカスタマイズを確認してください。
Azure VM をデプロイまたはサイズ変更した後、ゲスト オペレーティング システム内と SQL Server 内の CPU 構成を検証して、設定が正しく適用されていることを確認します。
Windows での CPU 構成の検証
タスク マネージャー (パフォーマンス → CPU) を使用して、論理プロセッサ数を確認します。
管理コマンド プロンプト内で wmic cpu get NumberOfCores,NumberOfLogicalProcessors を実行して、SMT の状態を確認します。
SQL Server での CPU 構成の検証
SELECT cpu_count, hyperthread_ratio FROM sys.dm_os_sys_info;を実行して、論理 CPU 数と SMT を確認します。
新しい CPU 数に対して 並列処理の最大度数 (MAXDOP) および 並列処理のコストしきい値 を確認して調整します。
制限事項
Azure VM 上の SQL Server に対して VM 仮想コアのカスタマイズを使用する場合は、次の制限事項を考慮してください。
- サポートされているイメージには、Windows Server、Ubuntu、RHEL、SUSE、カスタム イメージなどのファースト パーティのイメージが含まれます。 サード パーティの Marketplace イメージはサポートされていません。 非推奨の Marketplace SQL VM Linux イメージはサポートされていません。
- 現在、CCC は、米国中西部、北ヨーロッパ、東アジア、英国南部などの一部のリージョンで利用できます。
- CCC/SMT は、 作成 操作または サイズ変更 操作中にのみ設定できます。 動的ランタイムの変更はサポートされていません。 サイズを変更すると再起動が発生します。
よく寄せられる質問 (FAQ)
よく寄せられる質問を次に示します。
CCC は VM のメモリまたはストレージのスループットを変更しますか?
No. CCC は、ゲスト OS に表示される vCPU の数のみを変更します。 選択した VM サイズのメモリと I/O を保持します。
ダウンタイムなしで CCC のオンとオフを切り替えることができますか?
No. VM 作成時またはサイズ変更時に CCC を有効にする必要があります。 再起動が発生します。
SQL Server はライセンスのコア数の削減を認識しますか?
Yes. SQL Server およびその他のコア ライセンスソフトウェアには、OS が受け取る vCPUsAvailable 値のみが表示されます。 ライセンス条項を確認してください。