【问题标题】:Powershell: Find out if NUMA is configured and how many CPUs are assigned to each NUMA node?Powershell:查看是否配置了 NUMA 以及为每个 NUMA 节点分配了多少 CPU?
【发布时间】:2012-02-08 14:28:00
【问题描述】:

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

更新:

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

更新:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 为什么我需要使用超过 64 个逻辑处理器?
      猜你喜欢
      • 2016-08-20
      • 1970-01-01
      • 2017-01-19
      • 2018-08-28
      • 2020-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多