假设我有一个带有 4 个套接字的 SQL Server,每个 NUMA 节点。每个插槽有 4 个物理内核。总共有 512 GB 的内存,因此每个 NUMA 节点有 128 GB 的 RAM。
密钥表被加载到第一个 NUMA 节点中。
假设我们从该表中读取了大量流量。如果拥有 NUMA 节点的插槽的所有物理内核的 CPU 利用率为 100%,这是否会对来自其他插槽的非本地 NUMA 访问成本产生负面影响?或者另一方面是非本地 NUMA 访问的成本与该套接字的繁忙程度无关?
我希望我的问题是有道理的。如果没有,请告诉我,我会尽力澄清。
上周我们的生产服务器出现了数据库问题,我们处理的一些业务似乎比其他业务受到的影响更大。我们有一些逻辑读取的查询需要超过 1 分钟。我们查看了大约 60% 的整体 CPU 利用率。我们没有查看特定于套接字的 CPU 指标。I/O 指标是平均的。
最近包含 SQL Server 启动跟踪标志 8048 以解决 SQL Server 2008 R2 系统中严重的自旋锁争用问题。
有兴趣听取其他人的意见,他们发现性能值由跟踪标志 8048(将查询内存授予策略从每个 NUMA 节点提升到每个核心)、跟踪标志 8015(SQL Server 忽略物理 NUMA)或 SUMA(交错足够统一的内存访问,某些 NUMA 机器上的 BIOS 选项)。
系统工作负载的详细信息、从出现问题的系统收集的指标以及在干预后从系统收集的指标。
跟踪标志 8048 是一个“修复”,但它是最好的修复吗?SQL Server 是否会因为跟踪标志 8015 而忽略物理 NUMA 已经完成了同样的事情?如何将 BIOS 设置为交错内存,让服务器使用 SMP 模拟 SUMA 行为而不是 NUMA 行为?
从 …
我在 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 处停止?
我正在查看 SQL Server 上的 NUMA 节点上的 PLE(页面预期寿命),并发现了一个相当奇怪的分布。与 001 相比,NUMA 节点 000 的 PLE 非常低。我不确定为什么会这样。我已经检查了我们环境中的多个其他 SQL Server,其他生产服务器没有这种行为。
系统在带有 256GB RAM 的 Dell m620 上运行 SQL Server 2012 Enterprise Edition。这是一台 2 插槽、6 核(支持 HT)的机器。MAXDOP 设置为 6。AFAIK 内存模块均匀地安装在 CPU 的内存条上
有人告诉我 NUMA 节点 000 有其他 SQL 任务要执行,其他节点,但我忘记了我在哪里听到/看到它。
@@Version
显示:Microsoft SQL Server 2012 (SP1) - 11.0.3412.0 (X64)
意外的数据库管理员在这里。
题:
即使该服务器的唯一目的是仅为 SQL Server 数据库引擎提供服务,您是否仍会手动限制 SQL Server 的最大 RAM?
我有 Microsoft Windows 2012 R2 Server、SQL Server 2012 Std、32GB RAM。
管理员不断登录到 SQL Server 以使用其控制台和所有内容。
其次,您如何检查此 Windows 服务器是否启用了 NUMA?
我很好奇 Windows 2012 R2 上的默认 NUMAStatic RSS 配置文件是否可以/应该更改为具有 NUMA 设置的 SQL Server。有没有人使用 NUMA 或保守设置对高负载 SQL Server 进行性能基准测试?
我们正在使用 SQLCLR 存储过程来激活服务代理,我想监视 CLR 代码使用的内存。查看sys.dm_os_memory_clerks
,我看到只有 NUMA 节点 1 具有与该MEMORYCLERK_SQLCLR
类型关联的任何页面。服务器有两个 8 核 CPU,运行 SQL 2014 CU6。
这是预期的吗?或者我应该像我一样看到两个节点上使用的内存MEMORYCLERK_SQLBUFFERPOOL
?
询问:
SELECT DOMC.memory_node_id
, DOMC.pages_kb
, DOMC.virtual_memory_reserved_kb
, DOMC.virtual_memory_committed_kb
FROM sys.dm_os_memory_clerks DOMC where type = 'MEMORYCLERK_SQLCLR'
Run Code Online (Sandbox Code Playgroud)
结果:
memory_node_id pages_kb virtual_memory_reserved_kb virtual_memory_committed_kb
-------------- -------------------- -------------------------- ---------------------------
0 88232 12607744 1408652
1 0 0 0
64 0 0 0
Run Code Online (Sandbox Code Playgroud) 我们在 VMWare 主机中有一个 SQL Server 2012 SP 2 CU 8 实例。操作系统为 Windows Server 2012 R2。
Windows 任务管理器说我们有两个套接字和 8 个虚拟内核。此数字对应于来宾下方的实际硬件。
在任务管理器中,我也无法将视图更改为 NUMA 节点。
在 SQL Server 中仍然只能看到一个 NUMA 节点
来自 Glen Berrys 诊断查询的这个片段也给了我这个信息
EXEC sys.xp_readerrorlog 0, 1, N'detected', N'socket';
Run Code Online (Sandbox Code Playgroud)
SQL Server 检测到 2 个插槽,每个插槽 4 个内核,每个插槽 4 个逻辑处理器,总共 8 个逻辑处理器;使用基于 SQL Server 许可的 8 个逻辑处理器。这是一条情报信息; 无需用户操作。
根据所有这些信息,我可以怀疑我们仅在一个 NUMA 节点上运行,但跨两个套接字运行。
我的问题:
我认为有很多关于 NUMA 节点的错误信息。如果有人可以回答我的问题或指出详细解释这个概念的有用资源,那将不胜感激。
我在我们的一台 SQL Server 2016 生产服务器上运行 sp_blitz,结果之一是 CPU 的核心数为奇数。详细消息表明这是一个非常糟糕的 NUMA 配置。
如果 SQL Server 2016 检测到超过 8 个内核的物理处理器,它将使用自动软 NUMA。我们的特定服务器有两个插槽,每个插槽有 10 个 CPU。
SQL Server 错误日志中的启动消息表明:
自动软 NUMA 已启用,因为 SQL Server 检测到具有超过 8 个物理内核的硬件 NUMA 节点。
结果,SQL Server 创建了四个逻辑 NUMA 节点,每个节点有 5 个内核。
这是性能问题吗?
我们使用 MAXDOP = 4。
这里的并行性是一个问题吗?
我正在阅读非统一内存访问 (NUMA),我想知道它到底能带来多大的不同?换句话说,在这变得有益之前需要什么水平的吞吐量?
此外,当您想要一个具有多个系统总线的系统时,您需要寻找什么类型的服务器?