tools/perf/tests/shell/stat.sh
Source file repositories/reference/linux-study-clean/tools/perf/tests/shell/stat.sh
File Facts
- System
- Linux kernel
- Corpus path
tools/perf/tests/shell/stat.sh- Extension
.sh- Size
- 13713 bytes
- Lines
- 504
- Domain
- Support Tooling And Documentation
- Bucket
- tools
- Inferred role
- Support Tooling And Documentation: tools
- Status
- atlas-only
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
Dependency Surface
- No C-style include directives detected by the generator.
Detected Declarations
function test_default_stat
Annotated Snippet
do_topdown_group_test() {
events=$1
failure=$2
if perf stat -e "$events" true 2>&1 | grep -E -q "<not supported>"
then
echo "Topdown event group test [Failed $failure for '$events']"
td_err=1
return
fi
}
do_topdown_group_test "{slots,topdown-retiring}" "events not supported"
do_topdown_group_test "{instructions,r400,r8000}" "raw format slots not reordered first"
filler_events=("instructions" "cycles"
"context-switches" "faults")
for ((i = 0; i < ${#filler_events[@]}; i+=2))
do
filler1=${filler_events[i]}
filler2=${filler_events[i+1]}
do_topdown_group_test "$filler1,topdown-retiring,slots" \
"slots not reordered first in no-group case"
do_topdown_group_test "slots,$filler1,topdown-retiring" \
"topdown metrics event not reordered in no-group case"
do_topdown_group_test "{$filler1,topdown-retiring,slots}" \
"slots not reordered first in single group case"
do_topdown_group_test "{$filler1,slots},topdown-retiring" \
"topdown metrics event not move into slots group"
do_topdown_group_test "topdown-retiring,{$filler1,slots}" \
"topdown metrics event not move into slots group last"
do_topdown_group_test "{$filler1,slots},{topdown-retiring}" \
"topdown metrics group not merge into slots group"
do_topdown_group_test "{topdown-retiring},{$filler1,slots}" \
"topdown metrics group not merge into slots group last"
do_topdown_group_test "{$filler1,slots},$filler2,topdown-retiring" \
"non-adjacent topdown metrics group not move into slots group"
do_topdown_group_test "$filler2,topdown-retiring,{$filler1,slots}" \
"non-adjacent topdown metrics group not move into slots group last"
do_topdown_group_test "{$filler1,slots},{$filler2,topdown-retiring}" \
"metrics group not merge into slots group"
do_topdown_group_test "{$filler1,topdown-retiring},{$filler2,slots}" \
"metrics group not merge into slots group last"
done
if test "$td_err" -eq 0
then
echo "Topdown event group test [Success]"
else
err="$td_err"
fi
}
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]"
}
Annotation
- Detected declarations: `function test_default_stat`.
- Atlas domain: Support Tooling And Documentation / tools.
- Implementation status: atlas-only.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.