我尝试过numa_distance()和其他相关函数(从第一个链接),但无法理解。我只是想了解linux是如何计算两个节点之间的NUMA距离的,而这个距离据说是根据体系结构和NUMA互连而变化的。
我提到了以下链接:
发布于 2018-03-19 05:14:34
在ACPI规范的最新版本中,您可以找到一个名为"SLIT"/System局部性(距离)信息表的表的描述。此表只是一个数组(类似于d = array[numa_node][numa_node]),操作系统使用它来确定任意2个NUMA节点之间的相对距离;其中数组中的值范围为10到254 (255用于“这些NUMA域之间没有连接”),其中值10表示NUMA域中的某个东西访问同一NUMA域(最快的情况)的速度,值254将慢25.4倍。
我假设固件使用硬编码值填充这个表,例如主板制造商可能会做一些测量,并确定适合主板支持的所有CPU型号的值/s。
固件将此表提供给操作系统。操作系统不计算任何东西。
发布于 2019-07-19 13:31:11
这些距离由ACPI狭缝表中的固件硬编码,表示NUMA节点之间的相对内存延迟-- "10“表示延迟1x,而"20”比本地节点访问的延迟"2x“多。Linux在sysfs中公开了这些值,但是有很多方法来访问它们(包括如果您愿意的话直接转储ACPI表)。
节点之间的实际内存延迟很少像ACPI表所声称的那样糟糕,至少从我的测试http://www.codeblueprint.co.uk/2019/07/12/what-are-slit-tables.html中是如此。
https://stackoverflow.com/questions/49355785
复制相似问题