linux/tools/perf/tests/shell
Aaron Tomlin bf10e6ee2a perf sched latency: Add histogram and time interval options
While 'perf sched latency' reports task runtime and delay statistics
(average and maximum delay), it does not provide a visual representation
of how task wait times are distributed across latency ranges between
snapshots (start and finish of the analysis window).

The --histogram option collects CPU wait latencies (time between when
a task becomes runnable and when it gets scheduled onto a CPU) into 22
latency buckets, displaying an ASCII bar chart distribution.

The --hist-mode option configures the bucketing scheme:
  - log (default). Logarithmic latency buckets ranging from
    sub-microsecond (< 1 us) up to >= 1.05 seconds

  - linear. Equal-width linear latency buckets
    (i.e., 100 us steps up to >= 2.1 ms)

The --time option allows filtering trace event processing to a
specific time interval [start,stop].

Example histogram output excerpt:

    ❯ sudo perf sched latency --histogram --CPU 0

     CPU Wait Latency Distribution Histogram (between snapshots) (total samples: 36114)
     -------------------------------------------------------------------
      Latency Range    |      Count |    Pct | Histogram Graph
     -------------------------------------------------------------------
      < 1 us           |         17 |   0.0% | #
      2 - 4 us         |        673 |   1.9% | #
      4 - 8 us         |       6237 |  17.3% | ######
      8 - 16 us        |       3224 |   8.9% | ###
      16 - 32 us       |       1388 |   3.8% | #
      32 - 64 us       |        709 |   2.0% | #
      64 - 128 us      |        690 |   1.9% | #
      128 - 256 us     |        789 |   2.2% | #
      256 - 512 us     |        541 |   1.5% | #
      512 - 1024 us    |       2256 |   6.2% | ##
      1 - 2 ms         |       3577 |   9.9% | ###
      2 - 4 ms         |      13259 |  36.7% | ##############
      4 - 8 ms         |       2523 |   7.0% | ##
      8 - 16 ms        |        222 |   0.6% | #
      16 - 32 ms       |         10 |   0.0% | #
      >= 1.05 s        |          3 |   0.0% | #
     -------------------------------------------------------------------

