首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Server设置在这里推荐MAXDOP 8?

为什么Server设置在这里推荐MAXDOP 8?
EN

Database Administration用户
提问于 2022-11-03 16:38:35
回答 1查看 2.2K关注 0票数 16

我正在一个AWSi3.16xLarge上运行Server 2022 RC1安装程序,其中包含两个套接字、两个NUMA节点、每个节点32个逻辑处理器、总共64个逻辑处理器。

安装程序建议MAXDOP 8:

但是,如果您单击用于配置MAXDOP的链接,建议如下:

基于这篇知识库文章,MAXDOP应该是16,而不是8。当然,从技术上说,8小于16 --但2、4或15也是如此。8来自哪里?

在SQL Server安装完成并服务启动后,日志显示SQL Server将使用4个节点自动实现软NUMA,每个节点都有16个逻辑处理器:

因此,这再次表明MAXDOP应该是16。

这是一个bug,还是我错过了一些显而易见的东西?还有另一个不成文的规则,设置将停止在MAXDOP 8?

EN

回答 1

Database Administration用户

发布于 2022-11-03 18:42:36

我理解您希望了解为什么SQL Server安装程序推荐8用于MAXDOP。不幸的是,在默认情况下(启用自动软-NUMA),文档将推荐几乎所有服务器的MAXDOP的可接受范围,而不是精确的单个值。

文件说明如下:

上表中的NUMA节点是指Server 2016 (13.x)和更高版本自动创建的软NUMA节点,如果软NUMA已被禁用,则为基于硬件的NUMA节点。

您的服务器有两个启用超线程的套接字。每个套接字有16个物理核,每个套接字有32个逻辑核。自动软-NUMA也被启用。下面是自动软NUMA如何处理这种情况的估计图表,其中A列是每个套接字的调度程序数:

对于您的服务器,您将得到4个软NUMA节点,每个节点由16个逻辑处理器组成。这意味着第3行的指导原则适用于你的情况:

将MAXDOP保持在每个NUMA节点的逻辑处理器的#或以下

MAXDOP值小于每个软NUMA节点的16个逻辑处理器的值,因此与文档没有冲突。

当自动软NUMA启用时,这些文档似乎并不能为大多数场景提供准确的指导。只有第2行和第4行提供精确的指导,而不是可接受的MAXDOP范围。对于第2行,获得自动软NUMA结果的唯一方法是启用超线程的单个套接字服务器,该服务器具有10到16个逻辑核。对于第4行,如果启用了自动软NUMA,则无法获得该结果。

回到Server安装程序是如何工作的,以及它为什么选择8,它可能在任何地方都没有文档化。我不再能够在大型服务器上进行测试,因此我无法寻找导致默认值大于8的服务器配置。尽管如此,多年来,微软一直建议在不同的地方不超过8。对于示例

在Azure SQL数据库中,每个新的单一数据库和弹性池数据库的默认MAXDOP设置为8。此默认设置防止不必要的资源利用率,同时仍然允许数据库引擎使用并行线程更快地执行查询。通常不需要在Azure SQL数据库工作负载中进一步配置MAXDOP,尽管它作为高级性能优化练习可能会带来好处。2020年9月,基于Azure SQL数据库服务MAXDOP 8中多年的遥测,将MAXDOP 8作为新数据库的缺省值,作为最广泛的客户工作负载的最佳值。此默认设置有助于防止过度并行导致的性能问题。

这些引号是针对Azure SQL数据库的,因此它们不直接适用于您的情况,但我认为它说明了Microsoft的普遍心态,即超越MAXDOP 8是一项“高级性能调优练习”。

就个人而言,用于服务器硬件配置的MAXDOP 8似乎是一个合理的起点。我不会从MAXDOP 16开始,除非有一些驾驶工作量因素。考虑一般认为的并行工作分配的最佳性能结果:所有工作人员都应该位于同一硬NUMA节点上的不同物理核心上。如果没有TF 2467或虚拟机管理程序的技巧,下面是如何分配工作线程的几率:

MAXDOP 16只保证了9%的最佳结果。

就我个人而言,我不认为微软在这方面的文档是非常好的。其中包含了一些模棱两可的、误导性的或简单的不正确的陈述。关于这一点的详细想法是这里

票数 6
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/319145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档