SQL Serverのハードウェアをアップグレードした後、Windowsタスクマネージャで、SQLインスタンスが使用可能なスレッドの半分しか使用していないことに気付きました。
。
サーバーには次のハードウェアとソフトウェアがあります。
ランニング select cpu_count from sys.dm_os_sys_info
は40を返します。
OSは80スレッドすべてを認識します。
サーバーの処理能力の半分しか使用されないのはなぜですか?
2つのサーバーに同じハードウェアとソフトウェアがあり、どちらも同じ動作を示します。
SQL Serverのエラーログでは、その理由がわかります。私はこれを顧客のシステムで見つけました(本当にGoogleジュースのメッセージを貼り付けただけです):
SQL Serverは、ソケットあたり8コア、ソケットあたり16の論理プロセッサ、合計64の論理プロセッサを持つ4つのソケットを検出しました。 SQL Serverライセンスに基づく40の論理プロセッサを使用します。これは情報メッセージです。ユーザーの操作は必要ありません。
here からおそらく説明が得られます:
既存のSQL EEサーバーライセンス(または期間中の現在のエンタープライズ契約に基づくアクセス権)のソフトウェアアシュアランスをお持ちのお客様向けに、SQL Server 2012へのアップグレードを可能にするEnterprise Editionのバージョンが作成されました。このバージョンには、インスタンスを制限する技術的な制限があります。 20プロセッサコア(ハイパースレッディングで40 CPUスレッド)のみを使用します。
概要:エラーログでは、エディションは次のいずれかとして報告されますEnterprise Edition
またはEnterprise Edition: Core-based Licensing
。前者の場合、前述のカスタマーシステムの場合のように、使用可能なすべてのコアを使用するには、コアベースのライセンスを取得する必要があります。
それ以外の場合で、すべてのコアのライセンスをすでに取得している場合は、アフィニティマスクの設定を確認してください。特に、それらが設定されていて、基盤となるハードウェアがアップグレードされている場合は確認してください。
SQL Serverが最初に起動したときからERRORLOGを調べます。使用しているCPUの数と、その理由がわかります。 ERRORLOGファイルをどこかに投稿できれば、何が起こっているのかを確認するのに役立ちます。
私はこれを 別の投稿 でAjmer Dhariwalが見ました:
Enterpriseエディションの場合でも、適用されるライセンスモデルがサーバー+クライアントアクセスライセンス(CAL)ベースの場合、サーバーはインスタンスごとに20の物理コアに制限されます