linux/tools/perf/util
Frederic Weisbecker c0a8865e32 perf tools: callchain: Fix bad rounding of minimum rate
Sometimes we get callchain branches that have a rate under the
limit given by the user.

Say you launched:

 perf record -f -g -a ./hackbench 10
 perf report -g fractal,10.0

And you got:

2.33%       hackbench  [kernel]                  [k] _spin_lock_irqsave
                |
                |--78.57%-- remove_wait_queue
                |          poll_freewait
                |          do_sys_poll
                |          sys_poll
                |          sysenter_dispatch
                |          0xf7ffa430
                |          0x1ffadea3c
                |
                |--7.14%-- __up_read
                |          up_read
                |          do_page_fault
                |          page_fault
                |          0xf7ffa430
                |          0xa0df710000000a
                ...

It is abnormal to get a 7.14% branch whereas we passed a 10%
filter.

The problem is that we round down the minimum threshold. This
happens mostly when we have very low number of events. If the
total amount of your branch is 4 and you have a subranch of 3
events, filtering to 90% will be computed like follows:

  limit = 4 * 0.9;

The result is about 3.6, but the cast to integer will round
down to 3. It means that our filter is actually of 75%

We must then explicitly round up the minimum threshold.

Reported-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: acme@redhat.com
Cc: peterz@infradead.org
Cc: efault@gmx.de
LKML-Reference: <20090809024235.GA10146@nowhere>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-08-09 13:07:46 +02:00
..
include perf report: Adjust column width to the values sampled 2009-07-11 10:24:11 +02:00
abspath.c perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
alias.c perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
cache.h perf_counter: Detect debugfs location 2009-07-22 18:05:57 +02:00
callchain.c perf tools: callchain: Fix bad rounding of minimum rate 2009-08-09 13:07:46 +02:00
callchain.h perf tools: callchain: Fix 'perf report' display to be callchain by default 2009-08-09 12:54:42 +02:00
color.c perf_counter tools: Provide helper to print percents color 2009-07-02 21:38:37 +02:00
color.h perf_counter tools: Provide helper to print percents color 2009-07-02 21:38:37 +02:00
config.c perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
ctype.c perf_counter tools: Add and use isprint() 2009-06-18 09:46:00 +02:00
environment.c perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
exec_cmd.c perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
exec_cmd.h perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
generate-cmdlist.sh perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
header.c perf util: Fix do_read() to fail on EOF instead of busy-looping 2009-08-09 12:54:39 +02:00
header.h perf: avoid structure size confusion by using a fixed size 2009-07-22 18:05:57 +02:00
help.c perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
help.h perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
levenshtein.c perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
levenshtein.h perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
module.c perf_counter tools: Add infrastructure to support loading of kernel module symbols 2009-07-02 08:42:20 +02:00
module.h perf_counter tools: Add infrastructure to support loading of kernel module symbols 2009-07-02 08:42:20 +02:00
pager.c perf_counter tools: Remove dead code 2009-06-27 06:06:39 +02:00
parse-events.c perf list: Fix the output to not include tracepoints without an id 2009-08-09 12:54:38 +02:00
parse-events.h perf report: Fix per task mult-counter stat reporting 2009-08-09 12:54:35 +02:00
parse-options.c perf_counter tools: Add new OPT_CALLBACK_DEFAULT option 2009-07-02 20:47:14 +02:00
parse-options.h perf_counter tools: Add new OPT_CALLBACK_DEFAULT option 2009-07-02 20:47:14 +02:00
path.c perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
PERF-VERSION-GEN perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
quote.c perf: Fix read buffer overflow 2009-08-04 11:09:56 +02:00
quote.h perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
run-command.c perf_counter tools: Remove dead code 2009-06-27 06:06:39 +02:00
run-command.h perf_counter tools: Remove dead code 2009-06-27 06:06:39 +02:00
sigchain.c perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
sigchain.h perf_counter tools: Move from Documentation/perf_counter/ to tools/perf/ 2009-06-06 20:33:43 +02:00
strbuf.c perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
strbuf.h perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00
string.c perf_counter tools: Define and use our own u64, s64 etc. definitions 2009-06-19 18:25:47 +02:00
string.h perf_counter: Detect debugfs location 2009-07-22 18:05:57 +02:00
strlist.c strlist: Introduce strlist__entry and strlist__nr_entries methods 2009-07-11 19:20:25 +02:00
strlist.h strlist: Introduce strlist__entry and strlist__nr_entries methods 2009-07-11 19:20:25 +02:00
symbol.c perf report: Add debug help for the finding of symbol bugs - show the symtab origin (DSO, build-id, kernel, etc) 2009-08-09 12:54:36 +02:00
symbol.h perf report: Add debug help for the finding of symbol bugs - show the symtab origin (DSO, build-id, kernel, etc) 2009-08-09 12:54:36 +02:00
types.h perf_counter tools: Rework the file format 2009-06-25 21:39:04 +02:00
usage.c perf top: Fall back to cpu-clock-tick hrtimer sampling if no cycle counter available 2009-06-07 17:31:52 +02:00
util.h perf_counter: Add tracepoint support to perf list, perf stat 2009-07-22 18:05:57 +02:00
wrapper.c perf_counter tools: Add more warnings and fix/annotate them 2009-07-01 12:49:48 +02:00