VM上のシングルコアSQL Server


7

最近、私たちの学区はいくつかのサーバーをバージョン2005から2016に、そして物理サーバーからVMサーバーにアップグレードしました。

私たちのインフラストラクチャチームは、SQL Serverインストール用のVMサーバーをシングルコアで提示しました。

その部門の責任者に、SQL Serverがシングルコア上にあることが「嫌い」であり、彼が「証拠」を見たいと望んでいることを説明しようとしています。私が提示したデータはどれも彼の証明の必要性を満たしていなかったため、VM SQL Serverがシングルコアで効率的に動作しない理由に関するいくつかの記事を求めました。

これにはどの記事を使用しますか?

私のケースを作るために私に何か助けていただければ幸いです!


7
VMでSQLのライセンスを取得すると、とにかく2パックのライセンスの料金が発生します。たとえ教育的割引を受けても、少なくとも2つのコアを与えないことでお金を使い果たしています。
エリックダーリン

4
2015年のGlenn Barry(10年以上のMicrosoft MVP)の記事を参照してください。SQL2014の推奨CPUリストされており、最小のCPUには6つのコアがあります。
LowlyDBA 2018年

2
また、しばらく前に、クラウドでのVMのサイジングに関するGoogleのホワイトペーパーを書きました。これをオンプレミスにも適用できます。
エリックダーリン

@sp_BlitzErikコメントを拡張すると、VMであろうと物理であろうと、単一のSQL Serverに適用できる最小コアライセンスは4ライセンスです(ライセンスガイドを参照)。別の方法は、ホストの物理コアにライセンスを付与することです。そのモデルでは、選択した数のvCoreを備えたVMを自由に実行できます。
Mark Storey-Smith

回答:


11

CPUを消費するSQL Server以外のプロセスがあると、SQL Server全体が完全に使用できなくなる可能性があります。

例として、Windows Updateは、.Netアセンブリの解凍中にSQL Serverを停止します。

ウイルス対策プロセスは、SQL Serverのデータファイルとフォルダーを除外するように構成されている場合でも、ファイルのスキャン中および更新されたウイルス定義ファイルの解凍中にSQL Serverが応答しなくなる可能性があります。

IBM Tivoli Server Monitorなどの管理ソフトウェアがインストールされていて、1つのコアの100%を使用することにした場合、マシンをコールドシャットダウンする以外のことはできないでしょう。なぜそれを取り上げているのか、私に聞かないでください。

私は上に行く、しかし、言えば十分可能性が任意のシングルコアを持つサーバーは、単にパフォーマンスと管理性とのトラブルを求めています。確認してください。シングルコアのコンピュータは、今日は使用できないと見なす必要があります。ヘック、私の電話は8コアを持っています。

その間、仮想化担当者に各SQL Serverに適切なメモリ予約を与えるように説得して、SQL Serverのメモリがホストのメインメモリからディスクにページングされないようにします。

VMwareがホストする深刻なSQL Serverの場合、VMwareの構成に関するSQLベストプラクティスガイドに従ってVMwareを構成する必要があります。

結局のところ、シングルコアVMは、常に単一のスレッドしか実行できません。仮想化は、スレッドあたり1コアの状況では特効薬ではありません

上記の点は、Windows NT(すべての最新バージョンのWindowsが構築されている1993コードベース)がプリエンプティブマルチタスクを利用することを考慮に入れています。プリエンプティブマルチタスクにより、O / Sは定期的なスケジュールでコンテキスト切り替えを強制することにより、マルチタスクを実行できます。プリエンプティブマルチタスク処理を使用しても、単一のタスクが可能な限り多くのCPUを使用することを決定した場合、O / Sがそのタスクにできるだけ多くのCPU時間を与えるため、シングルコアのサーバーは依然としてパフォーマンスが非常に低下します。より優先度の高いタスクの実行を許可しながら、CPUを100%に強制します。CPUが100%に達したときにSQL Serverが実行されている場合、SQL ServerのCPUの量は非常に顕著になるほど減少します。私が概説した上記のシナリオでは、私はしませんでしたたとえば、マシン(またはSQL Server)は完全に「停止」または「停止」します。それは単に真実ではありません。ただし、マシンが非常にビジーになり、すべての目的でマシンが使用できなくなる場合があります。2つ目のコアを追加すると、万能薬ではありませんが、マシンが完全に応答しなくなる可能性が低くなります。コアが追加されるたびに、別のスレッドがCPUを100%まで実行でき、マシンが使用できなくなることはありません。


Windowsサーバーには、プリエンプティブなマルチタスク機能がありません(常にありました)。あなたが説明していることを誤解していない限り、協調的なマルチタスク処理は、プロセスが高レベルのタスクを実行したときに互いに譲歩します。確かに競合は応答を遅らせるかもしれませんが、それは物事を完全に停止させるべきではありません。マルチコアはベストプラクティスではないにしても良い考えですが、レイアウトする終末のシナリオは正しくないようです。
マット・フリーマン

