linux/tools/perf/util
Jiri Olsa 4dff624ae0 perf symbols: Add dso data caching
Adding dso data caching so we don't need to open/read/close, each time
we want dso data.

The DSO data caching affects following functions:
  dso__data_read_offset
  dso__data_read_addr

Each DSO read tries to find the data (based on offset) inside the cache.
If it's not present it fills the cache from file, and returns the data.
If it is present, data are returned with no file read.

Each data read is cached by reading cache page sized/aligned amount of
DSO data. The cache page size is hardcoded to 4096.  The cache is using
RB tree with file offset as a sort key.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Arun Sharma <asharma@fb.com>
Cc: Benjamin Redelings <benjamin.redelings@nescent.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Frank Ch. Eigler <fche@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
Cc: Ulrich Drepper <drepper@gmail.com>
Link: http://lkml.kernel.org/r/1342959280-5361-17-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2012-07-25 11:33:04 -03:00
..
include perf tools: Adding round_up/round_down macros 2012-06-29 15:25:28 -03:00
scripting-engines tools lib traceevent: Add support for __print_hex() 2012-06-29 13:28:12 -03:00
abspath.c
alias.c
annotate.c perf symbols: Factor DSO symtab types to generic binary types 2012-07-25 11:32:36 -03:00
annotate.h perf annotate: Introduce ->free() method in ins_ops 2012-05-12 13:26:20 -03:00
bitmap.c perf tools: Add bitmap_or function into bitmap object 2012-02-13 23:28:10 -02:00
build-id.c perf buildid-list: Work better with pipe mode 2012-05-22 13:03:54 -03:00
build-id.h
cache.h perf ui: Change fallback policy of setup_browser() 2012-05-02 16:17:37 -03:00
callchain.c perf callchain: Make callchain cursors TLS 2012-05-31 10:47:12 -03:00
callchain.h perf callchain: Make callchain cursors TLS 2012-05-31 10:47:12 -03:00
cgroup.c
cgroup.h
color.c perf tools: Use scnprintf where applicable 2012-03-14 12:36:19 -03:00
color.h
config.c perf config: Allow '_' in config file variable names 2012-05-29 21:59:02 -03:00
cpumap.c
cpumap.h
ctype.c perf tools: ctype.c only wants util.h 2012-02-13 23:17:40 -02:00
debug.c perf ui: Introduce struct perf_error_ops 2012-06-19 13:06:18 -03:00
debug.h perf ui: Introduce struct perf_error_ops 2012-06-19 13:06:18 -03:00
debugfs.c perf tools: Remove unused functions from debugfs object 2012-02-13 23:25:38 -02:00
debugfs.h perf tools: Remove unused functions from debugfs object 2012-02-13 23:25:38 -02:00
dwarf-aux.c
dwarf-aux.h
environment.c
event.c perf tools: Ensure comm string is properly terminated 2012-02-29 18:29:45 -03:00
event.h perf tools: Add code to support PERF_SAMPLE_BRANCH_STACK 2012-03-09 08:26:04 +01:00
evlist.c perf tools: Fix trace events storms due to weight demux 2012-07-25 11:32:06 -03:00
evlist.h perf tools: Stop using a global trace events description list 2012-06-27 13:08:42 -03:00
evsel.c perf evsel: Handle hw breakpoints event names in perf_evsel__name() 2012-06-29 13:28:13 -03:00
evsel.h perf evsel: Make some methods private 2012-06-19 13:06:22 -03:00
exec_cmd.c
exec_cmd.h
generate-cmdlist.sh
header.c perf tools: Dump exclude_{guest,host}, precise_ip header info too 2012-07-25 11:31:19 -03:00
header.h perf tools: rename HEADER_TRACE_INFO to HEADER_TRACING_DATA 2012-05-22 12:57:46 -03:00
help.c
help.h
hist.c perf hists: Print newline between hists callchains 2012-07-25 11:32:26 -03:00
hist.h perf tools: Add sort by src line/number 2012-06-19 13:06:18 -03:00
hweight.c
levenshtein.c
levenshtein.h
map.c perf kvm: Limit repetitive guestmount message to once per directory 2012-07-25 11:31:03 -03:00
map.h perf kvm: Fix bug resolving guest kernel syms 2012-07-25 11:30:13 -03:00
pager.c perf tools: Fix pager on minimal-install embedded systems 2012-05-30 15:10:39 -03:00
parse-events-test.c perf test: Use ARRAY_SIZE in parse events tests 2012-07-04 11:31:26 -03:00
parse-events.c perf tools: Fix trace events storms due to weight demux 2012-07-25 11:32:06 -03:00
parse-events.h Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core 2012-06-20 13:41:53 +02:00
parse-events.l perf tools: Split out PE_VALUE_SYM parsing token to SW and HW tokens 2012-07-05 11:29:56 -03:00
parse-events.y perf tools: Split out PE_VALUE_SYM parsing token to SW and HW tokens 2012-07-05 11:29:56 -03:00
parse-options.c
parse-options.h
path.c
PERF-VERSION-GEN perf tools: Make --version show kernel version instead of pull req tag 2012-05-31 11:20:59 -03:00
pmu.c perf tools: Fix generation of pmu list 2012-06-29 13:31:27 -03:00
pmu.h perf/tool: Add PMU event alias support 2012-06-18 12:13:26 +02:00
pmu.l perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
pmu.y perf tools: Add perf pmu object to access pmu format definition 2012-03-16 14:29:35 -03:00
probe-event.c perf uprobes: Remove unnecessary check before strlist__delete 2012-05-31 12:08:49 -03:00
probe-event.h perf probe: Provide perf interface for uprobes 2012-05-11 13:58:17 -03:00
probe-finder.c perf probe: Finder fails to resolve function name to address 2012-03-28 11:56:49 -03:00
probe-finder.h
pstack.c
pstack.h
python-ext-sources perf tools: Allow multiple threads or processes in record, stat, top 2012-02-13 22:54:11 -02:00
python.c
quote.c
quote.h
run-command.c
run-command.h
session.c perf kvm: Fix bug resolving guest kernel syms 2012-07-25 11:30:13 -03:00
session.h perf tools: Stop using a global trace events description list 2012-06-27 13:08:42 -03:00
setup.py
sigchain.c
sigchain.h
sort.c perf tools: Add sort by src line/number 2012-06-19 13:06:18 -03:00
sort.h perf tools: Add sort by src line/number 2012-06-19 13:06:18 -03:00
strbuf.c perf tools: Use scnprintf where applicable 2012-03-14 12:36:19 -03:00
strbuf.h
strfilter.c
strfilter.h
string.c perf lib: Introduce rtrim 2012-06-19 13:06:19 -03:00
strlist.c
strlist.h
svghelper.c
svghelper.h
symbol.c perf symbols: Add dso data caching 2012-07-25 11:33:04 -03:00
symbol.h perf symbols: Add dso data caching 2012-07-25 11:33:04 -03:00
sysfs.c perf tools: Add sysfs mountpoint interface 2012-02-13 23:27:15 -02:00
sysfs.h perf tools: Add sysfs mountpoint interface 2012-02-13 23:27:15 -02:00
target.c perf tools: Introduce perf_target__strerror() 2012-05-07 17:30:21 -03:00
target.h perf target: Add uses_mmap field 2012-05-17 12:32:54 -03:00
thread_map.c perf tools: fix thread_map__new_by_pid_str() memory leak in error path 2012-05-25 11:40:59 -03:00
thread_map.h perf tools: Fix thread map that is type pid_t 2012-04-11 17:38:50 -03:00
thread.c
thread.h
tool.h
top.c perf tools: Move all users of event_name to perf_evsel__name 2012-06-19 13:06:20 -03:00
top.h perf top: Convert to struct perf_target 2012-05-02 15:20:30 -03:00
trace-event-info.c perf: Have perf use the new libtraceevent.a library 2012-04-25 13:28:48 +02:00
trace-event-parse.c Merge branch 'linus' into perf/core 2012-07-18 11:17:17 +02:00
trace-event-read.c perf tools: Stop using a global trace events description list 2012-06-27 13:08:42 -03:00
trace-event-scripting.c perf tools: Stop using a global trace events description list 2012-06-27 13:08:42 -03:00
trace-event.h perf tools: Stop using a global trace events description list 2012-06-27 13:08:42 -03:00
types.h perf tools: Add union u64_swap type for swapping u64 data 2012-05-22 12:50:25 -03:00
usage.c perf target: Introduce perf_target__parse_uid() 2012-05-07 16:46:48 -03:00
util.c perf annotate browser: Align jump labels 2012-04-19 13:15:24 -03:00
util.h perf lib: Introduce rtrim 2012-06-19 13:06:19 -03:00
values.c
values.h
wrapper.c
xyarray.c
xyarray.h