Reviewed-by: Ian Rogers <irogers@google.com>
Signed-off-by: Aaron Tomlin <atomlin@atomlin.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2026-08-07 10:56:23 -07:00
..
attr perf test attr: Add missing int_mist.uop_dropping event to test-stat files 2025-09-19 12:41:50 -03:00
base_probe perf test perftool_testsuite: Use absolute paths 2025-10-01 09:44:05 -03:00
base_report perf test perftool_testsuite: Use absolute paths 2025-10-01 09:44:05 -03:00
common perf test perftool_testsuite: Use absolute paths 2025-10-01 09:44:05 -03:00
coresight perf test: Add Arm CoreSight callchain test 2026-07-03 16:52:00 -07:00
lib perf tests: Fix flakiness in trace record and replay test 2026-06-30 17:09:13 -07:00
addr2line_inlines.sh perf test addr2line_inlines: Ensure inline information shows on LBR leaves 2026-02-06 18:11:31 -03:00
amd-ibs-swfilt.sh perf test ibs: Skip privilege test on Zen6 and newer platforms 2026-05-22 21:31:16 -03:00
annotate.sh perf test annotate: Use --percent-limit rather than head to reduce output 2025-06-30 09:12:55 -07:00
attr.sh perf test: Move attr files into shell directory where they are used 2024-10-17 13:17:36 -07:00
buildid.sh perf tests buildid: Add purge and remove testing 2025-12-03 11:07:46 -08:00
c2c.sh perf tests c2c: Add a basic c2c 2025-12-03 11:07:46 -08:00
daemon.sh perf test shell daemon: Make signal test less racy 2024-01-26 10:51:49 -03:00
data_file_offset_diagnostics.sh perf test: Add file offset diagnostic test for corrupted perf.data 2026-06-03 16:31:04 -03:00
data_type_profiling.sh perf test: Skip perf data type profiling tests for s390 2026-04-02 12:51:10 -07:00
data_validation.sh perf test: Add truncated perf.data robustness test 2026-05-29 11:44:35 -03:00
diff.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
drm_pmu.sh perf tests: Add a DRM PMU test 2025-06-25 11:12:35 -07:00
evlist.sh perf test: Fix test perf evlist for z/VM s390x 2026-01-26 18:21:20 -03:00
ftrace.sh perf test: Fix nanosleep check in the ftrace test 2026-05-11 14:15:49 -03:00
header.sh perf header: Fix pipe mode header dumping 2025-07-03 11:22:17 -07:00
inject_aslr.sh perf test: Skip failing 'perf test aslr' test case 2026-06-30 10:24:22 -07:00
inject-callchain.sh perf test: Add DWARF callchain conversion test 2026-01-20 17:18:24 -03:00
jitdump-python.sh perf tests: Fix Python JIT dump profiling test failure 2026-06-30 17:09:13 -07:00
kallsyms.sh perf tests kallsyms: Add basic kallsyms test 2025-12-03 11:07:47 -08:00
kvm.sh perf test: Extend perf kvm tests to check default event 2026-07-03 13:40:24 -07:00
kwork.sh perf tests kwork: Add basic kwork coverage tests 2026-04-02 19:44:45 -07:00
list.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
lock_contention.sh perf tests: Restore -p flag to lock contention test 2026-07-09 17:44:22 -07:00
perf_sched_stats.sh perf test: Skip sched stats test for !root 2026-04-05 23:27:51 -07:00
perf-report-hierarchy.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
perftool-testsuite_probe.sh perf test: Skip perf probe tests when running as non-root 2025-03-05 09:17:01 -08:00
perftool-testsuite_report.sh perf test: Tag parallel failing shell tests with "(exclusive)" 2024-10-28 09:32:58 -07:00
pipe_test.sh perf tests: Add robust record retry helper and use subsecond workloads 2026-06-30 17:09:13 -07:00
probe_vfs_getname.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
python-use.sh perf test: Add an 'import perf' test shell script 2025-10-01 16:59:06 -03:00
record_bpf_filter.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
record_lbr.sh perf tests: Add robust record retry helper and use subsecond workloads 2026-06-30 17:09:13 -07:00
record_offcpu.sh perf tests: Speed up off-cpu profiling tests 2026-06-30 17:09:14 -07:00
record_sideband.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
record_weak_term.sh perf test: Add test that command line period overrides sysfs/json values 2025-11-09 23:07:57 -08:00
record.sh perf tests: Add auto counter reload (ACR) sampling test 2026-07-04 09:39:04 -07:00
record+probe_libc_inet_pton.sh perf test: Fix inet_pton probe failure and unroll call graph 2026-04-13 23:28:14 -07:00
record+script_probe_vfs_getname.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
record+zstd_comp_decomp_multi_record.sh perf record: Fix multiple PERF_RECORD_COMPRESSED2 records per push 2026-07-13 13:25:17 -07:00
record+zstd_comp_decomp.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
sched.sh perf sched latency: Add histogram and time interval options 2026-08-07 10:56:23 -07:00
script_dlfilter.sh perf test: Use shelldir to refer perf source location 2026-01-13 17:21:39 -03:00
script_perl.sh perf test script: Add perl script testing support 2026-02-12 17:45:23 -03:00
script_python.sh perf test script: Add python script testing support 2026-02-12 17:45:23 -03:00
script.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
stat_all_metricgroups.sh perf test: Do not skip when some metric-group tests succeed 2026-01-13 17:21:56 -03:00
stat_all_metrics.sh perf tests: Speed up metrics checking shell tests 2026-06-30 17:09:14 -07:00
stat_all_pfm.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
stat_all_pmu.sh perf test stat_all_pmu.sh: Correctly check 'perf stat' result 2025-03-14 10:41:34 -07:00
stat_bpf_counters_cgrp.sh perf test: Update test for --for-each-cgroup option 2026-07-16 10:35:23 -07:00
stat_bpf_counters.sh perf tests: Fix flakiness in BPF counters test on hybrid systems 2026-06-30 17:09:14 -07:00
stat_metrics_cgrp.sh perf test: Add stat metrics --for-each-cgroup test 2026-05-25 16:47:14 -03:00
stat_metrics_values.sh perf tests: Speed up metrics checking shell tests 2026-06-30 17:09:14 -07:00
stat.sh perf stat: Add --hide-zero-events option to suppress zero-count events 2026-07-19 21:49:30 -07:00
stat+csv_output.sh perf test stat csv: Update test expectations and events 2025-11-11 16:48:36 -08:00
stat+csv_summary.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
stat+event_uniquifying.sh perf test: Avoid uncore_imc/clockticks in uniquification test 2025-09-19 16:50:21 -03:00
stat+json_output.sh perf test stat+json: Improve metric-only testing 2025-11-11 16:48:35 -08:00
stat+shadow_stat.sh perf test stat: Update shadow test to use metrics 2025-11-11 16:48:35 -08:00
stat+std_output.sh perf test stat: Update std_output testing metric expectations 2025-11-11 16:48:35 -08:00
test_arm_callgraph_fp.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
test_arm_spe_fork.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
test_arm_spe.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
test_bpf_metadata.sh perf test: Checking BPF metadata collection fails on version string 2025-09-04 16:37:19 -07:00
test_brstack.sh perf tests: Fix flakiness in branch stack sampling tests 2026-06-30 17:09:14 -07:00
test_data_symbol.sh perf mem/c2c amd: Add ldlat support 2025-04-29 22:30:46 -03:00
test_dwarf_unwind_multithreaded.sh perf unwind-libdw: Fix unwinding of multi-threaded processes 2026-07-31 15:31:20 -07:00
test_event_open_fallback.sh perf test: Fix hybrid testing of event fallback test 2025-12-02 16:02:47 -08:00
test_intel_pt.sh perf test: Remove /usr/bin/cc dependency from Intel PT shell test 2026-06-04 11:41:46 -03:00
test_java_symbol.sh perf test java symbol: Additional libperf-jvmti.so path check 2026-01-06 19:06:00 -03:00
test_perf_data_converter_ctf.sh perf data ctf: replace libbabeltrace with babeltrace2-ctf-writer 2026-06-04 17:34:52 -03:00
test_perf_data_converter_json.sh perf test: Test pipe mode with data conversion --to-json 2026-02-12 17:45:22 -03:00
test_stat_intel_tpebs.sh perf test: Extra verbosity and hypervisor skip for tpebs test 2025-02-03 19:45:50 -08:00
test_task_analyzer.sh perf tests: Write test files to tmpdir 2026-04-01 14:50:53 -07:00
test_test_junit_output.sh perf test: Add shell test to validate JUnit XML reporting output 2026-06-04 11:41:33 -03:00
test_uprobe_from_different_cu.sh perf test: Skip perf probe tests when running as non-root 2025-03-05 09:17:01 -08:00
timechart.sh perf test: Update perf timechart test 2026-06-30 17:04:51 -07:00
top.sh perf tests top: Make the test exclusive 2025-12-23 10:13:50 -08:00
trace_btf_enum.sh perf test trace_btf_enum: Skip if permissions are insufficient 2025-09-03 12:34:54 -03:00
trace_btf_general.sh perf test: Make perf trace BTF general tests exclusive 2026-04-08 21:42:25 -07:00
trace_exit_race.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00
trace_record_replay.sh perf tests: Fix flakiness in trace record and replay test 2026-06-30 17:09:13 -07:00
trace_summary.sh perf test: Fix "trace summary" test for musl-based systems 2026-05-11 14:16:38 -03:00
trace+probe_vfs_getname.sh perf test: Change all remaining #!/bin/sh to #!/bin/bash 2025-06-26 10:31:05 -07:00