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 节点之外,在相邻芯片上。