|
6 | 6 |
|
7 | 7 | set -e
|
8 | 8 |
|
| 9 | +skip_test=0 |
| 10 | + |
9 | 11 | pythonchecker=$(dirname $0)/lib/perf_json_output_lint.py
|
10 | 12 | if [ "x$PYTHON" == "x" ]
|
11 | 13 | then
|
@@ -134,14 +136,47 @@ check_per_socket()
|
134 | 136 | echo "[Success]"
|
135 | 137 | }
|
136 | 138 |
|
| 139 | +# The perf stat options for per-socket, per-core, per-die |
| 140 | +# and -A ( no_aggr mode ) uses the info fetched from this |
| 141 | +# directory: "/sys/devices/system/cpu/cpu*/topology". For |
| 142 | +# example, socket value is fetched from "physical_package_id" |
| 143 | +# file in topology directory. |
| 144 | +# Reference: cpu__get_topology_int in util/cpumap.c |
| 145 | +# If the platform doesn't expose topology information, values |
| 146 | +# will be set to -1. For example, incase of pSeries platform |
| 147 | +# of powerpc, value for "physical_package_id" is restricted |
| 148 | +# and set to -1. Check here validates the socket-id read from |
| 149 | +# topology file before proceeding further |
| 150 | + |
| 151 | +FILE_LOC="/sys/devices/system/cpu/cpu*/topology/" |
| 152 | +FILE_NAME="physical_package_id" |
| 153 | + |
| 154 | +check_for_topology() |
| 155 | +{ |
| 156 | + if ! ParanoidAndNotRoot 0 |
| 157 | + then |
| 158 | + socket_file=`ls $FILE_LOC/$FILE_NAME | head -n 1` |
| 159 | + [ -z $socket_file ] && return 0 |
| 160 | + socket_id=`cat $socket_file` |
| 161 | + [ $socket_id == -1 ] && skip_test=1 |
| 162 | + return 0 |
| 163 | + fi |
| 164 | +} |
| 165 | + |
| 166 | +check_for_topology |
137 | 167 | check_no_args
|
138 | 168 | check_system_wide
|
139 |
| -check_system_wide_no_aggr |
140 | 169 | check_interval
|
141 | 170 | check_event
|
142 |
| -check_per_core |
143 | 171 | check_per_thread
|
144 |
| -check_per_die |
145 | 172 | check_per_node
|
146 |
| -check_per_socket |
| 173 | +if [ $skip_test -ne 1 ] |
| 174 | +then |
| 175 | + check_system_wide_no_aggr |
| 176 | + check_per_core |
| 177 | + check_per_die |
| 178 | + check_per_socket |
| 179 | +else |
| 180 | + echo "[Skip] Skipping tests for system_wide_no_aggr, per_core, per_die and per_socket since socket id exposed via topology is invalid" |
| 181 | +fi |
147 | 182 | exit 0
|
0 commit comments