最近、私たちの学区はいくつかのサーバーをバージョン2005から2016に、物理サーバーからVMサーバーにアップグレードしました。
インフラストラクチャチームは、VMシングルコアのSQL Serverインストール用のサーバーを提示しました。
その部門の責任者に、SQL Serverがシングルコア上にあることが「嫌い」であり、彼が「証拠」を見たいと望んでいることを説明しようとしています。私が提示したデータのいずれも彼の証明の必要性を満たしていなかったため、VM SQL Serverがシングルコアで効率的に動作しない理由に関するいくつかの記事を求めました。
これにはどの記事を使用しますか?
私のケースを作るために私に何か助けていただければ幸いです!
CPUを消費するSQL Server以外のプロセスがあると、SQL Server全体が完全に使用できなくなります。
例として、Windows Updateは、.Netアセンブリの解凍中にSQL Serverを停止します。
ウイルス対策プロセスは、SQL Serverのデータファイルとフォルダーを除外するように構成されている場合でも、ファイルのスキャン中および更新されたウイルス定義ファイルの解凍中にSQL Serverが応答しなくなる可能性があります。
IBM Tivoli Server Monitorなどの管理ソフトウェアがインストールされていて、1つのコアの100%を使用することにした場合、マシンをコールドシャットダウンする以外のことはできないでしょう。なぜそれを取り上げているのかと聞かないでください。
続行できますが、シングルコアのanyサーバーは単にパフォーマンスと管理性の問題を求めているだけです。シングルコアのcomputerは、今日は使用できないと考えられることを確認してください。ヘック、私のphoneには8つのコアがあります。
その間、仮想化担当者に各SQL Serverに合理的なメモリ予約を与え、SQL Serverのメモリがホストのメインメモリからディスクにページングされないようにします。
深刻なVMwareがホストするSQL Serverの場合は、 VMwareベストプラクティスでのSQL Serverの設計 ガイドに従ってVMwareを構成する必要があります。
それは本当にシングルコアに要約されますVM常に特定の時点で単一のスレッドしか実行できません。仮想化はではありませんスレッドあたり1コアの状況に対する特効薬。
上記の点は、Windows NT(Windowsのすべての最新バージョンが組み込まれている1993コードベース)がプリエンプティブマルチタスクを利用することを考慮に入れています。プリエンプティブマルチタスクにより、O/Sは定期的なスケジュールでコンテキスト切り替えを強制することにより、マルチタスクを実行できます。プリエンプティブなマルチタスク処理を使用しても、単一のタスクが可能な限り多くのCPUを使用することを決定した場合、シングルコアのサーバーは依然としてパフォーマンスが非常に低下します。より優先度の高いタスクの実行を許可しながら、CPUを100%に強制します。 CPUが100%に達したときにSQL Serverが実行されている場合、SQL ServerのCPUの量は非常に顕著になるほど減少します。上記のシナリオでは、マシン(またはSQL Serverでも)が完全に「停止」または「停止」するとしなかったと言いました。それは単に真実ではありません。ただし、マシンはsoビジーになり、すべての目的でマシンが使用できなくなります。 2つ目のコアを追加すると、万能薬ではありませんが、マシンが完全に応答しなくなる可能性が低くなります。コアが追加されるたびに、別のスレッドが100%のCPUで実行され、マシンが使用できなくなることはありません。
以前にこれと同じことを証明しなければなりませんでした。最終的にキャパシティプランニングチームに到達したのはバックアップ中、データベースはほとんど使用できませんでした。
DBAとしての最大の懸念は、データ損失です。停止したり停止したりせずにバックアップを自信を持って実行できない場合、それは大きな問題です。いくつかのテストを実行して、バックアップの実行中にパフォーマンスに影響があることを確認してから、複数のコアがあれば問題は解消されることを説明します。
おそらく、SQL Server VMごとに1つのコアのみを割り当てることをお勧めします。
次に、彼らの答えによっては、このリンクの項目3.3.2に基づいて彼らを説得しようとするかもしれません:
SqlServer-on-vmware-best-pratices
初期サイジングでは、すべてのVMに割り当てられているvCPUの合計数が物理コアの合計数以下であることをお勧めします
インフラストラクチャチームがVMあたり1コアのみをプロビジョニングする理由がその項目ではない場合、おそらく、ハードウェアが無駄になっています。
サーバーに複数のCPUが必要であるという説得力のある証拠を提供するには、サーバーで実行されているワークロードとクエリに関する情報を提供する必要があります。たとえば、100 MB未満のデータベースが1つしかなく、すべてのクエリが非常にシンプルで効率的である場合、コアを増やすことによるメリットはほとんどありません。
並列に実行されるクエリプランと、それらが完了するまでの時間のキャプチャを開始することをお勧めします。これは、システムで実行されているワークロードが複数のCPUを使用することでメリットを得ることを示しています。
VM環境ですでに稼働している場合は、CPU使用率のパフォーマンスデータもキャプチャする必要があります。CPUが長期間100%で最大になっていることを示すことができる場合、これはまた、システムがより多くのCPUを必要とすることを示す良い証拠にもなります。