perf test: Fix shadow stat test for non-bash shells
It was using some bash-specific features and failed to parse when running with a different shell like below: root@kbl-ppc:~/kbl-ws/perf-dev/lck-9077/acme.tmp/tools/perf# ./perf test 83 -vv 83: perf stat metrics (shadow stat) test : --- start --- test child forked, pid 3922 ./tests/shell/stat+shadow_stat.sh: 19: ./tests/shell/stat+shadow_stat.sh: [[: not found ./tests/shell/stat+shadow_stat.sh: 24: ./tests/shell/stat+shadow_stat.sh: [[: not found ./tests/shell/stat+shadow_stat.sh: 30: ./tests/shell/stat+shadow_stat.sh: [[: not found (standard_in) 2: syntax error ./tests/shell/stat+shadow_stat.sh: 36: ./tests/shell/stat+shadow_stat.sh: [[: not found ./tests/shell/stat+shadow_stat.sh: 19: ./tests/shell/stat+shadow_stat.sh: [[: not found ./tests/shell/stat+shadow_stat.sh: 24: ./tests/shell/stat+shadow_stat.sh: [[: not found ./tests/shell/stat+shadow_stat.sh: 30: ./tests/shell/stat+shadow_stat.sh: [[: not found (standard_in) 2: syntax error ./tests/shell/stat+shadow_stat.sh: 36: ./tests/shell/stat+shadow_stat.sh: [[: not found ./tests/shell/stat+shadow_stat.sh: 45: ./tests/shell/stat+shadow_stat.sh: declare: not found test child finished with -1 ---- end ---- perf stat metrics (shadow stat) test: FAILED! Reported-by: Jin Yao <yao.jin@linux.intel.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org> Acked-by: Jiri Olsa <jolsa@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: David Laight <david.laight@aculab.com> Cc: Ian Rogers <irogers@google.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lore.kernel.org/lkml/20210114050609.1258820-1-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
addbdff242
commit
a042a82ddb
@ -9,31 +9,29 @@ perf stat -a true > /dev/null 2>&1 || exit 2
|
||||
|
||||
test_global_aggr()
|
||||
{
|
||||
local cyc
|
||||
|
||||
perf stat -a --no-big-num -e cycles,instructions sleep 1 2>&1 | \
|
||||
grep -e cycles -e instructions | \
|
||||
while read num evt hash ipc rest
|
||||
do
|
||||
# skip not counted events
|
||||
if [[ $num == "<not" ]]; then
|
||||
if [ "$num" = "<not" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# save cycles count
|
||||
if [[ $evt == "cycles" ]]; then
|
||||
if [ "$evt" = "cycles" ]; then
|
||||
cyc=$num
|
||||
continue
|
||||
fi
|
||||
|
||||
# skip if no cycles
|
||||
if [[ -z $cyc ]]; then
|
||||
if [ -z "$cyc" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# use printf for rounding and a leading zero
|
||||
local res=`printf "%.2f" $(echo "scale=6; $num / $cyc" | bc -q)`
|
||||
if [[ $ipc != $res ]]; then
|
||||
res=`printf "%.2f" $(echo "scale=6; $num / $cyc" | bc -q)`
|
||||
if [ "$ipc" != "$res" ]; then
|
||||
echo "IPC is different: $res != $ipc ($num / $cyc)"
|
||||
exit 1
|
||||
fi
|
||||
@ -42,32 +40,32 @@ test_global_aggr()
|
||||
|
||||
test_no_aggr()
|
||||
{
|
||||
declare -A results
|
||||
|
||||
perf stat -a -A --no-big-num -e cycles,instructions sleep 1 2>&1 | \
|
||||
grep ^CPU | \
|
||||
while read cpu num evt hash ipc rest
|
||||
do
|
||||
# skip not counted events
|
||||
if [[ $num == "<not" ]]; then
|
||||
if [ "$num" = "<not" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# save cycles count
|
||||
if [[ $evt == "cycles" ]]; then
|
||||
results[$cpu]=$num
|
||||
if [ "$evt" = "cycles" ]; then
|
||||
results="$results $cpu:$num"
|
||||
continue
|
||||
fi
|
||||
|
||||
cyc=${results##* $cpu:}
|
||||
cyc=${cyc%% *}
|
||||
|
||||
# skip if no cycles
|
||||
local cyc=${results[$cpu]}
|
||||
if [[ -z $cyc ]]; then
|
||||
if [ -z "$cyc" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# use printf for rounding and a leading zero
|
||||
local res=`printf "%.2f" $(echo "scale=6; $num / $cyc" | bc -q)`
|
||||
if [[ $ipc != $res ]]; then
|
||||
res=`printf "%.2f" $(echo "scale=6; $num / $cyc" | bc -q)`
|
||||
if [ "$ipc" != "$res" ]; then
|
||||
echo "IPC is different for $cpu: $res != $ipc ($num / $cyc)"
|
||||
exit 1
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user