私は64ビットOSを使用しており、CPUは2つ(それぞれが7つの論理プロセッサを構成します)、論理プロセッサの総数は14です。
このコードを実行すると、2048が得られます
SELECT max_workers_count FROM sys.dm_os_sys_info
一方で、以下の式を使用すると、672というまったく異なる数値が得られます
For a 64-bit operating system:
Total available logical CPUs <= 4
Max Worker Threads = 512
Total available logical CPUs > 4
Max Worker Threads = 512 + ((logical CPUs - 4)*16)
なぜ別の番号になるのか説明してくれませんか?私はそれを別のサーバーでテストし、両方のケースでまったく同じ数を得ました。
[〜#〜]編集[〜#〜]
PS最大ワーカースレッドのサーバー設定を確認する提案をしてくれたDan Guzmanに感謝します。これは、EXEC sp_configure 'max worker threads'が返すものです。
誰かが最大ワーカースレッド設定をデフォルト以外の値に変更したようです。これにより、デフォルトの計算値が上書きされます。現在の構成値は、次のようにして決定できます。
EXEC sp_configure 'max worker threads';
根本的な原因ではなく、症状に対処するためのつまらない反応として、誤って設定された値が時々追加されます。 documentation で値を構成する正当な理由がいくつか示されていますが、デフォルトの計算はほとんどのワークロードに適しています。
公式は私のために機能します、私は32の論理コア、512 +((32-4)* 16)= 960を持っています、これはまさに私が得るものです
SELECT max_workers_count FROM sys.dm_os_sys_info
タスクマネージャー->パフォーマンスタブ-> CPUの順に進み、システムからの基本的なCPU情報(ソケット、コア、論理プロセッサなど)のスクリーンショットを投稿してください。