2

从 Win7/Server2008R2 开始,GetNumaProximityNode(Ex) 函数可用。它应该有助于检索 NUMA 节点之间的距离,但我无法从文档(http://msdn.microsoft.com/en-us/library/ms683206(VS.85).aspx)中理解它应该如何工作. 它说你给它一个距离,它返回相应的节点(如果有的话)。

从 Linux 内核和一些 HP APIC 文档中阅读了一些代码,我看到距离以 10 的整数倍数表示(与自身的距离是 10),但它也可以是 18 之类的东西(不完全是慢两倍)。但我仍然无法弄清楚如何使用 Windows API 计算两个节点之间的距离(在 Linux libnuma 下有一个“距离”函数可以做到这一点)。

有谁知道如何使用这个功能?

4

1 回答 1

1

我找到了适用于 Windows 的解决方案(尽管尚未测试)。距离可以在 SLIT - System Locality Information Table - 由 OEM 提供并通过 ACPI 提供的扩展中找到。它包含一个描述距离的 N_CPU x N_CPU 矩阵([1][3] 是节点 1 和 3 之间的距离;[Y][Y] 始终为 10;低于 10 无效)。

Windows Vista+ 有GetSystemFirmwareTable 方法可以用来检索这个表(在XP 下似乎可以从Registry 中检索,但是比较困难)。
该表的结构可以在 ACPICA 包 ( http://www.acpica.org ) 中找到。

于 2010-01-24T11:37:40.240 回答