Powershell:了解是否配置了NUMA以及为每个NUMA节点分配了多少CPU?

时间:2012-01-12 09:30:48

标签: powershell windows-server-2008-r2 numa

使用Powershell,如何确定我的服务器是否启用了NUMA以及为每个NUMA节点分配了多少CPU?

更新

我发现here microsoft.sqlserver.management.smo.server对象对象有一个affinityinfo字段。但是,当我创建它时,我在Powershell中的服务器对象中不存在该字段(Windows XP上的SQL Server 2005)。

更新

似乎affinityinfo字段仅存在于SQL Server 2008 R2及更高版本中。

2 个答案:

答案 0 :(得分:1)

有些API可以获取这些信息,但它们是不受管理的,这意味着它们无法从PowerShell(.NET)轻松调用。为了直接调用这些,您必须使用Add-Type cmdlet将C#代码编译到内存中的程序集中,然后您可以实例化或调用静态方法。我在博客上看到的是example

编写C#是一个棘手的部分,因为有很多不友好的代码与它相关联,请查看此example。如果您熟悉C#,您可以根据需要进行调整。如果不是Mark有一个名为Coreinfo的工具,看起来它会为您提供所需的信息。它实际上调用链接的p / invoke代码所执行的相同的非管理API(GetLogicalProcessorInformation)。您可以从PowerShell中调用它并处理其STDOUT。

答案 1 :(得分:0)

我不认为Windows 7和Windows Server 2008 R2中用于处理超过64个逻辑处理器的本机OS API在.NET中可用,您可以查看.NET Support for More Than 64 Processors。这个人用来编写OS API的.NET包装器,你可以在PowerShell中使用它。