]> Git Repo - linux.git/blob - tools/perf/tests/shell/lib/stat_output.sh
Linux 6.14-rc3
[linux.git] / tools / perf / tests / shell / lib / stat_output.sh
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3
4 # Return true if perf_event_paranoid is > $1 and not running as root.
5 function ParanoidAndNotRoot()
6 {
7          [ "$(id -u)" != 0 ] && [ "$(cat /proc/sys/kernel/perf_event_paranoid)" -gt $1 ]
8 }
9
10 # $1 name $2 extra_opt
11 check_no_args()
12 {
13         echo -n "Checking $1 output: no args "
14         perf stat $2 true
15         commachecker --no-args
16         echo "[Success]"
17 }
18
19 check_system_wide()
20 {
21         echo -n "Checking $1 output: system wide "
22         if ParanoidAndNotRoot 0
23         then
24                 echo "[Skip] paranoid and not root"
25                 return
26         fi
27         perf stat -a $2 true
28         commachecker --system-wide
29         echo "[Success]"
30 }
31
32 check_system_wide_no_aggr()
33 {
34         echo -n "Checking $1 output: system wide no aggregation "
35         if ParanoidAndNotRoot 0
36         then
37                 echo "[Skip] paranoid and not root"
38                 return
39         fi
40         perf stat -A -a --no-merge $2 true
41         commachecker --system-wide-no-aggr
42         echo "[Success]"
43 }
44
45 check_interval()
46 {
47         echo -n "Checking $1 output: interval "
48         perf stat -I 1000 $2 true
49         commachecker --interval
50         echo "[Success]"
51 }
52
53 check_event()
54 {
55         echo -n "Checking $1 output: event "
56         perf stat -e cpu-clock $2 true
57         commachecker --event
58         echo "[Success]"
59 }
60
61 check_per_core()
62 {
63         echo -n "Checking $1 output: per core "
64         if ParanoidAndNotRoot 0
65         then
66                 echo "[Skip] paranoid and not root"
67                 return
68         fi
69         perf stat --per-core -a $2 true
70         commachecker --per-core
71         echo "[Success]"
72 }
73
74 check_per_thread()
75 {
76         echo -n "Checking $1 output: per thread "
77         if ParanoidAndNotRoot 0
78         then
79                 echo "[Skip] paranoid and not root"
80                 return
81         fi
82         perf stat --per-thread -p $$ $2 true
83         commachecker --per-thread
84         echo "[Success]"
85 }
86
87 check_per_cache_instance()
88 {
89         echo -n "Checking $1 output: per cache instance "
90         if ParanoidAndNotRoot 0
91         then
92                 echo "[Skip] paranoid and not root"
93                 return
94         fi
95         perf stat --per-cache -a $2 true
96         commachecker --per-cache
97         echo "[Success]"
98 }
99
100 check_per_cluster()
101 {
102         echo -n "Checking $1 output: per cluster "
103         if ParanoidAndNotRoot 0
104         then
105                 echo "[Skip] paranoid and not root"
106                 return
107         fi
108         perf stat --per-cluster -a $2 true
109         echo "[Success]"
110 }
111
112 check_per_die()
113 {
114         echo -n "Checking $1 output: per die "
115         if ParanoidAndNotRoot 0
116         then
117                 echo "[Skip] paranoid and not root"
118                 return
119         fi
120         perf stat --per-die -a $2 true
121         commachecker --per-die
122         echo "[Success]"
123 }
124
125 check_per_node()
126 {
127         echo -n "Checking $1 output: per node "
128         if ParanoidAndNotRoot 0
129         then
130                 echo "[Skip] paranoid and not root"
131                 return
132         fi
133         perf stat --per-node -a $2 true
134         commachecker --per-node
135         echo "[Success]"
136 }
137
138 check_per_socket()
139 {
140         echo -n "Checking $1 output: per socket "
141         if ParanoidAndNotRoot 0
142         then
143                 echo "[Skip] paranoid and not root"
144                 return
145         fi
146         perf stat --per-socket -a $2 true
147         commachecker --per-socket
148         echo "[Success]"
149 }
150
151 # The perf stat options for per-socket, per-core, per-die
152 # and -A ( no_aggr mode ) uses the info fetched from this
153 # directory: "/sys/devices/system/cpu/cpu*/topology". For
154 # example, socket value is fetched from "physical_package_id"
155 # file in topology directory.
156 # Reference: cpu__get_topology_int in util/cpumap.c
157 # If the platform doesn't expose topology information, values
158 # will be set to -1. For example, incase of pSeries platform
159 # of powerpc, value for  "physical_package_id" is restricted
160 # and set to -1. Check here validates the socket-id read from
161 # topology file before proceeding further
162
163 FILE_LOC="/sys/devices/system/cpu/cpu*/topology/"
164 FILE_NAME="physical_package_id"
165
166 function check_for_topology()
167 {
168         if ! ParanoidAndNotRoot 0
169         then
170                 socket_file=`ls $FILE_LOC/$FILE_NAME | head -n 1`
171                 [ -z $socket_file ] && {
172                         echo 0
173                         return
174                 }
175                 socket_id=`cat $socket_file`
176                 [ $socket_id == -1 ] && {
177                         echo 1
178                         return
179                 }
180         fi
181         echo 0
182 }
This page took 0.04164 seconds and 4 git commands to generate.