NUMA 节点 - MAXDOP - PLE

hpk*_*k89 4 sql-server-2005 sql-server memory maxdop numa

我们有一个服务器,在 2 个 NUMA 上有 8 个 CPU,并启用了超线程。当前 Maxdop 设置为 8,但实际上应该按照本文的 Maxdop 部分设置为 4:

https://support.microsoft.com/en-us/kb/322385

所以我们需要把它改成4。

但是我的问题是将 maxdop 设置为 8 有什么影响?那么并行跨越两个 NUMAS 吗?我问的原因是我们刚刚遇到了一个奇怪的问题,查询返回非常慢,而 PLE 迅速下降。

即使没有针对 SQL 运行,PLE 也没有改进。CXPACKET 等待类型上升。然后突然 CXPACKET 等待类型完全下降,PLE 开始上升,现在已经恢复正常。

在这段时间里,对数据库执行了小查询,但并不是一个查询完成导致 CXPACKET 等待类型下降而 PLE 再次上升的情况 - 我们不知道是什么原因造成的。

一个可能的解释是 MAXDOP 设置不正确。

谁能向我解释跨 NUMA 节点并行执行的影响,是否与使用外部内存时耗尽工作线程和更慢的访问时间相同?

谢谢

Kin*_*hah 7

SQL 服务器 2005 SP3

最好的办法是首先将其升级到受支持的 SP -首先下载 SP4,然后下载 CU3 --> Build NO: 9.00.5266。对 SQL server 2005 的支持将于明年 (2016/04/12) 结束,即使是最新的 SP 和 CU - 所以最好升级到 2012/2014。

您可以使用我的脚本来帮助您建议一个好的 MAXDOP 值

谁能向我解释跨 NUMA 节点并行执行的影响,是否与使用外部内存时耗尽工作线程和更慢的访问时间相同?

SQL 服务器是NUMA 感知的。这意味着 SQL Server 知道处理器在哪个 NUMA 节点以及内存在哪个 NUMA 节点。因此,SQL Server 将为您要访问的数据在正确的 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;
Run Code Online (Sandbox Code Playgroud)

您应该监视SQL Server:Buffer NodeSQL Server, Memory Node作为而不只是PLE -监控各个Buffer Node:Page life expectancy柜台(会有一个对每个NUMA节点缓冲区节点性能对象)。

耗尽工作线程

如果您将 MAXDOP 设置设置为默认值(即 0),则可能会导致工作线程饥饿。


归档时间:

查看次数:

717 次

最近记录:

10 年,8 月 前