首页 > 解决方案 > 查找与 sys.dm_os_sys_info 中的列等效的 powershell CIM

问题描述

我有一个普通的 SQL Server 选择,它从动态管理视图的这两列中收集信息:

SELECT cpu_count, hyperthread_ratio
FROM sys.dm_os_sys_info

我想知道是否有人通过 powershell CIM 系统硬件类知道精确的等价物?就像是:

Get-CimInstance -ClassName Win32_Processor

但是我对 PC 架构的了解还不够,无法知道其中的哪个属性(或基于其他属性的逻辑)直接等同于该 sql dmv 中的 cpu_count 和 hyperthread_ratio。

标签: sql-serverpowershellwmi

解决方案


您可以执行以下操作:

$CPUData = @(Get-CIMInstance -Class Win32_Processor | Select NumberOfCores,NumberOfLogicalProcessors)
$CPU_Count = ($CPUData.NumberOfLogicalProcessors | Measure -Sum).Sum
[pscustomobject]@{'CPU_Count' = $CPU_Count
                  'Hyperthread_Ratio' = $CPU_Count/$CPUData.Count
                }

解释:

Get-CIMInstance -Class Win32_Processor返回属性NumberOfLogicalProcessorsNumberOfCores。当这两个属性值不同时,就会启用超线程。

cpu_count并且hyperthread_ratio只返回有关逻辑 CPU 的数据,这就是我们关心的所有计算。

如果没有计算(我可以找到),您想要的数据就不存在。这cpu_count是逻辑处理器的总数(NumberOfLogicalProcessors值的总和)。hyperthread_ratio是逻辑处理器总数除以 CPU 插槽总数。

顺便说一句,我的测试表明 SQL 实例中的处理器亲和性不会影响 SQL 查询中的计算或数据。


推荐阅读