linux_dsm_epyc7002/tools/perf/util
Frederic Weisbecker 612d4fd7d0 perf: Support for callchains merge
If we sort the histograms by comm, which is the default,
we need to merge some of them, typically different thread
histograms of a same process, or just same comm. But during
this merge, we forgot to merge callchains.

So imagine we have three threads (tids: 1000, 1001, 1002) that
belong to comm "foo".

tid 1000 got 100 events
tid 1001 got 10 events
tid 1002 got 3 events

Once we merge these histograms to get a per comm result, we'll
finally get:

"foo" got 113 events

The problem is if we merge 1000 and 1001 histograms into 1002, then
the end merge result, wrt callchains, will be only callchains that
belong to 1002.
This is because we haven't handled callchains in the merge. Only those
from one of the threads inside a common comm survive.

It means during this merge, we can lose a lot of callchains.

Fix this by implementing callchains merge and apply it on histograms
that collapse.

Reported-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
2010-08-22 21:10:35 +02:00
..
include perf: Add back list_head data types 2010-08-12 21:50:00 +02:00
scripting-engines perf scripts python: Give field dict to unhandled callback 2010-06-01 06:12:35 -03:00
ui perf ui browser: Add routines to compactly specify exit keys 2010-08-19 19:44:18 -03:00
abspath.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
alias.c
bitmap.c perf tools: Don't use code surrounded by __KERNEL__ 2010-05-02 12:00:44 -03:00
build-id.c perf tools: Release thread resources on PERF_RECORD_EXIT 2010-07-30 18:28:42 -03:00
build-id.h perf annotate: Use build-ids to find the right DSO 2010-05-20 12:15:33 -03:00
cache.h perf tools: add test for strlcpy() 2010-08-21 11:22:47 -03:00
callchain.c perf: Support for callchains merge 2010-08-22 21:10:35 +02:00
callchain.h perf: Support for callchains merge 2010-08-22 21:10:35 +02:00
color.c perf hist: Replace ->print() routines by ->snprintf() equivalents 2010-04-02 16:28:15 -03:00
color.h perf hist: Replace ->print() routines by ->snprintf() equivalents 2010-04-02 16:28:15 -03:00
config.c perf buildid: add perfconfig option to specify buildid cache dir 2010-06-05 09:34:04 -03:00
cpumap.c perf tools: Add the ability to specify list of cpus to monitor 2010-06-05 09:33:01 -03:00
cpumap.h perf tools: Add the ability to specify list of cpus to monitor 2010-06-05 09:33:01 -03:00
ctype.c
debug.c perf ui: Complete the breakdown of util/newt.c 2010-08-10 16:11:38 -03:00
debug.h perf ui: Complete the breakdown of util/newt.c 2010-08-10 16:11:38 -03:00
debugfs.c
debugfs.h
environment.c
event.c perf: expose event__process function 2010-08-04 12:41:23 -03:00
event.h perf: expose event__process function 2010-08-04 12:41:23 -03:00
exec_cmd.c perf tools: remove xstrndup, xmalloc, xzalloc 2010-05-18 23:05:28 -03:00
exec_cmd.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
generate-cmdlist.sh
header.c perf record: Add option to avoid updating buildid cache 2010-06-17 10:20:44 -03:00
header.h perf/live: don't synthesize build ids at the end of a live mode trace 2010-05-02 12:04:05 -03:00
help.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
help.h
hist.c perf: Support for callchains merge 2010-08-22 21:10:35 +02:00
hist.h perf annotate: Sort by hottest lines in the TUI 2010-08-10 16:11:42 -03:00
hweight.c perf tools: Don't use code surrounded by __KERNEL__ 2010-05-02 12:00:44 -03:00
levenshtein.c
levenshtein.h
map.c perf tools: Don't keep unreferenced maps when unmaps are detected 2010-08-02 19:45:23 -03:00
map.h perf tools: Don't keep unreferenced maps when unmaps are detected 2010-08-02 19:45:23 -03:00
pager.c
parse-events.c perf: Don't use 4 bytes as a default instruction breakpoint length 2010-06-24 23:35:49 +02:00
parse-events.h perf: record TRACE_INFO only if using tracepoints and SAMPLE_RAW 2010-05-03 10:31:48 -03:00
parse-options.c perf options: Type check all the remaining OPT_ variants 2010-05-17 16:22:41 -03:00
parse-options.h perf options: Type check all the remaining OPT_ variants 2010-05-17 16:22:41 -03:00
path.c perf tools: add test for strlcpy() 2010-08-21 11:22:47 -03:00
PERF-VERSION-GEN perf: Version String fix, for fallback if not from git 2010-07-05 10:42:58 +02:00
probe-event.c perf probe: Fix memory leaks in add_perf_probe_events 2010-08-06 16:25:56 -03:00
probe-event.h perf probe: Rename common fields/functions from kprobe to probe. 2010-07-30 12:01:38 -03:00
probe-finder.c perf probe: Fix to copy the type for raw parameters 2010-08-06 16:25:56 -03:00
probe-finder.h perf probe: Rename common fields/functions from kprobe to probe. 2010-07-30 12:01:38 -03:00
pstack.c perf newt: Make <- zoom out filters 2010-05-14 20:05:21 -03:00
pstack.h perf ui: Move hists browser to util/ui/browsers/ 2010-08-10 16:11:08 -03:00
quote.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
quote.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
run-command.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
run-command.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
session.c perf session: Invalidate last_match when removing threads from rb_tree 2010-08-02 19:01:09 -03:00
session.h perf session: Remove threads from tree on PERF_RECORD_EXIT 2010-06-17 08:37:44 -03:00
sigchain.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
sigchain.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
sort.c perf hists: Fixup addr snprintf width on 32 bit arches 2010-08-05 19:38:01 -03:00
sort.h perf: Keep track of the max depth of a callchain 2010-08-22 20:43:17 +02:00
strbuf.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
strbuf.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
string.c perf: Swap inclusion order of util.h and string.h in util/string.c 2010-04-04 16:40:42 +02:00
strlist.c
strlist.h
svghelper.c
svghelper.h
symbol.c perf symbols: Ignore mapping symbols on ARM 2010-08-10 16:10:36 -03:00
symbol.h perf symbols: Store the symbol binding 2010-08-05 19:38:01 -03:00
thread.c perf tools: Release thread resources on PERF_RECORD_EXIT 2010-07-30 18:28:42 -03:00
thread.h perf tools: Release thread resources on PERF_RECORD_EXIT 2010-07-30 18:28:42 -03:00
trace-event-info.c perf/record: simplify TRACE_INFO tracepoint check 2010-05-05 11:12:53 -03:00
trace-event-parse.c Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-05-18 08:19:03 -07:00
trace-event-read.c perf: Use read() instead of lseek() in trace_event_read.c:skip() 2010-05-20 08:37:17 +02:00
trace-event-scripting.c
trace-event.h perf: Fix unaligned accesses while fetching trace values 2010-05-20 11:21:57 +02:00
types.h
usage.c
util.c perf report: Report number of events, not samples 2010-05-14 14:19:35 -03:00
util.h perf ui browser: Return the exit key in all browsers 2010-08-19 19:39:52 -03:00
values.c
values.h
wrapper.c perf tools: remove xstrndup, xmalloc, xzalloc 2010-05-18 23:05:28 -03:00