~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/perf/tests/shell/lib/stat_output.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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 }

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php