【问题标题】:CPUs Used for a SQL Server Instance用于 SQL Server 实例的 CPU
【发布时间】:2021-12-30 04:28:42
【问题描述】:

有谁知道如何提取用于给定 SQL Server 实例的 CPU?

cpu_affinity_mask 所需的信息可以从 SQL Server 中提取出来:

SELECT * FROM sys.dm_os_nodes WHERE memory_id <> 64

我查看了关联掩码,它旨在将此信息作为十进制字符串提供。据我所知,您必须将其转换为十进制字符串,然后每个十进制值(从右到左)与特定的 CPU 相关:-

CPU Affinity Mask: 1099510579200 (Decimal)   
CPU Affinity Mask: 111111111111111111100000000000000000000 (Binary)

因此使用的处理器应该是:
21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40

但是,如果您调出服务器属性,然后查看处理器亲缘关系,则只有 22 到 33 被标记为具有亲缘关系。

非常感谢 SQL Server 专家提供的任何帮助。

【问题讨论】:

  • 为什么要查询这个?

标签: sql-server


【解决方案1】:

sys.dm_os_nodes 中的 cpu_affinity_mask 指定哪些 CPU 连接到特定的 NUMA 节点。这与主板上 CPU 和内存控制器的物理布局有关,与分配给 SQL Server 的 CPU 无关。

sys.configurations 中的'affinity mask' 和 'affinity64 mask' 配置分配给sql server的cpus,将对应 sys.dm_os_schedulers 中的行,其中 status = 'VISIBLE ONLINE'。

affinity mask configuration option

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多