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