VCPU 排程統計

對於共享處理器 LPAR,POWER Hypervisor 維護 LPAR 處理器 (vcpus) 到物理處理器晶片(代表“home”節點)的相對靜態的對映,並嘗試始終在其關聯的物理處理器晶片上排程 vcpus。 但是,在某些情況下,vcpus 可能會被排程到不同的處理器晶片上(遠離其 home 節點)。

/proc/powerpc/vcpudispatch_stats 可用於獲取與 vcpu 排程行為相關的統計資訊。 將“1”寫入此檔案會啟用統計資訊收集,而寫入“0”會停用統計資訊。 預設情況下,每個 vcpu 的 DTLB 日誌每秒處理 50 次,以免錯過任何條目。 可以透過 /proc/powerpc/vcpudispatch_stats_freq 更改此處理頻率。

統計資訊本身可以透過讀取 procfs 檔案 /proc/powerpc/vcpudispatch_stats 獲得。 輸出中的每一行對應於一個 vcpu,由第一個欄位表示,後跟 8 個數字。

第一個數字對應於

  1. 自統計資訊收集開始以來,vcpu 排程的總次數

接下來的 4 個數字表示 vcpu 排程分散

  1. 此 vcpu 在與上次相同的處理器上排程的次數

  2. 此 vcpu 在與上次不同的處理器核心上排程的次數,但在同一晶片內

  3. 此 vcpu 在不同的晶片上排程的次數

  4. 此 vcpu 在不同的插槽/機箱(下一個 numa 邊界)上排程的次數

最後 3 個數字表示與 vcpu 的 home 節點相關的統計資訊

  1. 此 vcpu 在其 home 節點(晶片)中排程的次數

  2. 此 vcpu 在不同節點中排程的次數

  3. 此 vcpu 在更遠的節點(numa 距離)中排程的次數

一個示例輸出

$ sudo cat /proc/powerpc/vcpudispatch_stats
cpu0 6839 4126 2683 30 0 6821 18 0
cpu1 2515 1274 1229 12 0 2509 6 0
cpu2 2317 1198 1109 10 0 2312 5 0
cpu3 2259 1165 1088 6 0 2256 3 0
cpu4 2205 1143 1056 6 0 2202 3 0
cpu5 2165 1121 1038 6 0 2162 3 0
cpu6 2183 1127 1050 6 0 2180 3 0
cpu7 2193 1133 1052 8 0 2187 6 0
cpu8 2165 1115 1032 18 0 2156 9 0
cpu9 2301 1252 1033 16 0 2293 8 0
cpu10 2197 1138 1041 18 0 2187 10 0
cpu11 2273 1185 1062 26 0 2260 13 0
cpu12 2186 1125 1043 18 0 2177 9 0
cpu13 2161 1115 1030 16 0 2153 8 0
cpu14 2206 1153 1033 20 0 2196 10 0
cpu15 2163 1115 1032 16 0 2155 8 0

在上面的輸出中,對於 vcpu0,自啟用統計資訊以來,已排程 6839 次。 其中 4126 次排程與上次在相同的物理 cpu 上。 2683 次在不同的核心上,但在同一晶片內,而 30 次排程與上次排程相比,在不同的晶片上。

此外,在總共 6839 次排程中,我們看到在 vcpu 的 home 節點上發生了 6821 次排程,而 18 次排程在其 home 節點之外,在相鄰晶片上。