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”,我們可以實現距離資訊的緊湊表示。