web-dev-qa-db-ja.com

SQL Serverのワーカースレッドの最大数を計算する方法は?

私は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)

なぜ別の番号になるのか説明してくれませんか?私はそれを別のサーバーでテストし、両方のケースでまったく同じ数を得ました。

[〜#〜]編集[〜#〜]

enter image description here

PS最大ワーカースレッドのサーバー設定を確認する提案をしてくれたDan Guzmanに感謝します。これは、EXEC sp_configure 'max worker threads'が返すものです。

enter image description here

1
RaufDBA

誰かが最大ワーカースレッド設定をデフォルト以外の値に変更したようです。これにより、デフォルトの計算値が上書きされます。現在の構成値は、次のようにして決定できます。

EXEC sp_configure 'max worker threads';

根本的な原因ではなく、症状に対処するためのつまらない反応として、誤って設定された値が時々追加されます。 documentation で値を構成する正当な理由がいくつか示されていますが、デフォルトの計算はほとんどのワークロードに適しています。

5
Dan Guzman

公式は私のために機能します、私は32の論理コア、512 +((32-4)* 16)= 960を持っています、これはまさに私が得るものです

SELECT max_workers_count FROM sys.dm_os_sys_info

タスクマネージャー->パフォーマンスタブ-> CPUの順に進み、システムからの基本的なCPU情報(ソケット、コア、論理プロセッサなど)のスクリーンショットを投稿してください。

1
Aleksey Vitsko