16コア/プロセッサの2プロセッサコンピュータ上のSQL Server 2012でのCPU使用率が非常に不均一


8

サーバー+ Calライセンスモデルを使用してSQL Server Enterprise 2012をインストールした後、それぞれ16コア(ハイパースレッディングを含まない)の2プロセッサーを搭載したコンピューターにサーバーを非常に大きな負荷にかけた場合、最初のプロセッサーの16コアは十分に活用されていませんでした。 2番目のCPUの最初の4コアは頻繁に使用され、最後の12コアはまったく使用されませんでした(このsqlサーバーバージョンには20コアの制限があるため)。合計CPU使用率は約25%と表示されていました。残念ながら、20個のコアにタスクが均等に分散されていたとしても、サーバーのパフォーマンスは非常に悪くなりました。

Windows ServerはESX Serverの下のVMWare仮想イメージで実行されていましたが、すべてのCPUがWindows Serverに割り当てられていました。

アフィニティ設定の変更(たとえば、ほとんどのコアをCPUに割り当て、他のコアをI / Oに割り当てるなど)を試みましたが、パフォーマンスの問題の解決には役立ちませんでした。

製品エディションをSQL Server Enterprise Core 2012にアップグレードすると、SQL Serverは2番目のプロセッサで以前に使用されていなかった12個のコアを利用できるだけでなく、すべてのプロセッサにタスクがより均等に分散されました。リクエストのバックログを処理するために、cpU使用率は約90%に跳ね上がり、追いつかれると約33%に下がりましたが、新しく更新されたバージョンにフェイルオーバーしたため、パフォーマンスは劇的に向上し、パフォーマンスの問題はなくなりました。

SQL Serverが負荷を不均一に分散させる原因を誰かが知っていて、12コアがアイドル状態である2番目のプロセッサの最初の4コアにほぼ独占的に依存していて、最初の16コアのそれぞれにいくつかのタスクのみを割り当てているのではないかと思いました。プロセッサ。また、製品エディションをアップグレードせずに使用されていた20コアに負荷をより均等に分散させる方法はありますか?

その質問の裏側は、SQL Serverが認識したすべてのコアに負荷を均等に分散し始めた原因となった製品アップグレードによって何が行われたのでしょうか。

これらの質問やリンクに回答するための洞察に感謝します。これにより、起こったことを理解する方法をよりよく理解するのに役立ちます。


問題のマシンは32個のvCPUを備えたVMだと言っていますか?両方のシナリオで?
mfinni

はい、それは2つのプロセッサを備えた同じマシンであり、それぞれ16コアを備えていました(ハイパースレッディングは関与していませんでした)。
cooplarsh

1
なぜ主の名の下に32個のvCPUがあるのですか?それを減らしてみましたか?ESXiがCPUのギャングスケジューリングを改善したことは知っていますが、あなたはそれだけの問題を求めています。使用しているESXiのバージョンと、基盤となるハードウェアは何ですか?
mfinni 2012年

回答:


4

不均一なパフォーマンスは、20コアの制限と、SQLサーバーがNUMAマシンでスレッドをスケジュールする方法を組み合わせたものである可能性があります。残念ながら、SQL Server 2012はどの20コアを使用するかを決定する際にインテリジェンスを使用しないため、NUMAノードあたりのコア数が不均衡になります。2つのNUMAノードに32コアが分散しているため、16/4に分割される可能性があります。SQLはラウンドロビン方式でNUMAノード間でアクティビティを均等に分散しようとするため、これには問題があります(リソースガバナとのアフィニティを強制していない場合)。

あなたのケースでは、負荷の1/2が4コア、1/2から16コアに割り当てられています。4コアノードのボトルネックは実質的にスロットルとして機能し、マシンの容量を2x 4コア= 8コア= 25%のCPU使用率に制限します。

コアエディションにアップグレードすると、SQLは2つのNumaノード全体で32コアすべてを使用しました(16/16分割)。性能向上など

パフォーマンスを向上させる1つのオプションは、SQLサーバーのリソースガバナーを使用して、ワークロードの大部分を1つのNumaノードにアフィニティ化することでした。たとえば、リソースプールWEB_APPを作成し、16コアのnumaノードでのみ実行されるようにアフィニティ化できます。WEB_APPプールに割り当てられた負荷は、サーバー容量の50%、および4コアノードの残りの12.5%の容量を利用できます。

もう1つのオプションは、SQLサーバーで使用可能なコアを、各Numaノードから10のみに制限することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.