Bre*_*zar 16 sql-server configuration maxdop numa sql-server-2022
我在 AWS i3.16xlarge 上运行 SQL Server 2022 RC1 设置,具有 2 个插槽、2 个 NUMA 节点、每个节点 32 个逻辑处理器、总共 64 个逻辑处理器。
安装程序推荐 MAXDOP 8:
但是,如果您单击该链接来配置 MAXDOP,建议会显示:
根据那篇知识库文章,MAXDOP 应该是 16,而不是 8。当然,从技术上讲,8 小于 16 - 但 2、4 或 15 也是如此。8 从哪里来?
SQL Server 安装完成且服务启动后,日志显示 SQL Server 自动实施具有 4 个节点的 Soft-NUMA,每个节点有 16 个逻辑处理器:
同样,这表明 MAXDOP 应为 16。
这是一个错误,还是我错过了一些明显的事情?是否还有另一个不成文的规则,设置将在 MAXDOP 8 处停止?
Sea*_*ser 21
设置推荐 MAXDOP 8
安装程序按如下方式计算 MAXDop:
Step 1: Calculate Hardware NUMA and Soft NUMA
Step 2: Decide whether Hardware or Soft NUMA will be used
Step 3: Divide the total logical processors by the NUMA used
Step 4: If > 15 LPs/NUMA, MAXDop = (LPs/NUMA)/2, otherwise MAXDop = LPs/NUMA
Run Code Online (Sandbox Code Playgroud)
在您的具体情况下:
64 LPs total
HW NUMA = 2
Soft NUMA = 4
Run Code Online (Sandbox Code Playgroud)
将使用Soft NUMA,64 LPs/4(Soft)= 16。16 > 15,取16 / 2 = 8。
考虑到 >15 LP/NUMA,人们是否同意额外的 /2 是一个讨论点。无论如何,这就是当前存在的内容,并且确实符合MSDN TechNet BOL Docs Learn 文章建议。
我理解您想了解为什么 SQL Server 安装程序建议 MAXDOP 为 8。不幸的是,在默认条件下(启用自动软 NUMA),文档将为几乎所有服务器推荐可接受的 MAXDOP 范围,而不是精确的单个值。
该文档说明如下:
上表中的 NUMA 节点是指 SQL Server 2016 (13.x) 及更高版本自动创建的软 NUMA 节点,或者在禁用软 NUMA 的情况下基于硬件的 NUMA 节点。
您的服务器有两个启用了超线程的套接字。每个插槽有 16 个物理核心,每个插槽有 32 个逻辑核心。自动软 NUMA 也已启用。下面是自动软 NUMA 如何处理这种情况的估计图表,其中 A 列为每个套接字的调度程序数量:
对于您的服务器,您最终将拥有 4 个软 NUMA 节点,每个节点有 16 个逻辑处理器。这意味着第 3 行的指导适用于您的情况:
将 MAXDOP 保持在或低于每个 NUMA 节点的逻辑处理器数量
MAXDOP 值 8 小于每个软 NUMA 节点 16 个逻辑处理器的值,因此与文档没有冲突。
该文档似乎并未旨在为启用自动软 NUMA 时的大多数场景提供准确的指导。只有第 2 行和第 4 行提供了精确的指导,而不是可接受的 MAXDOP 范围。对于第 2 行,通过自动软 NUMA 获得该结果的唯一方法是启用超线程且具有 10 到 16 个逻辑核心的单套接字服务器。对于第 4 行,启用自动软 NUMA 后不可能获得该结果。
回到 SQL Server 设置的工作原理以及为什么它选择 8,它可能没有在任何地方记录。我不再能够使用大型服务器进行测试,因此我无法寻找导致默认值大于 8 的服务器配置。话虽如此,多年来 Microsoft 建议在各种情况下不要超过 8地方。例如:
在 Azure SQL 数据库中,每个新的单一数据库和弹性池数据库的默认 MAXDOP 设置为 8。此默认值可防止不必要的资源利用,同时仍允许数据库引擎使用并行线程更快地执行查询。通常不需要在 Azure SQL 数据库工作负载中进一步配置 MAXDOP,尽管它可能会作为高级性能调整练习带来好处。
2020 年 9 月,根据 Azure SQL 数据库服务中多年的遥测,MAXDOP 8 被设为新数据库的默认值,作为最广泛的客户工作负载的最佳值。此默认值有助于防止由于过度并行而导致的性能问题。
这些引述适用于 Azure SQL 数据库,因此它们并不直接适用于您的情况,但我认为它说明了 Microsoft 持有的一般心态,即高于 MAXDOP 8 是一项“高级性能调整练习”。
就个人而言,MAXDOP 8 对于您服务器的硬件配置来说感觉是一个合理的起点。除非有一些驱动工作负载因素,否则我不会从 MAXDOP 16 开始。考虑普遍认为的并行工作线程分布的最佳性能结果:所有工作线程应该位于同一硬 NUMA 节点上的不同物理核心上。如果没有 TF 2467 或虚拟机管理程序技巧,工作线程的分配方式如下:
MAXDOP 16 只能保证 9% 的时间获得最佳结果。
就我个人而言,我不认为微软在这方面的文档非常好。其中包含许多模棱两可、误导性或完全不正确的陈述。详细的想法在这里。
| 归档时间: |
|
| 查看次数: |
2731 次 |
| 最近记录: |