NUMA 资源关联性¶
关联性表示各种平台资源分组为域,这些域相对于该域之外的资源具有基本相似的平均性能。给定域的资源子集,彼此之间的性能比与其他资源子集的性能更好,表示为子分组域的成员。此性能特征以 Linux 内核中的 NUMA 节点距离来表示。从平台角度来看,这些组也称为域。
PAPR 接口当前支持多种方式将这些资源分组细节传达给操作系统。这些称为 Form 0、Form 1 和 Form2 关联性分组。Form 0 是最旧的格式,现在被认为是已弃用的。
虚拟机管理程序通过 “ibm,architecture-vec-5 属性” 指示使用的关联性类型/形式。“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 距离(本地和远程)。
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,这些 ID 表示具有不同性能/延迟特性的资源组。
虚拟机管理程序使用 “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”,我们可以实现距离信息的紧凑表示。