1bb177a85SIan Rogers#!/bin/sh 2bb177a85SIan Rogers# perf script tests 3bb177a85SIan Rogers# SPDX-License-Identifier: GPL-2.0 4bb177a85SIan Rogers 5bb177a85SIan Rogersset -e 6bb177a85SIan Rogers 7bb177a85SIan Rogerstemp_dir=$(mktemp -d /tmp/perf-test-script.XXXXXXXXXX) 8bb177a85SIan Rogers 9bb177a85SIan Rogersperfdatafile="${temp_dir}/perf.data" 10bb177a85SIan Rogersdb_test="${temp_dir}/db_test.py" 11bb177a85SIan Rogers 12bb177a85SIan Rogerserr=0 13bb177a85SIan Rogers 14bb177a85SIan Rogerscleanup() 15bb177a85SIan Rogers{ 16bb177a85SIan Rogers trap - EXIT TERM INT 17bb177a85SIan Rogers sane=$(echo "${temp_dir}" | cut -b 1-21) 18bb177a85SIan Rogers if [ "${sane}" = "/tmp/perf-test-script" ] ; then 19bb177a85SIan Rogers echo "--- Cleaning up ---" 20e0c48bf9SAdrian Hunter rm -rf "${temp_dir:?}/"* 21bb177a85SIan Rogers rmdir "${temp_dir}" 22bb177a85SIan Rogers fi 23bb177a85SIan Rogers} 24bb177a85SIan Rogers 25bb177a85SIan Rogerstrap_cleanup() 26bb177a85SIan Rogers{ 27bb177a85SIan Rogers cleanup 28bb177a85SIan Rogers exit 1 29bb177a85SIan Rogers} 30bb177a85SIan Rogers 31bb177a85SIan Rogerstrap trap_cleanup EXIT TERM INT 32bb177a85SIan Rogers 33bb177a85SIan Rogers 34bb177a85SIan Rogerstest_db() 35bb177a85SIan Rogers{ 36bb177a85SIan Rogers echo "DB test" 37bb177a85SIan Rogers 38bb177a85SIan Rogers # Check if python script is supported 391c2124ecSIan Rogers if perf version --build-options | grep python | grep -q OFF ; then 40bb177a85SIan Rogers echo "SKIP: python scripting is not supported" 41bb177a85SIan Rogers err=2 42bb177a85SIan Rogers return 43bb177a85SIan Rogers fi 44bb177a85SIan Rogers 45bb177a85SIan Rogers cat << "_end_of_file_" > "${db_test}" 46bb177a85SIan Rogersperf_db_export_mode = True 47bb177a85SIan Rogersperf_db_export_calls = False 48bb177a85SIan Rogersperf_db_export_callchains = True 49bb177a85SIan Rogers 50bb177a85SIan Rogersdef sample_table(*args): 51bb177a85SIan Rogers print(f'sample_table({args})') 52bb177a85SIan Rogers 53bb177a85SIan Rogersdef call_path_table(*args): 54bb177a85SIan Rogers print(f'call_path_table({args}') 55bb177a85SIan Rogers_end_of_file_ 562dac1f08SThomas Richter case $(uname -m) 572dac1f08SThomas Richter in s390x) 582dac1f08SThomas Richter cmd_flags="--call-graph dwarf -e cpu-clock";; 592dac1f08SThomas Richter *) 602dac1f08SThomas Richter cmd_flags="-g";; 612dac1f08SThomas Richter esac 622dac1f08SThomas Richter 632dac1f08SThomas Richter perf record $cmd_flags -o "${perfdatafile}" true 64*e293f4b1SIan Rogers # Disable lsan to avoid warnings about python memory leaks. 65*e293f4b1SIan Rogers export ASAN_OPTIONS=detect_leaks=0 66bb177a85SIan Rogers perf script -i "${perfdatafile}" -s "${db_test}" 67*e293f4b1SIan Rogers export ASAN_OPTIONS= 68bb177a85SIan Rogers echo "DB test [Success]" 69bb177a85SIan Rogers} 70bb177a85SIan Rogers 71e0c48bf9SAdrian Huntertest_parallel_perf() 72e0c48bf9SAdrian Hunter{ 73e0c48bf9SAdrian Hunter echo "parallel-perf test" 74e0c48bf9SAdrian Hunter if ! python3 --version >/dev/null 2>&1 ; then 75e0c48bf9SAdrian Hunter echo "SKIP: no python3" 76e0c48bf9SAdrian Hunter err=2 77e0c48bf9SAdrian Hunter return 78e0c48bf9SAdrian Hunter fi 79e0c48bf9SAdrian Hunter pp=$(dirname "$0")/../../scripts/python/parallel-perf.py 80e0c48bf9SAdrian Hunter if [ ! -f "${pp}" ] ; then 81e0c48bf9SAdrian Hunter echo "SKIP: parallel-perf.py script not found " 82e0c48bf9SAdrian Hunter err=2 83e0c48bf9SAdrian Hunter return 84e0c48bf9SAdrian Hunter fi 85e0c48bf9SAdrian Hunter perf_data="${temp_dir}/pp-perf.data" 86e0c48bf9SAdrian Hunter output1_dir="${temp_dir}/output1" 87e0c48bf9SAdrian Hunter output2_dir="${temp_dir}/output2" 88e0c48bf9SAdrian Hunter perf record -o "${perf_data}" --sample-cpu uname 89e0c48bf9SAdrian Hunter python3 "${pp}" -o "${output1_dir}" --jobs 4 --verbose -- perf script -i "${perf_data}" 90e0c48bf9SAdrian Hunter python3 "${pp}" -o "${output2_dir}" --jobs 4 --verbose --per-cpu -- perf script -i "${perf_data}" 91e0c48bf9SAdrian Hunter echo "parallel-perf test [Success]" 92e0c48bf9SAdrian Hunter} 93e0c48bf9SAdrian Hunter 94bb177a85SIan Rogerstest_db 95e0c48bf9SAdrian Huntertest_parallel_perf 96bb177a85SIan Rogers 97bb177a85SIan Rogerscleanup 98bb177a85SIan Rogers 99bb177a85SIan Rogersexit $err 100