以前に物理的なシングルコアであり、シングルコアインスタンスと通信するアプリがソート順を指定しないなどのベストプラクティスに違反し、そのような条件がない場合に順序付けが暗黙的に安定していると見なした場合は、シングルコアのままにすることにも十分な理由があります。次に、マルチコアに切り替えると、以前はシングルコアの性質によって抑制されていたバグが表示される可能性があります。あなたは再QAにこれらのアプリケーションや開発者にはほとんど信仰または予算を持っていない場合、おそらく彼らはすでに行ってきた、時には安全な賭けすることができさらさコアの面で物理サーバを既存のマッチング
マット・フリーマン

こんにちは@MâttFrëëman-私はプリエンプティブマルチタスクを扱うセクションを私の回答に追加しました。Windows MEを含め、元のWindowsコードベースで使用されていたDOSベースの協調マルチタスキングと比較して、NTコードベースがはるかに優れていることを思い出しました。
Max Vernon

シングルコアにとどまることが必要な悪である場合があるというあなたの多くのコメントに同意します。私の答えは、仮想化された物理マシンは、マルチコアVMを必要とするOPの要望に基づいて、おそらくマルチコアサーバーであると想定しています。
Max Vernon

@MaxVernonありがとう、これはまさに私たちが必要としたものです!
Deb

6

私は以前に同じことを証明しなければなりませんでした。最終的にキャパシティプランニングチームに到達したのは、バックアップ中にデータベースがほとんど使用できなくなったことです。

DBAとしての最大の懸念は、データ損失です。停止したり停止したりせずにバックアップを自信を持って実行できない場合、それは大きな問題です。いくつかのテストを実行して、バックアップの実行中にパフォーマンスに影響があることを確認してから、複数のコアを使用すると問題が解決することを説明します。


3
実際、SQL Serverに関係なく、またはSQL Serverに関連しないものであっても、重大な量のI / Oが問題を引き起こす可能性があります。
Max Vernon

3
@MaxVernon絶対に-以前に対処した問題(午前3時、ナッチ)であるため、具体的にバックアップを作成しました。簡単に証明でき、「停止なしではバックアップを実行できません!」妥当なインフラストラクチャ管理者が1つのコアを惜しまないようにするのに十分なはずです。
Neghtasro、

2

サーバーに複数のCPUが必要であるという説得力のある証拠を提供するには、サーバーで実行されているワークロードとクエリに関する情報を提供する必要があります。たとえば、100 MB未満のデータベースが1つしかなく、すべてのクエリが非常にシンプルで効率的である場合、コアを増やすことによるメリットはほとんどありません。

並列処理されるクエリプランと、それらが完了するまでの時間のキャプチャを開始することをお勧めします。これは、システムで実行されているワークロードが複数のCPUを使用することでメリットを得られることを示しています。

VM環境ですでに本番環境にある場合は、CPU使用率のパフォーマンスデータもキャプチャする必要があります。CPUが長期間100%に達していることを示すことができれば、これはシステムがより多くのCPUを必要とすることの良い証拠にもなります。


5
もちろん、シングルコアVMには並列プランはありません。これらの計画は、単一コア以上のボックスでキャプチャする必要があります。
Max Vernon

3
Maxのコメントに追加すると、シングルコアのサーバーでプランXMLを見ると、が表示されますNonParallelPlanReason="EstimatedDOPIsOne"
エリックダーリン

@Tony私はすでにいくつかのデータ提供しましたが、VMマシンではシングルコアがベストプラクティスであると言われました。したがって、私の助けが必要です!
デブ

1
@Deb Oh my--そのベストプラクティスを聞いたことがない!ここからブレント・オザーの悲しいトロンボーンが聞こえてきます。そのような発言をする人がVMインフラストラクチャを担当しているのではないかと心配になります。
トニーヒンクル2018年

@TonyHinkle-同意する。シングルコアVMは決して良いアイデアではありません。孤独な人に「ベストプラクティス」をさせてください。OK、たぶん99.999%の確率で "never"ではなく:-/
Max Vernon

2

おそらく、SQL Server VMごとに1つのコアのみを割り当てることをお勧めする理由を彼らに尋ねるべきでしょう。

次に、彼らの答えによっては、このリンクの項目3.3.2に基づいて彼らを説得しようとするかもしれません:

SqlServer-on-vmware-best-pratices

初期サイジングでは、すべてのVMに割り当てられているvCPUの合計数が物理コアの合計数以下であることをお勧めします

インフラストラクチャチームがVMごとに1つのコアのみをプロビジョニングする理由がその項目ではない場合、おそらく、ハードウェアが無駄になっています。


この見積もりがCPUの増加にどのように役立つかわかりませんか?
LowlyDBA、2018年

はい。ただし、インフラストラクチャチームがVMごとにCPUを追加しなかった理由はそれほど明確ではありません。
ロジャール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.