ハイパースレッディングが有効になっている2つのNUMAに8 CPUを搭載したサーバーがあります。現在、Maxdopは8に設定されていますが、この記事のMaxdopセクションに従って、実際には4に設定する必要があります。
https://support.Microsoft.com/en-us/kb/322385
したがって、4に変更する必要があります。
しかし、私の質問は、maxdopを8に設定した場合の影響は何ですか?それでは、2つのNUMAS間で並列化しますか?私が尋ねる理由は、クエリが返るのが非常に遅く、PLEが急速に落ちるという奇妙な問題があったからです。
SQL PLEに対して何も実行されていなくても、改善されませんでした。 CXPACKET待機タイプが上がりました。その後、突然のCXPACKET待機タイプが完全に落ち、PLEが上昇し始め、現在は通常に戻りました。
この間、データベースに対して小さなクエリが実行されていましたが、1つのクエリが終了して、CXPACKET待機タイプが低下し、PLEが再び上昇することはありませんでした。その原因はわかりません。
考えられる原因は、誤ったMAXDOP設定です。
NUMAノード全体での並列実行の影響を誰かに説明してもらえますか?それは、外部メモリを使用するときにワーカースレッドを使い果たしてアクセス時間が遅くなるのと同じですか?
ありがとうございました
SQLサーバー2005 SP3
最初に最善の策は、サポートされているSP- 最初にSP4をダウンロードしてからCU3をダウンロード->ビルドNO:9.00.5266 にアップグレードすることです。SQLServer 2005のサポート最新のSPおよびCUであっても)は来年(2016/04/12)に終了します-2012/2014へのアップグレードがより適切です。
myスクリプトを使用して、適切なMAXDOP値 を提案することができます。
NUMAノード全体での並列実行の影響を誰かに説明してもらえますか?それは、外部メモリを使用するときにワーカースレッドを使い果たしてアクセス時間が遅くなるのと同じですか?
SQLサーバーは NUMA対応 です。これは、SQLサーバーが、プロセッサがどのNUMAノードにあり、メモリがどのNUMAノードにあるかを認識していることを意味します。これにより、SQLサーバーは、アクセスするデータの正しいNUMAノードにワーカースレッドを割り当てます。
参照する :
以下は NUMAノード間でスケジューラーの不均衡があるかどうかを確認するのに役立ついくつかのクエリ -これは、負荷時に重大なパフォーマンスの問題につながる可能性があります。
SELECT
parent_node_id,
scheduler_id,
[cpu_id],
is_idle,
current_tasks_count,
runnable_tasks_count,
active_workers_count,
load_factor
FROM sys.dm_os_schedulers
WHERE [status] = N'VISIBLE ONLINE';
--- check the current tasks, runnable tasks, active workers and avg load factor COUNT ...
SELECT
parent_node_id,
SUM(current_tasks_count) AS current_tasks_count,
SUM(runnable_tasks_count) AS runnable_tasks_count,
SUM(active_workers_count) AS active_workers_count,
AVG(load_factor) AS avg_load_factor
FROM sys.dm_os_schedulers
WHERE [status] = N'VISIBLE ONLINE'
GROUP BY parent_node_id;
監視する必要があります SQL Server:Buffer Node
および SQL Server, Memory Node
as PLEに反対 -個人を監視Buffer Node:Page life expectancy
カウンター(NUMAノードごとに1つのバッファーNodeパフォーマンスオブジェクトが存在します)。
ワーカースレッドの枯渇
MAXDOP設定をデフォルト(0)に設定すると、 ワーカースレッドの枯渇につながる可能性があります。