linux - linux如何计算两个numa节点之间的numa距离(任何numa库的内部逻辑,例如libnuma..etc)?

标签 linux numa

我尝试浏览 numa_distance() 和其他相关函数(来自第一个链接),但无法理解。我只是想了解 linux 如何计算两个节点之间的 NUMA 距离,据说这个距离根据架构和 NUMA 互连而变化。

我引用了以下链接:

  1. https://github.com/jmesmon/numactl/blob/0df3f720e606a3706700e0487ba19d720f50c4b8/distance.c

  2. https://github.com/jmesmon/numactl/blob/0df3f720e606a3706700e0487ba19d720f50c4b8/numa.h

  3. https://github.com/jmesmon/numactl/blob/0df3f720e606a3706700e0487ba19d720f50c4b8/libnuma.c

最佳答案

在 ACPI 规范(最新版本)中,您会找到一个名为“SLIT”/系统位置(距离)信息表的表的描述。该表只是一个数组(如 d = array[numa_node][numa_node] ),操作系统用它来确定任意 2 个 NUMA 节点之间的相对距离;其中数组中的值范围为 10 到 254(255 用于“这些 NUMA 域之间没有连接”),其中值 10 表示 NUMA 域中的某些内容可以多快地访问同一 NUMA 域中的某些内容(最快的情况),值 254 会慢 25.4 倍。

我假设固件使用硬编码值填充此表 - 例如主板制造商可能会进行一些测量并确定对于主板支持的所有 CPU 型号来说足够好的值。

固件向操作系统提供此表。操作系统不计算任何内容。

关于linux - linux如何计算两个numa节点之间的numa距离(任何numa库的内部逻辑,例如libnuma..etc)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49355785/

相关文章:

profiling - Sandy Bridge QPI 带宽性能事件

c++ - std::vector保留并调整NUMA位置的大小

linux - 在 .bash_profile 中从哪里获取 .profile 以在 Cygwin 中安装 RVM?

linux - SQLite 帮助 : Need the date field in one table separated into three fields in another table

c - openssl 编译错误

linux - 在 linux(CentOS)/多处理器设置中,如何将 CPU 内核分配给 NUMA 节点?

windows - NUMA-本地内存

java - 为什么我的 Opteron 内核每个仅以 75% 的容量运行? (25% 的 CPU 闲置)

c - argc 和 argv 未运行

linux - 如何在 ELK 的 rabbitmq 中使用 guest 以外的用户?