Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf sched replay: Use replay_repeat to calculate the runavg of cpu usage instead of the default value 10

Since sched->replay_repeat is set to 10 as default, the sched->run_avg,
sched->runavg_cpu_usage, and sched->runavg_parent_cpu_usage all use
10 to calculate their value.

However, the replay_repeat can be changed to other value by using -r
option, so the calculation above should use replay_repeat to achieve
more accurate results instead of the default value 10.

Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1427809596-29559-10-git-send-email-yunlong.song@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Yunlong Song and committed by
Arnaldo Carvalho de Melo
ff5f3bbd f0dd330f

+4 -4
+4 -4
tools/perf/builtin-sched.c
··· 607 607 cpu_usage_1 = get_cpu_usage_nsec_parent(); 608 608 if (!sched->runavg_cpu_usage) 609 609 sched->runavg_cpu_usage = sched->cpu_usage; 610 - sched->runavg_cpu_usage = (sched->runavg_cpu_usage * 9 + sched->cpu_usage) / 10; 610 + sched->runavg_cpu_usage = (sched->runavg_cpu_usage * (sched->replay_repeat - 1) + sched->cpu_usage) / sched->replay_repeat; 611 611 612 612 sched->parent_cpu_usage = cpu_usage_1 - cpu_usage_0; 613 613 if (!sched->runavg_parent_cpu_usage) 614 614 sched->runavg_parent_cpu_usage = sched->parent_cpu_usage; 615 - sched->runavg_parent_cpu_usage = (sched->runavg_parent_cpu_usage * 9 + 616 - sched->parent_cpu_usage)/10; 615 + sched->runavg_parent_cpu_usage = (sched->runavg_parent_cpu_usage * (sched->replay_repeat - 1) + 616 + sched->parent_cpu_usage)/sched->replay_repeat; 617 617 618 618 ret = pthread_mutex_lock(&sched->start_work_mutex); 619 619 BUG_ON(ret); ··· 645 645 sched->sum_fluct += fluct; 646 646 if (!sched->run_avg) 647 647 sched->run_avg = delta; 648 - sched->run_avg = (sched->run_avg * 9 + delta) / 10; 648 + sched->run_avg = (sched->run_avg * (sched->replay_repeat - 1) + delta) / sched->replay_repeat; 649 649 650 650 printf("#%-3ld: %0.3f, ", sched->nr_runs, (double)delta / 1000000.0); 651 651