xref: /linux/tools/perf/tests/shell/common/patterns.sh (revision 79790b6818e96c58fe2bffee1b418c16e64e7b80)
1*0aa81428SVeronika Molnarova# SPDX-License-Identifier: GPL-2.0
2*0aa81428SVeronika Molnarova
3*0aa81428SVeronika Molnarovaexport RE_NUMBER="[0-9\.]+"
4*0aa81428SVeronika Molnarova# Number
5*0aa81428SVeronika Molnarova# Examples:
6*0aa81428SVeronika Molnarova#    123.456
7*0aa81428SVeronika Molnarova
8*0aa81428SVeronika Molnarova
9*0aa81428SVeronika Molnarovaexport RE_NUMBER_HEX="[0-9A-Fa-f]+"
10*0aa81428SVeronika Molnarova# Hexadecimal number
11*0aa81428SVeronika Molnarova# Examples:
12*0aa81428SVeronika Molnarova#    1234
13*0aa81428SVeronika Molnarova#    a58d
14*0aa81428SVeronika Molnarova#    aBcD
15*0aa81428SVeronika Molnarova#    deadbeef
16*0aa81428SVeronika Molnarova
17*0aa81428SVeronika Molnarova
18*0aa81428SVeronika Molnarovaexport RE_DATE_YYYYMMDD="[0-9]{4}-(?:(?:01|03|05|07|08|10|12)-(?:[0-2][0-9]|3[0-1])|02-[0-2][0-9]|(?:(?:04|06|09|11)-(?:[0-2][0-9]|30)))"
19*0aa81428SVeronika Molnarova# Date in YYYY-MM-DD form
20*0aa81428SVeronika Molnarova# Examples:
21*0aa81428SVeronika Molnarova#    1990-02-29
22*0aa81428SVeronika Molnarova#    0015-07-31
23*0aa81428SVeronika Molnarova#    2456-12-31
24*0aa81428SVeronika Molnarova#!   2012-13-01
25*0aa81428SVeronika Molnarova#!   1963-09-31
26*0aa81428SVeronika Molnarova
27*0aa81428SVeronika Molnarova
28*0aa81428SVeronika Molnarovaexport RE_TIME="(?:[0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"
29*0aa81428SVeronika Molnarova# Time
30*0aa81428SVeronika Molnarova# Examples:
31*0aa81428SVeronika Molnarova#    15:12:27
32*0aa81428SVeronika Molnarova#    23:59:59
33*0aa81428SVeronika Molnarova#!   24:00:00
34*0aa81428SVeronika Molnarova#!   11:25:60
35*0aa81428SVeronika Molnarova#!   17:60:15
36*0aa81428SVeronika Molnarova
37*0aa81428SVeronika Molnarova
38*0aa81428SVeronika Molnarovaexport RE_DATE_TIME="\w+\s+\w+\s+$RE_NUMBER\s+$RE_TIME\s+$RE_NUMBER"
39*0aa81428SVeronika Molnarova# Time and date
40*0aa81428SVeronika Molnarova# Examples:
41*0aa81428SVeronika Molnarova#    Wed Feb 12 10:46:26 2020
42*0aa81428SVeronika Molnarova#    Mon Mar  2 13:27:06 2020
43*0aa81428SVeronika Molnarova#!   St úno 12 10:57:21 CET 2020
44*0aa81428SVeronika Molnarova#!   Po úno 14 15:17:32 2010
45*0aa81428SVeronika Molnarova
46*0aa81428SVeronika Molnarova
47*0aa81428SVeronika Molnarovaexport RE_ADDRESS="0x$RE_NUMBER_HEX"
48*0aa81428SVeronika Molnarova# Memory address
49*0aa81428SVeronika Molnarova# Examples:
50*0aa81428SVeronika Molnarova#    0x123abc
51*0aa81428SVeronika Molnarova#    0xffffffff9abe8ae8
52*0aa81428SVeronika Molnarova#    0x0
53*0aa81428SVeronika Molnarova
54*0aa81428SVeronika Molnarova
55*0aa81428SVeronika Molnarovaexport RE_ADDRESS_NOT_NULL="0x[0-9A-Fa-f]*[1-9A-Fa-f]+[0-9A-Fa-f]*"
56*0aa81428SVeronika Molnarova# Memory address (not NULL)
57*0aa81428SVeronika Molnarova# Examples:
58*0aa81428SVeronika Molnarova#    0xffffffff9abe8ae8
59*0aa81428SVeronika Molnarova#!   0x0
60*0aa81428SVeronika Molnarova#!   0x0000000000000000
61*0aa81428SVeronika Molnarova
62*0aa81428SVeronika Molnarovaexport RE_PROCESS_PID="[^\/]+\/\d+"
63*0aa81428SVeronika Molnarova# A process with PID
64*0aa81428SVeronika Molnarova# Example:
65*0aa81428SVeronika Molnarova#    sleep/4102
66*0aa81428SVeronika Molnarova#    test_overhead./866185
67*0aa81428SVeronika Molnarova#    in:imjournal/1096
68*0aa81428SVeronika Molnarova#    random#$& test/866607
69*0aa81428SVeronika Molnarova
70*0aa81428SVeronika Molnarovaexport RE_EVENT_ANY="[\w\-\:\/_=,]+"
71*0aa81428SVeronika Molnarova# Name of any event (universal)
72*0aa81428SVeronika Molnarova# Examples:
73*0aa81428SVeronika Molnarova#    cpu-cycles
74*0aa81428SVeronika Molnarova#    cpu/event=12,umask=34/
75*0aa81428SVeronika Molnarova#    r41e1
76*0aa81428SVeronika Molnarova#    nfs:nfs_getattr_enter
77*0aa81428SVeronika Molnarova
78*0aa81428SVeronika Molnarova
79*0aa81428SVeronika Molnarovaexport RE_EVENT="[\w\-:_]+"
80*0aa81428SVeronika Molnarova# Name of an usual event
81*0aa81428SVeronika Molnarova# Examples:
82*0aa81428SVeronika Molnarova#    cpu-cycles
83*0aa81428SVeronika Molnarova
84*0aa81428SVeronika Molnarova
85*0aa81428SVeronika Molnarovaexport RE_EVENT_RAW="r$RE_NUMBER_HEX"
86*0aa81428SVeronika Molnarova# Specification of a raw event
87*0aa81428SVeronika Molnarova# Examples:
88*0aa81428SVeronika Molnarova#    r41e1
89*0aa81428SVeronika Molnarova#    r1a
90*0aa81428SVeronika Molnarova
91*0aa81428SVeronika Molnarova
92*0aa81428SVeronika Molnarovaexport RE_EVENT_CPU="cpu/(\w+=$RE_NUMBER_HEX,?)+/p*"
93*0aa81428SVeronika Molnarova# Specification of a CPU event
94*0aa81428SVeronika Molnarova# Examples:
95*0aa81428SVeronika Molnarova#    cpu/event=12,umask=34/pp
96*0aa81428SVeronika Molnarova
97*0aa81428SVeronika Molnarova
98*0aa81428SVeronika Molnarovaexport RE_EVENT_UNCORE="uncore/[\w_]+/"
99*0aa81428SVeronika Molnarova# Specification of an uncore event
100*0aa81428SVeronika Molnarova# Examples:
101*0aa81428SVeronika Molnarova#    uncore/qhl_request_local_reads/
102*0aa81428SVeronika Molnarova
103*0aa81428SVeronika Molnarova
104*0aa81428SVeronika Molnarovaexport RE_EVENT_SUBSYSTEM="[\w\-]+:[\w\-]+"
105*0aa81428SVeronika Molnarova# Name of an event from subsystem
106*0aa81428SVeronika Molnarova# Examples:
107*0aa81428SVeronika Molnarova#    ext4:ext4_ordered_write_end
108*0aa81428SVeronika Molnarova#    sched:sched_switch
109*0aa81428SVeronika Molnarova
110*0aa81428SVeronika Molnarova
111*0aa81428SVeronika Molnarovaexport RE_FILE_NAME="[\w\+\.-]+"
112*0aa81428SVeronika Molnarova# A filename
113*0aa81428SVeronika Molnarova# Examples:
114*0aa81428SVeronika Molnarova#    libstdc++.so.6
115*0aa81428SVeronika Molnarova#!   some/path
116*0aa81428SVeronika Molnarova
117*0aa81428SVeronika Molnarova
118*0aa81428SVeronika Molnarovaexport RE_PATH_ABSOLUTE="(?:\/$RE_FILE_NAME)+"
119*0aa81428SVeronika Molnarova# A full filepath
120*0aa81428SVeronika Molnarova# Examples:
121*0aa81428SVeronika Molnarova#    /usr/lib64/somelib.so.5.4.0
122*0aa81428SVeronika Molnarova#    /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko
123*0aa81428SVeronika Molnarova#    /usr/bin/mv
124*0aa81428SVeronika Molnarova#!   some/relative/path
125*0aa81428SVeronika Molnarova#!   ./some/relative/path
126*0aa81428SVeronika Molnarova
127*0aa81428SVeronika Molnarova
128*0aa81428SVeronika Molnarovaexport RE_PATH="(?:$RE_FILE_NAME)?$RE_PATH_ABSOLUTE"
129*0aa81428SVeronika Molnarova# A filepath
130*0aa81428SVeronika Molnarova# Examples:
131*0aa81428SVeronika Molnarova#    /usr/lib64/somelib.so.5.4.0
132*0aa81428SVeronika Molnarova#    /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko
133*0aa81428SVeronika Molnarova#    ./.emacs
134*0aa81428SVeronika Molnarova#    src/fs/file.c
135*0aa81428SVeronika Molnarova
136*0aa81428SVeronika Molnarova
137*0aa81428SVeronika Molnarovaexport RE_DSO="(?:$RE_PATH_ABSOLUTE(?: \(deleted\))?|\[kernel\.kallsyms\]|\[unknown\]|\[vdso\]|\[kernel\.vmlinux\][\.\w]*)"
138*0aa81428SVeronika Molnarova# A DSO name in various result tables
139*0aa81428SVeronika Molnarova# Examples:
140*0aa81428SVeronika Molnarova#    /usr/lib64/somelib.so.5.4.0
141*0aa81428SVeronika Molnarova#    /usr/bin/somebinart (deleted)
142*0aa81428SVeronika Molnarova#    /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko
143*0aa81428SVeronika Molnarova#    [kernel.kallsyms]
144*0aa81428SVeronika Molnarova#    [kernel.vmlinux]
145*0aa81428SVeronika Molnarova#    [vdso]
146*0aa81428SVeronika Molnarova#    [unknown]
147*0aa81428SVeronika Molnarova
148*0aa81428SVeronika Molnarova
149*0aa81428SVeronika Molnarovaexport RE_LINE_COMMENT="^#.*"
150*0aa81428SVeronika Molnarova# A comment line
151*0aa81428SVeronika Molnarova# Examples:
152*0aa81428SVeronika Molnarova#    # Started on Thu Sep 10 11:43:00 2015
153*0aa81428SVeronika Molnarova
154*0aa81428SVeronika Molnarova
155*0aa81428SVeronika Molnarovaexport RE_LINE_EMPTY="^\s*$"
156*0aa81428SVeronika Molnarova# An empty line with possible whitespaces
157*0aa81428SVeronika Molnarova# Examples:
158*0aa81428SVeronika Molnarova#
159*0aa81428SVeronika Molnarova
160*0aa81428SVeronika Molnarova
161*0aa81428SVeronika Molnarovaexport RE_LINE_RECORD1="^\[\s+perf\s+record:\s+Woken up $RE_NUMBER times? to write data\s+\].*$"
162*0aa81428SVeronika Molnarova# The first line of perf-record "OK" output
163*0aa81428SVeronika Molnarova# Examples:
164*0aa81428SVeronika Molnarova#    [ perf record: Woken up 1 times to write data ]
165*0aa81428SVeronika Molnarova
166*0aa81428SVeronika Molnarova
167*0aa81428SVeronika Molnarovaexport RE_LINE_RECORD2="^\[\s+perf\s+record:\s+Captured and wrote $RE_NUMBER\s*MB\s+(?:[\w\+\.-]*(?:$RE_PATH)?\/)?perf\.data(?:\.\d+)?\s*\(~?$RE_NUMBER samples\)\s+\].*$"
168*0aa81428SVeronika Molnarova# The second line of perf-record "OK" output
169*0aa81428SVeronika Molnarova# Examples:
170*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ]
171*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB perf.data (~109 samples) ]
172*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB /some/temp/dir/perf.data (109 samples) ]
173*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB ./perf.data (109 samples) ]
174*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB ./perf.data.3 (109 samples) ]
175*0aa81428SVeronika Molnarova
176*0aa81428SVeronika Molnarova
177*0aa81428SVeronika Molnarovaexport RE_LINE_RECORD2_TOLERANT="^\[\s+perf\s+record:\s+Captured and wrote $RE_NUMBER\s*MB\s+(?:[\w\+\.-]*(?:$RE_PATH)?\/)?perf\.data(?:\.\d+)?\s*(?:\(~?$RE_NUMBER samples\))?\s+\].*$"
178*0aa81428SVeronika Molnarova# The second line of perf-record "OK" output, even no samples is OK here
179*0aa81428SVeronika Molnarova# Examples:
180*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ]
181*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB perf.data (~109 samples) ]
182*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB /some/temp/dir/perf.data (109 samples) ]
183*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB ./perf.data (109 samples) ]
184*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB ./perf.data.3 (109 samples) ]
185*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB perf.data ]
186*0aa81428SVeronika Molnarova
187*0aa81428SVeronika Molnarova
188*0aa81428SVeronika Molnarovaexport RE_LINE_RECORD2_TOLERANT_FILENAME="^\[\s+perf\s+record:\s+Captured and wrote $RE_NUMBER\s*MB\s+(?:[\w\+\.-]*(?:$RE_PATH)?\/)?perf\w*\.data(?:\.\d+)?\s*\(~?$RE_NUMBER samples\)\s+\].*$"
189*0aa81428SVeronika Molnarova# The second line of perf-record "OK" output
190*0aa81428SVeronika Molnarova# Examples:
191*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ]
192*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB perf_ls.data (~109 samples) ]
193*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB perf_aNyCaSe.data (109 samples) ]
194*0aa81428SVeronika Molnarova#    [ perf record: Captured and wrote 0.405 MB ./perfdata.data.3 (109 samples) ]
195*0aa81428SVeronika Molnarova#!    [ perf record: Captured and wrote 0.405 MB /some/temp/dir/my_own.data (109 samples) ]
196*0aa81428SVeronika Molnarova#!    [ perf record: Captured and wrote 0.405 MB ./UPPERCASE.data (109 samples) ]
197*0aa81428SVeronika Molnarova#!    [ perf record: Captured and wrote 0.405 MB ./aNyKiNDoF.data.3 (109 samples) ]
198*0aa81428SVeronika Molnarova#!    [ perf record: Captured and wrote 0.405 MB perf.data ]
199*0aa81428SVeronika Molnarova
200*0aa81428SVeronika Molnarova
201*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_FULL="^\s*$RE_NUMBER\s*\(\s*$RE_NUMBER\s*ms\s*\):\s*$RE_PROCESS_PID\s+.*\)\s+=\s+(:?\-?$RE_NUMBER|0x$RE_NUMBER_HEX).*$"
202*0aa81428SVeronika Molnarova# A line of perf-trace output
203*0aa81428SVeronika Molnarova# Examples:
204*0aa81428SVeronika Molnarova#    0.115 ( 0.005 ms): sleep/4102 open(filename: 0xd09e2ab2, flags: CLOEXEC                             ) = 3
205*0aa81428SVeronika Molnarova#    0.157 ( 0.005 ms): sleep/4102 mmap(len: 3932736, prot: EXEC|READ, flags: PRIVATE|DENYWRITE, fd: 3   ) = 0x7f89d0605000
206*0aa81428SVeronika Molnarova#!    0.115 ( 0.005 ms): sleep/4102 open(filename: 0xd09e2ab2, flags: CLOEXEC                             ) =
207*0aa81428SVeronika Molnarova
208*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_ONE_PROC="^\s*$RE_NUMBER\s*\(\s*$RE_NUMBER\s*ms\s*\):\s*\w+\(.*\)\s+=\s+(?:\-?$RE_NUMBER|0x$RE_NUMBER_HEX).*$"
209*0aa81428SVeronika Molnarova# A line of perf-trace output
210*0aa81428SVeronika Molnarova# Examples:
211*0aa81428SVeronika Molnarova#    0.115 ( 0.005 ms): open(filename: 0xd09e2ab2, flags: CLOEXEC                             ) = 3
212*0aa81428SVeronika Molnarova#    0.157 ( 0.005 ms): mmap(len: 3932736, prot: EXEC|READ, flags: PRIVATE|DENYWRITE, fd: 3   ) = 0x7f89d0605000
213*0aa81428SVeronika Molnarova#!    0.115 ( 0.005 ms): open(filename: 0xd09e2ab2, flags: CLOEXEC                             ) =
214*0aa81428SVeronika Molnarova
215*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_CONTINUED="^\s*(:?$RE_NUMBER|\?)\s*\(\s*($RE_NUMBER\s*ms\s*)?\):\s*($RE_PROCESS_PID\s*)?\.\.\.\s*\[continued\]:\s+\w+\(\).*\s+=\s+(?:\-?$RE_NUMBER|0x$RE_NUMBER_HEX).*$"
216*0aa81428SVeronika Molnarova# A line of perf-trace output
217*0aa81428SVeronika Molnarova# Examples:
218*0aa81428SVeronika Molnarova#    0.000 ( 0.000 ms):  ... [continued]: nanosleep()) = 0
219*0aa81428SVeronika Molnarova#    0.000 ( 0.000 ms):  ... [continued]: nanosleep()) = 0x00000000
220*0aa81428SVeronika Molnarova#    ? (         ): packagekitd/94838  ... [continued]: poll())                                             = 0 (Timeout)
221*0aa81428SVeronika Molnarova#!    0.000 ( 0.000 ms):  ... [continued]: nanosleep()) =
222*0aa81428SVeronika Molnarova
223*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_UNFINISHED="^\s*$RE_NUMBER\s*\(\s*\):\s*$RE_PROCESS_PID\s+.*\)\s+\.\.\.\s*$"
224*0aa81428SVeronika Molnarova# A line of perf-trace output
225*0aa81428SVeronika Molnarova# Examples:
226*0aa81428SVeronika Molnarova#    901.040 (         ): in:imjournal/1096 ppoll(ufds: 0x7f701a5adb70, nfds: 1, tsp: 0x7f701a5adaf0, sigsetsize: 8) ...
227*0aa81428SVeronika Molnarova#    613.727 (         ): gmain/1099 poll(ufds: 0x56248f6b64b0, nfds: 2, timeout_msecs: 3996)           ...
228*0aa81428SVeronika Molnarova
229*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_SUMMARY_HEADER="\s*syscall\s+calls\s+(?:errors\s+)?total\s+min\s+avg\s+max\s+stddev"
230*0aa81428SVeronika Molnarova# A header of a perf-trace summary table
231*0aa81428SVeronika Molnarova# Example:
232*0aa81428SVeronika Molnarova#    syscall            calls    total       min       avg       max      stddev
233*0aa81428SVeronika Molnarova#    syscall            calls  errors  total       min       avg       max       stddev
234*0aa81428SVeronika Molnarova
235*0aa81428SVeronika Molnarova
236*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_SUMMARY_CONTENT="^\s*\w+\s+(?:$RE_NUMBER\s+){5,6}$RE_NUMBER%"
237*0aa81428SVeronika Molnarova# A line of a perf-trace summary table
238*0aa81428SVeronika Molnarova# Example:
239*0aa81428SVeronika Molnarova#    open                   3     0.017     0.005     0.006     0.007     10.90%
240*0aa81428SVeronika Molnarova#    openat                 2      0     0.017     0.008     0.009     0.010     12.29%
241*0aa81428SVeronika Molnarova
242*0aa81428SVeronika Molnarova
243*0aa81428SVeronika Molnarovaexport RE_LINE_REPORT_CONTENT="^\s+$RE_NUMBER%\s+\w+\s+\S+\s+\S+\s+\S+" # FIXME
244*0aa81428SVeronika Molnarova# A line from typicap perf report --stdio output
245*0aa81428SVeronika Molnarova# Example:
246*0aa81428SVeronika Molnarova#     100.00%  sleep    [kernel.vmlinux]  [k] syscall_return_slowpath
247*0aa81428SVeronika Molnarova
248*0aa81428SVeronika Molnarova
249*0aa81428SVeronika Molnarovaexport RE_TASK="\s+[\w~\/ \.\+:#-]+(?:\[-1(?:\/\d+)?\]|\[\d+(?:\/\d+)?\])"
250*0aa81428SVeronika Molnarova# A name of a task used for perf sched timehist -s
251*0aa81428SVeronika Molnarova# Example:
252*0aa81428SVeronika Molnarova#     sleep[62755]
253*0aa81428SVeronika Molnarova#     runtest.sh[62762]
254*0aa81428SVeronika Molnarova#     gmain[705/682]
255*0aa81428SVeronika Molnarova#     xfsaild/dm-0[495]
256*0aa81428SVeronika Molnarova#     kworker/u8:1-ev[62714]
257*0aa81428SVeronika Molnarova#     :-1[-1/62756]
258*0aa81428SVeronika Molnarova#     :-1[-1]
259*0aa81428SVeronika Molnarova#     :-1[62756]
260*0aa81428SVeronika Molnarova
261*0aa81428SVeronika Molnarova
262*0aa81428SVeronika Molnarovaexport RE_SEGFAULT=".*(?:Segmentation\sfault|SIGSEGV|\score\s|dumped|segfault).*"
263*0aa81428SVeronika Molnarova# Possible variations of the segfault message
264*0aa81428SVeronika Molnarova# Example:
265*0aa81428SVeronika Molnarova#     /bin/bash: line 1:    32 Segmentation fault      timeout 15s
266*0aa81428SVeronika Molnarova#     Segmentation fault (core dumped)
267*0aa81428SVeronika Molnarova#     Program terminated with signal SIGSEGV
268*0aa81428SVeronika Molnarova#!     WARNING: 12323431 isn't a 'cpu_core', please use a CPU list in the 'cpu_core' range (0-15)
269