SQL ServerがすべてのCPUコア/スレッドを使用していない


15

SQL Serverのハードウェアをアップグレードした後、Windowsタスクマネージャーで、SQLインスタンスが使用可能なスレッドの半分しか使用していないことに気付きました。

タスクマネージャー

サーバーには次のハードウェアとソフトウェアがあります。

  • Windows 2008 R2 Enterprise 64ビットSP1
  • Intel Xeon E7-4870-4プロセッサー(40コア、80スレッド)
  • Microsoft SQL Server 2012 Enterprise Edition(64ビット)

実行select cpu_count from sys.dm_os_sys_infoすると40が返されます。

OSは80スレッドすべてを認識します。

サーバーの処理能力の半分しか使用されていないのはなぜですか?

2台のサーバーに同じハードウェアとソフトウェアがあり、どちらも同じ動作を示します。

回答:


23

SQL Serverのエラーログには、理由が表示されます。私は顧客システムでこれを見つけました(実際にGoogleジュースのメッセージを貼り付けているだけです):

SQL Serverは、ソケットあたり8コア、ソケットあたり16の論理プロセッサ、合計64の論理プロセッサを持つ4つのソケットを検出しました。SQL Serverライセンスに基づいて40の論理プロセッサを使用します。これは情報メッセージです。ユーザーの操作は必要ありません。

私はここからおそらく説明を得ました:

既存のSQL EE Serverライセンスでソフトウェアアシュアランスを保有している(または期間中に現在のEnterprise Agreementに基づいてアクセスする)顧客向けに、Enterprise Editionのバージョンが作成され、SQL Server 2012にアップグレードできるようになりました。 20個のプロセッサコア(ハイパースレッディングで40個のCPUスレッド)のみを使用します。

要約:エラー・ログに、版はどちらかとして報告されますEnterprise EditionEnterprise Edition: Core-based Licensing。前者の場合、前述の顧客システムの場合のように、利用可能なすべてのコアを使用するには、コアベースのライセンスを取得する必要があります。

そうではなく、すべてのコアのライセンスを既に取得している場合は、特にそれらが設定されていて、基盤となるハードウェアがアップグレードされている場合、アフィニティマスク設定を確認してください。


同様の問題がありました。1ソケットと32コアでVMを構築します。SQLは8つのCPUのみを認識します。これを8ソケットと4コアに切り替えて、問題はなくなりました。Windows 2008r2でSQL 2008r2のエンタープライズ編集を実行している場所。
user3799984

標準バージョンでも同じ問題が発生しました。8個のソケットを使用しましたが、残りは使用しません。VMを変更し、4ソケット2コアを構成するだけです。
ニコラス・ド・フォントネ

7

SQL Serverが最初に起動したときからERRORLOGを調べます。使用しているCPUの数と、おそらくその理由がわかります。ERRORLOGファイルをどこかに投稿できれば、何が起こっているのかを知るのに役立ちます。


3

Ajmer Dhariwalによる別の投稿でこれを見ました:

Enterpriseエディションを使用している場合でも、適用されるライセンスモデルがサーバー+クライアントアクセスライセンス(CAL)ベースの場合、サーバーはインスタンスごとに20物理コアに制限されます

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