mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 23:51:39 +00:00
perf testsuite: Add common regex patters
Unify perf regexes for checking testing output into a single file to reduce duplicates and prevent errors when editing. This will be used in upcomming patches in shell tests. Signed-off-by: Veronika Molnarova <vmolnaro@redhat.com> Signed-off-by: Michael Petlan <mpetlan@redhat.com> Cc: kjain@linux.ibm.com Cc: atrajeev@linux.vnet.ibm.com Signed-off-by: Namhyung Kim <namhyung@kernel.org> Link: https://lore.kernel.org/r/20240215110231.15385-2-mpetlan@redhat.com
This commit is contained in:
parent
6f04d664a9
commit
0aa8142871
268
tools/perf/tests/shell/common/patterns.sh
Normal file
268
tools/perf/tests/shell/common/patterns.sh
Normal file
@ -0,0 +1,268 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
export RE_NUMBER="[0-9\.]+"
|
||||
# Number
|
||||
# Examples:
|
||||
# 123.456
|
||||
|
||||
|
||||
export RE_NUMBER_HEX="[0-9A-Fa-f]+"
|
||||
# Hexadecimal number
|
||||
# Examples:
|
||||
# 1234
|
||||
# a58d
|
||||
# aBcD
|
||||
# deadbeef
|
||||
|
||||
|
||||
export 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)))"
|
||||
# Date in YYYY-MM-DD form
|
||||
# Examples:
|
||||
# 1990-02-29
|
||||
# 0015-07-31
|
||||
# 2456-12-31
|
||||
#! 2012-13-01
|
||||
#! 1963-09-31
|
||||
|
||||
|
||||
export RE_TIME="(?:[0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"
|
||||
# Time
|
||||
# Examples:
|
||||
# 15:12:27
|
||||
# 23:59:59
|
||||
#! 24:00:00
|
||||
#! 11:25:60
|
||||
#! 17:60:15
|
||||
|
||||
|
||||
export RE_DATE_TIME="\w+\s+\w+\s+$RE_NUMBER\s+$RE_TIME\s+$RE_NUMBER"
|
||||
# Time and date
|
||||
# Examples:
|
||||
# Wed Feb 12 10:46:26 2020
|
||||
# Mon Mar 2 13:27:06 2020
|
||||
#! St úno 12 10:57:21 CET 2020
|
||||
#! Po úno 14 15:17:32 2010
|
||||
|
||||
|
||||
export RE_ADDRESS="0x$RE_NUMBER_HEX"
|
||||
# Memory address
|
||||
# Examples:
|
||||
# 0x123abc
|
||||
# 0xffffffff9abe8ae8
|
||||
# 0x0
|
||||
|
||||
|
||||
export RE_ADDRESS_NOT_NULL="0x[0-9A-Fa-f]*[1-9A-Fa-f]+[0-9A-Fa-f]*"
|
||||
# Memory address (not NULL)
|
||||
# Examples:
|
||||
# 0xffffffff9abe8ae8
|
||||
#! 0x0
|
||||
#! 0x0000000000000000
|
||||
|
||||
export RE_PROCESS_PID="[^\/]+\/\d+"
|
||||
# A process with PID
|
||||
# Example:
|
||||
# sleep/4102
|
||||
# test_overhead./866185
|
||||
# in:imjournal/1096
|
||||
# random#$& test/866607
|
||||
|
||||
export RE_EVENT_ANY="[\w\-\:\/_=,]+"
|
||||
# Name of any event (universal)
|
||||
# Examples:
|
||||
# cpu-cycles
|
||||
# cpu/event=12,umask=34/
|
||||
# r41e1
|
||||
# nfs:nfs_getattr_enter
|
||||
|
||||
|
||||
export RE_EVENT="[\w\-:_]+"
|
||||
# Name of an usual event
|
||||
# Examples:
|
||||
# cpu-cycles
|
||||
|
||||
|
||||
export RE_EVENT_RAW="r$RE_NUMBER_HEX"
|
||||
# Specification of a raw event
|
||||
# Examples:
|
||||
# r41e1
|
||||
# r1a
|
||||
|
||||
|
||||
export RE_EVENT_CPU="cpu/(\w+=$RE_NUMBER_HEX,?)+/p*"
|
||||
# Specification of a CPU event
|
||||
# Examples:
|
||||
# cpu/event=12,umask=34/pp
|
||||
|
||||
|
||||
export RE_EVENT_UNCORE="uncore/[\w_]+/"
|
||||
# Specification of an uncore event
|
||||
# Examples:
|
||||
# uncore/qhl_request_local_reads/
|
||||
|
||||
|
||||
export RE_EVENT_SUBSYSTEM="[\w\-]+:[\w\-]+"
|
||||
# Name of an event from subsystem
|
||||
# Examples:
|
||||
# ext4:ext4_ordered_write_end
|
||||
# sched:sched_switch
|
||||
|
||||
|
||||
export RE_FILE_NAME="[\w\+\.-]+"
|
||||
# A filename
|
||||
# Examples:
|
||||
# libstdc++.so.6
|
||||
#! some/path
|
||||
|
||||
|
||||
export RE_PATH_ABSOLUTE="(?:\/$RE_FILE_NAME)+"
|
||||
# A full filepath
|
||||
# Examples:
|
||||
# /usr/lib64/somelib.so.5.4.0
|
||||
# /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko
|
||||
# /usr/bin/mv
|
||||
#! some/relative/path
|
||||
#! ./some/relative/path
|
||||
|
||||
|
||||
export RE_PATH="(?:$RE_FILE_NAME)?$RE_PATH_ABSOLUTE"
|
||||
# A filepath
|
||||
# Examples:
|
||||
# /usr/lib64/somelib.so.5.4.0
|
||||
# /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko
|
||||
# ./.emacs
|
||||
# src/fs/file.c
|
||||
|
||||
|
||||
export RE_DSO="(?:$RE_PATH_ABSOLUTE(?: \(deleted\))?|\[kernel\.kallsyms\]|\[unknown\]|\[vdso\]|\[kernel\.vmlinux\][\.\w]*)"
|
||||
# A DSO name in various result tables
|
||||
# Examples:
|
||||
# /usr/lib64/somelib.so.5.4.0
|
||||
# /usr/bin/somebinart (deleted)
|
||||
# /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko
|
||||
# [kernel.kallsyms]
|
||||
# [kernel.vmlinux]
|
||||
# [vdso]
|
||||
# [unknown]
|
||||
|
||||
|
||||
export RE_LINE_COMMENT="^#.*"
|
||||
# A comment line
|
||||
# Examples:
|
||||
# # Started on Thu Sep 10 11:43:00 2015
|
||||
|
||||
|
||||
export RE_LINE_EMPTY="^\s*$"
|
||||
# An empty line with possible whitespaces
|
||||
# Examples:
|
||||
#
|
||||
|
||||
|
||||
export RE_LINE_RECORD1="^\[\s+perf\s+record:\s+Woken up $RE_NUMBER times? to write data\s+\].*$"
|
||||
# The first line of perf-record "OK" output
|
||||
# Examples:
|
||||
# [ perf record: Woken up 1 times to write data ]
|
||||
|
||||
|
||||
export 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+\].*$"
|
||||
# The second line of perf-record "OK" output
|
||||
# Examples:
|
||||
# [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB perf.data (~109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB /some/temp/dir/perf.data (109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB ./perf.data (109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB ./perf.data.3 (109 samples) ]
|
||||
|
||||
|
||||
export 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+\].*$"
|
||||
# The second line of perf-record "OK" output, even no samples is OK here
|
||||
# Examples:
|
||||
# [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB perf.data (~109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB /some/temp/dir/perf.data (109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB ./perf.data (109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB ./perf.data.3 (109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB perf.data ]
|
||||
|
||||
|
||||
export 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+\].*$"
|
||||
# The second line of perf-record "OK" output
|
||||
# Examples:
|
||||
# [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB perf_ls.data (~109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB perf_aNyCaSe.data (109 samples) ]
|
||||
# [ perf record: Captured and wrote 0.405 MB ./perfdata.data.3 (109 samples) ]
|
||||
#! [ perf record: Captured and wrote 0.405 MB /some/temp/dir/my_own.data (109 samples) ]
|
||||
#! [ perf record: Captured and wrote 0.405 MB ./UPPERCASE.data (109 samples) ]
|
||||
#! [ perf record: Captured and wrote 0.405 MB ./aNyKiNDoF.data.3 (109 samples) ]
|
||||
#! [ perf record: Captured and wrote 0.405 MB perf.data ]
|
||||
|
||||
|
||||
export 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).*$"
|
||||
# A line of perf-trace output
|
||||
# Examples:
|
||||
# 0.115 ( 0.005 ms): sleep/4102 open(filename: 0xd09e2ab2, flags: CLOEXEC ) = 3
|
||||
# 0.157 ( 0.005 ms): sleep/4102 mmap(len: 3932736, prot: EXEC|READ, flags: PRIVATE|DENYWRITE, fd: 3 ) = 0x7f89d0605000
|
||||
#! 0.115 ( 0.005 ms): sleep/4102 open(filename: 0xd09e2ab2, flags: CLOEXEC ) =
|
||||
|
||||
export 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).*$"
|
||||
# A line of perf-trace output
|
||||
# Examples:
|
||||
# 0.115 ( 0.005 ms): open(filename: 0xd09e2ab2, flags: CLOEXEC ) = 3
|
||||
# 0.157 ( 0.005 ms): mmap(len: 3932736, prot: EXEC|READ, flags: PRIVATE|DENYWRITE, fd: 3 ) = 0x7f89d0605000
|
||||
#! 0.115 ( 0.005 ms): open(filename: 0xd09e2ab2, flags: CLOEXEC ) =
|
||||
|
||||
export 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).*$"
|
||||
# A line of perf-trace output
|
||||
# Examples:
|
||||
# 0.000 ( 0.000 ms): ... [continued]: nanosleep()) = 0
|
||||
# 0.000 ( 0.000 ms): ... [continued]: nanosleep()) = 0x00000000
|
||||
# ? ( ): packagekitd/94838 ... [continued]: poll()) = 0 (Timeout)
|
||||
#! 0.000 ( 0.000 ms): ... [continued]: nanosleep()) =
|
||||
|
||||
export RE_LINE_TRACE_UNFINISHED="^\s*$RE_NUMBER\s*\(\s*\):\s*$RE_PROCESS_PID\s+.*\)\s+\.\.\.\s*$"
|
||||
# A line of perf-trace output
|
||||
# Examples:
|
||||
# 901.040 ( ): in:imjournal/1096 ppoll(ufds: 0x7f701a5adb70, nfds: 1, tsp: 0x7f701a5adaf0, sigsetsize: 8) ...
|
||||
# 613.727 ( ): gmain/1099 poll(ufds: 0x56248f6b64b0, nfds: 2, timeout_msecs: 3996) ...
|
||||
|
||||
export RE_LINE_TRACE_SUMMARY_HEADER="\s*syscall\s+calls\s+(?:errors\s+)?total\s+min\s+avg\s+max\s+stddev"
|
||||
# A header of a perf-trace summary table
|
||||
# Example:
|
||||
# syscall calls total min avg max stddev
|
||||
# syscall calls errors total min avg max stddev
|
||||
|
||||
|
||||
export RE_LINE_TRACE_SUMMARY_CONTENT="^\s*\w+\s+(?:$RE_NUMBER\s+){5,6}$RE_NUMBER%"
|
||||
# A line of a perf-trace summary table
|
||||
# Example:
|
||||
# open 3 0.017 0.005 0.006 0.007 10.90%
|
||||
# openat 2 0 0.017 0.008 0.009 0.010 12.29%
|
||||
|
||||
|
||||
export RE_LINE_REPORT_CONTENT="^\s+$RE_NUMBER%\s+\w+\s+\S+\s+\S+\s+\S+" # FIXME
|
||||
# A line from typicap perf report --stdio output
|
||||
# Example:
|
||||
# 100.00% sleep [kernel.vmlinux] [k] syscall_return_slowpath
|
||||
|
||||
|
||||
export RE_TASK="\s+[\w~\/ \.\+:#-]+(?:\[-1(?:\/\d+)?\]|\[\d+(?:\/\d+)?\])"
|
||||
# A name of a task used for perf sched timehist -s
|
||||
# Example:
|
||||
# sleep[62755]
|
||||
# runtest.sh[62762]
|
||||
# gmain[705/682]
|
||||
# xfsaild/dm-0[495]
|
||||
# kworker/u8:1-ev[62714]
|
||||
# :-1[-1/62756]
|
||||
# :-1[-1]
|
||||
# :-1[62756]
|
||||
|
||||
|
||||
export RE_SEGFAULT=".*(?:Segmentation\sfault|SIGSEGV|\score\s|dumped|segfault).*"
|
||||
# Possible variations of the segfault message
|
||||
# Example:
|
||||
# /bin/bash: line 1: 32 Segmentation fault timeout 15s
|
||||
# Segmentation fault (core dumped)
|
||||
# Program terminated with signal SIGSEGV
|
||||
#! WARNING: 12323431 isn't a 'cpu_core', please use a CPU list in the 'cpu_core' range (0-15)
|
Loading…
Reference in New Issue
Block a user