C++ 如何使用GetNumaProximityNode(Win7+;)?
从Win7/Server2008R2开始,可以使用GetNumaProximityNode(Ex)函数。它应该有助于检索NUMA节点之间的距离,但我无法从文档()中理解它应该如何工作。它说你给它一个距离,然后它返回相应的节点(如果有) 在阅读Linux内核的一些代码和一些HP APIC文档时,我看到距离是10的整数倍(到self的距离是10),但它也可以是18(不是慢两倍)。但我仍然不知道如何使用Windows API计算两个节点之间的距离(在Linux下,libnuma有一个“distance”函数来实现这一点)C++ 如何使用GetNumaProximityNode(Win7+;)?,c++,optimization,memory,cpu,numa,C++,Optimization,Memory,Cpu,Numa,从Win7/Server2008R2开始,可以使用GetNumaProximityNode(Ex)函数。它应该有助于检索NUMA节点之间的距离,但我无法从文档()中理解它应该如何工作。它说你给它一个距离,然后它返回相应的节点(如果有) 在阅读Linux内核的一些代码和一些HP APIC文档时,我看到距离是10的整数倍(到self的距离是10),但它也可以是18(不是慢两倍)。但我仍然不知道如何使用Windows API计算两个节点之间的距离(在Linux下,libnuma有一个“distance
有人知道如何使用这个功能吗?我找到了一个Windows解决方案(尽管还没有测试)。距离可以在SLIT-系统位置信息表中找到,该表是OEM提供的扩展,可通过ACPI获得。它包含描述距离的N_CPU x N_CPU矩阵([1][3]是节点1和3之间的距离;[Y][Y]始终为10;低于10无效) Windows Vista+具有可用于检索此表的方法GetSystemFirmwareTable(在XP下,似乎可以从注册表检索此表,但更难)。
此表的结构可以在ACPICA包()中找到