NUMA 资源关联性

关联性表示各种平台资源的分组,这些资源相对于该域之外的资源而言,在平均性能上基本上相似。给定域的资源子集,如果它们相对于其他资源子集表现出更好的性能,则表示为子分组域的成员。 这种性能特征以 Linux 内核中的 NUMA 节点距离来表示。 从平台角度来看,这些组也称为域。

PAPR 接口目前支持不同的方式将这些资源分组细节传达给操作系统。 这些被称为 Form 0、Form 1 和 Form2 关联性分组。 Form 0 是最旧的格式,现在被认为是已弃用的。

Hypervisor 通过 “ibm,architecture-vec-5 property” 指示所使用的关联性类型/形式。 “ibm,architecture-vec-5” 属性中字节 5 的位 0 指示 Form 0 或 Form 1 的使用。值为 1 表示使用 Form 1 关联性。 对于 Form 2 关联性,使用 “ibm,architecture-vec-5” 属性中字节 5 的位 2。

Form 0

Form 0 关联性仅支持两个 NUMA 距离(LOCAL 和 REMOTE)。

Form 1

使用 Form 1 时,ibm,associativity-reference-points 和 ibm,associativity 设备树属性的组合用于确定资源组/域之间的 NUMA 距离。

“ibm,associativity” 属性包含一个或多个数字(domainID)的列表,表示资源的平台分组域。

“ibm,associativity-reference-points” 属性包含一个或多个数字(domainID 索引)的列表,表示关联性列表中从 1 开始的序号。 domainID 索引列表表示资源分组的递增层次结构。

例如:{ 主 domainID 索引,辅助 domainID 索引,三级 domainID 索引.. }

Linux 内核使用主 domainID 索引处的 domainID 作为 NUMA 节点 id。 Linux 内核通过递归比较两个域是否属于相同的高级域来计算两个域之间的 NUMA 距离。 对于资源组的每个更高级别的不匹配,内核将比较域之间的 NUMA 距离加倍。

Form 2

Form 2 关联性格式添加了单独的设备树属性,表示 NUMA 节点距离,从而使节点距离计算更加灵活。 Form 2 还允许灵活的主域编号。 由于 numa 距离计算现在与 “ibm,associativity-reference-points” 属性中的索引值分离,因此 Form 2 允许在同一 domainID 索引处存在大量主域 id,表示不同性能/延迟特征的资源组。

Hypervisor 使用 “ibm,architecture-vec-5” 属性中字节 5 的位 2 指示 FORM2 关联性的使用。

“ibm,numa-lookup-index-table” 属性包含一个或多个数字的列表,表示系统中存在的 domainID。 通过 “ibm,numa-distance-table” 计算 numa 距离信息时,此属性中 domainID 的偏移量用作索引。

prop-encoded-array:编码为 encode-int 的 domainID 的数量 N,后跟 N 个编码为 encode-int 的 domainID

例如:“ibm,numa-lookup-index-table” = {4, 0, 8, 250, 252}。 当计算域 8 与系统中存在的其他域的距离时,使用 domainID 8 的偏移量 (2)。 对于本文档的其余部分,此偏移量将称为域距离偏移量。

“ibm,numa-distance-table” 属性包含一个或多个数字的列表,表示系统中存在的资源组/域之间的 NUMA 距离。

prop-encoded-array:编码为 encode-int 的距离值的数量 N,后跟 N 个编码为 encode-bytes 的距离值。 我们可以编码的最大距离值为 255。 数字 N 必须等于 m 的平方,其中 m 是 numa-lookup-index-table 中 domainID 的数量。

例如:ibm,numa-lookup-index-table = <3 0 8 40>; ibm,numa-distace-table = <9>, /bits/ 8 < 10 20 80 20 10 160 80 160 10>;

  | 0    8   40
--|------------
  |
0 | 10   20  80
  |
8 | 20   10  160
  |
40| 80   160  10

节点 0、8 和 40 中资源的可能的 “ibm,associativity” 属性

{ 3, 6, 7, 0 } { 3, 6, 9, 8 } { 3, 6, 7, 40}

使用 “ibm,associativity-reference-points” { 0x3 }

“ibm,lookup-index-table” 有助于紧凑地表示距离矩阵。 由于 domainID 可能是稀疏的,因此距离矩阵也可以有效地稀疏。 通过 “ibm,lookup-index-table”,我们可以实现距离信息的紧凑表示。