1*4882a593Smuzhiyun.. SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun======================== 4*4882a593SmuzhiyunVCPU Dispatch Statistics 5*4882a593Smuzhiyun======================== 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunFor Shared Processor LPARs, the POWER Hypervisor maintains a relatively 8*4882a593Smuzhiyunstatic mapping of the LPAR processors (vcpus) to physical processor 9*4882a593Smuzhiyunchips (representing the "home" node) and tries to always dispatch vcpus 10*4882a593Smuzhiyunon their associated physical processor chip. However, under certain 11*4882a593Smuzhiyunscenarios, vcpus may be dispatched on a different processor chip (away 12*4882a593Smuzhiyunfrom its home node). 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun/proc/powerpc/vcpudispatch_stats can be used to obtain statistics 15*4882a593Smuzhiyunrelated to the vcpu dispatch behavior. Writing '1' to this file enables 16*4882a593Smuzhiyuncollecting the statistics, while writing '0' disables the statistics. 17*4882a593SmuzhiyunBy default, the DTLB log for each vcpu is processed 50 times a second so 18*4882a593Smuzhiyunas not to miss any entries. This processing frequency can be changed 19*4882a593Smuzhiyunthrough /proc/powerpc/vcpudispatch_stats_freq. 20*4882a593Smuzhiyun 21*4882a593SmuzhiyunThe statistics themselves are available by reading the procfs file 22*4882a593Smuzhiyun/proc/powerpc/vcpudispatch_stats. Each line in the output corresponds to 23*4882a593Smuzhiyuna vcpu as represented by the first field, followed by 8 numbers. 24*4882a593Smuzhiyun 25*4882a593SmuzhiyunThe first number corresponds to: 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun1. total vcpu dispatches since the beginning of statistics collection 28*4882a593Smuzhiyun 29*4882a593SmuzhiyunThe next 4 numbers represent vcpu dispatch dispersions: 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun2. number of times this vcpu was dispatched on the same processor as last 32*4882a593Smuzhiyun time 33*4882a593Smuzhiyun3. number of times this vcpu was dispatched on a different processor core 34*4882a593Smuzhiyun as last time, but within the same chip 35*4882a593Smuzhiyun4. number of times this vcpu was dispatched on a different chip 36*4882a593Smuzhiyun5. number of times this vcpu was dispatches on a different socket/drawer 37*4882a593Smuzhiyun (next numa boundary) 38*4882a593Smuzhiyun 39*4882a593SmuzhiyunThe final 3 numbers represent statistics in relation to the home node of 40*4882a593Smuzhiyunthe vcpu: 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun6. number of times this vcpu was dispatched in its home node (chip) 43*4882a593Smuzhiyun7. number of times this vcpu was dispatched in a different node 44*4882a593Smuzhiyun8. number of times this vcpu was dispatched in a node further away (numa 45*4882a593Smuzhiyun distance) 46*4882a593Smuzhiyun 47*4882a593SmuzhiyunAn example output:: 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun $ sudo cat /proc/powerpc/vcpudispatch_stats 50*4882a593Smuzhiyun cpu0 6839 4126 2683 30 0 6821 18 0 51*4882a593Smuzhiyun cpu1 2515 1274 1229 12 0 2509 6 0 52*4882a593Smuzhiyun cpu2 2317 1198 1109 10 0 2312 5 0 53*4882a593Smuzhiyun cpu3 2259 1165 1088 6 0 2256 3 0 54*4882a593Smuzhiyun cpu4 2205 1143 1056 6 0 2202 3 0 55*4882a593Smuzhiyun cpu5 2165 1121 1038 6 0 2162 3 0 56*4882a593Smuzhiyun cpu6 2183 1127 1050 6 0 2180 3 0 57*4882a593Smuzhiyun cpu7 2193 1133 1052 8 0 2187 6 0 58*4882a593Smuzhiyun cpu8 2165 1115 1032 18 0 2156 9 0 59*4882a593Smuzhiyun cpu9 2301 1252 1033 16 0 2293 8 0 60*4882a593Smuzhiyun cpu10 2197 1138 1041 18 0 2187 10 0 61*4882a593Smuzhiyun cpu11 2273 1185 1062 26 0 2260 13 0 62*4882a593Smuzhiyun cpu12 2186 1125 1043 18 0 2177 9 0 63*4882a593Smuzhiyun cpu13 2161 1115 1030 16 0 2153 8 0 64*4882a593Smuzhiyun cpu14 2206 1153 1033 20 0 2196 10 0 65*4882a593Smuzhiyun cpu15 2163 1115 1032 16 0 2155 8 0 66*4882a593Smuzhiyun 67*4882a593SmuzhiyunIn the output above, for vcpu0, there have been 6839 dispatches since 68*4882a593Smuzhiyunstatistics were enabled. 4126 of those dispatches were on the same 69*4882a593Smuzhiyunphysical cpu as the last time. 2683 were on a different core, but within 70*4882a593Smuzhiyunthe same chip, while 30 dispatches were on a different chip compared to 71*4882a593Smuzhiyunits last dispatch. 72*4882a593Smuzhiyun 73*4882a593SmuzhiyunAlso, out of the total of 6839 dispatches, we see that there have been 74*4882a593Smuzhiyun6821 dispatches on the vcpu's home node, while 18 dispatches were 75*4882a593Smuzhiyunoutside its home node, on a neighbouring chip. 76