aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2014-03-19 03:05:47 -0400
committerIngo Molnar <mingo@kernel.org>2014-03-19 03:05:47 -0400
commit538592ff0b008237ae88f5ce5fb1247127dc3ce5 (patch)
treee6d688f188c1ec0dde44af613f6ff69e8578051f
parent0afd2d51029961281572d02545c7bde1b3f4292c (diff)
parenta51e87cb5a0fbebee15a3373d951dbf6f59a76c2 (diff)
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
Pull perf/core improvements and fixes from Arnaldo: User visible: * Fixup header alignment in 'perf sched latency' output (Ramkumar Ramachandra) * Fix off-by-one error in 'perf timechart record' argv handling (Ramkumar Ramachandra) * Print the evsel name in the annotate stdio output, prep to fix support outputting annotation for multiple events, not just for the first one (Arnaldo Carvalho de Melo) Internals: * Use tid in mmap/mmap2 events to find maps (Don Zickus) * Record the reason for filtering an address_location (Namhyung Kim) * Apply all filters to an addr_location (Namhyung Kim) * Merge al->filtered with hist_entry->filtered in report/hists (Namhyung Kim) * Fix memory leak when synthesizing thread records (Namhyung Kim) * Use ui__has_annotation() in 'report' (Namhyung Kim) Cleanups: * Remove unused thread__find_map function (Jiri Olsa) * Remove unused simple_strtoul() function (Ramkumar Ramachandra) Documentation: * Update function names in debug messages (Ramkumar Ramachandra) * Update some code references in design.txt (Ramkumar Ramachandra) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--tools/perf/builtin-report.c4
-rw-r--r--tools/perf/builtin-sched.c10
-rw-r--r--tools/perf/builtin-timechart.c4
-rw-r--r--tools/perf/design.txt12
-rw-r--r--tools/perf/tests/hists_link.c1
-rw-r--r--tools/perf/util/annotate.c14
-rw-r--r--tools/perf/util/event.c34
-rw-r--r--tools/perf/util/evsel.c4
-rw-r--r--tools/perf/util/hist.c9
-rw-r--r--tools/perf/util/hist.h9
-rw-r--r--tools/perf/util/include/linux/kernel.h6
-rw-r--r--tools/perf/util/machine.c6
-rw-r--r--tools/perf/util/symbol.h2
-rw-r--r--tools/perf/util/thread.h6
14 files changed, 58 insertions, 63 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index c47bf586fcba..c8f21137dfd8 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -231,7 +231,7 @@ static int process_sample_event(struct perf_tool *tool,
231 return -1; 231 return -1;
232 } 232 }
233 233
234 if (al.filtered || (rep->hide_unresolved && al.sym == NULL)) 234 if (rep->hide_unresolved && al.sym == NULL)
235 return 0; 235 return 0;
236 236
237 if (rep->cpu_list && !test_bit(sample->cpu, rep->cpu_bitmap)) 237 if (rep->cpu_list && !test_bit(sample->cpu, rep->cpu_bitmap))
@@ -928,7 +928,7 @@ repeat:
928 * so don't allocate extra space that won't be used in the stdio 928 * so don't allocate extra space that won't be used in the stdio
929 * implementation. 929 * implementation.
930 */ 930 */
931 if (use_browser == 1 && sort__has_sym) { 931 if (ui__has_annotation()) {
932 symbol_conf.priv_size = sizeof(struct annotation); 932 symbol_conf.priv_size = sizeof(struct annotation);
933 machines__set_symbol_filter(&session->machines, 933 machines__set_symbol_filter(&session->machines,
934 symbol__annotate_init); 934 symbol__annotate_init);
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index 6a76a07b6789..9ac0a495c954 100644
--- a/tools/perf/builtin-sched.c
+++ b/tools/perf/builtin-sched.c
@@ -1124,7 +1124,7 @@ static void output_lat_thread(struct perf_sched *sched, struct work_atoms *work_
1124 1124
1125 avg = work_list->total_lat / work_list->nb_atoms; 1125 avg = work_list->total_lat / work_list->nb_atoms;
1126 1126
1127 printf("|%11.3f ms |%9" PRIu64 " | avg:%9.3f ms | max:%9.3f ms | max at: %9.6f s\n", 1127 printf("|%11.3f ms |%9" PRIu64 " | avg:%9.3f ms | max:%9.3f ms | max at: %13.6f s\n",
1128 (double)work_list->total_runtime / 1e6, 1128 (double)work_list->total_runtime / 1e6,
1129 work_list->nb_atoms, (double)avg / 1e6, 1129 work_list->nb_atoms, (double)avg / 1e6,
1130 (double)work_list->max_lat / 1e6, 1130 (double)work_list->max_lat / 1e6,
@@ -1527,9 +1527,9 @@ static int perf_sched__lat(struct perf_sched *sched)
1527 1527
1528 perf_sched__sort_lat(sched); 1528 perf_sched__sort_lat(sched);
1529 1529
1530 printf("\n ---------------------------------------------------------------------------------------------------------------\n"); 1530 printf("\n -----------------------------------------------------------------------------------------------------------------\n");
1531 printf(" Task | Runtime ms | Switches | Average delay ms | Maximum delay ms | Maximum delay at |\n"); 1531 printf(" Task | Runtime ms | Switches | Average delay ms | Maximum delay ms | Maximum delay at |\n");
1532 printf(" ---------------------------------------------------------------------------------------------------------------\n"); 1532 printf(" -----------------------------------------------------------------------------------------------------------------\n");
1533 1533
1534 next = rb_first(&sched->sorted_atom_root); 1534 next = rb_first(&sched->sorted_atom_root);
1535 1535
@@ -1541,7 +1541,7 @@ static int perf_sched__lat(struct perf_sched *sched)
1541 next = rb_next(next); 1541 next = rb_next(next);
1542 } 1542 }
1543 1543
1544 printf(" -----------------------------------------------------------------------------------------\n"); 1544 printf(" -----------------------------------------------------------------------------------------------------------------\n");
1545 printf(" TOTAL: |%11.3f ms |%9" PRIu64 " |\n", 1545 printf(" TOTAL: |%11.3f ms |%9" PRIu64 " |\n",
1546 (double)sched->all_runtime / 1e6, sched->all_count); 1546 (double)sched->all_runtime / 1e6, sched->all_count);
1547 1547
diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c
index 25526d6eae59..74db2568b867 100644
--- a/tools/perf/builtin-timechart.c
+++ b/tools/perf/builtin-timechart.c
@@ -494,7 +494,7 @@ static const char *cat_backtrace(union perf_event *event,
494 continue; 494 continue;
495 } 495 }
496 496
497 tal.filtered = false; 497 tal.filtered = 0;
498 thread__find_addr_location(al.thread, machine, cpumode, 498 thread__find_addr_location(al.thread, machine, cpumode,
499 MAP__FUNCTION, ip, &tal); 499 MAP__FUNCTION, ip, &tal);
500 500
@@ -1238,7 +1238,7 @@ static int timechart__record(struct timechart *tchart, int argc, const char **ar
1238 for (i = 0; i < old_power_args_nr; i++) 1238 for (i = 0; i < old_power_args_nr; i++)
1239 *p++ = strdup(old_power_args[i]); 1239 *p++ = strdup(old_power_args[i]);
1240 1240
1241 for (j = 1; j < (unsigned int)argc; j++) 1241 for (j = 0; j < (unsigned int)argc; j++)
1242 *p++ = argv[j]; 1242 *p++ = argv[j];
1243 1243
1244 return cmd_record(rec_argc, rec_argv, NULL); 1244 return cmd_record(rec_argc, rec_argv, NULL);
diff --git a/tools/perf/design.txt b/tools/perf/design.txt
index 63a0e6f04a01..a28dca2582aa 100644
--- a/tools/perf/design.txt
+++ b/tools/perf/design.txt
@@ -18,7 +18,7 @@ underlying hardware counters.
18Performance counters are accessed via special file descriptors. 18Performance counters are accessed via special file descriptors.
19There's one file descriptor per virtual counter used. 19There's one file descriptor per virtual counter used.
20 20
21The special file descriptor is opened via the perf_event_open() 21The special file descriptor is opened via the sys_perf_event_open()
22system call: 22system call:
23 23
24 int sys_perf_event_open(struct perf_event_attr *hw_event_uptr, 24 int sys_perf_event_open(struct perf_event_attr *hw_event_uptr,
@@ -82,7 +82,7 @@ machine-specific.
82If 'raw_type' is 0, then the 'type' field says what kind of counter 82If 'raw_type' is 0, then the 'type' field says what kind of counter
83this is, with the following encoding: 83this is, with the following encoding:
84 84
85enum perf_event_types { 85enum perf_type_id {
86 PERF_TYPE_HARDWARE = 0, 86 PERF_TYPE_HARDWARE = 0,
87 PERF_TYPE_SOFTWARE = 1, 87 PERF_TYPE_SOFTWARE = 1,
88 PERF_TYPE_TRACEPOINT = 2, 88 PERF_TYPE_TRACEPOINT = 2,
@@ -95,7 +95,7 @@ specified by 'event_id':
95 * Generalized performance counter event types, used by the hw_event.event_id 95 * Generalized performance counter event types, used by the hw_event.event_id
96 * parameter of the sys_perf_event_open() syscall: 96 * parameter of the sys_perf_event_open() syscall:
97 */ 97 */
98enum hw_event_ids { 98enum perf_hw_id {
99 /* 99 /*
100 * Common hardware events, generalized by the kernel: 100 * Common hardware events, generalized by the kernel:
101 */ 101 */
@@ -129,7 +129,7 @@ software events, selected by 'event_id':
129 * physical and sw events of the kernel (and allow the profiling of them as 129 * physical and sw events of the kernel (and allow the profiling of them as
130 * well): 130 * well):
131 */ 131 */
132enum sw_event_ids { 132enum perf_sw_ids {
133 PERF_COUNT_SW_CPU_CLOCK = 0, 133 PERF_COUNT_SW_CPU_CLOCK = 0,
134 PERF_COUNT_SW_TASK_CLOCK = 1, 134 PERF_COUNT_SW_TASK_CLOCK = 1,
135 PERF_COUNT_SW_PAGE_FAULTS = 2, 135 PERF_COUNT_SW_PAGE_FAULTS = 2,
@@ -230,7 +230,7 @@ these events are recorded in the ring-buffer (see below).
230The 'comm' bit allows tracking of process comm data on process creation. 230The 'comm' bit allows tracking of process comm data on process creation.
231This too is recorded in the ring-buffer (see below). 231This too is recorded in the ring-buffer (see below).
232 232
233The 'pid' parameter to the perf_event_open() system call allows the 233The 'pid' parameter to the sys_perf_event_open() system call allows the
234counter to be specific to a task: 234counter to be specific to a task:
235 235
236 pid == 0: if the pid parameter is zero, the counter is attached to the 236 pid == 0: if the pid parameter is zero, the counter is attached to the
@@ -260,7 +260,7 @@ The 'flags' parameter is currently unused and must be zero.
260 260
261The 'group_fd' parameter allows counter "groups" to be set up. A 261The 'group_fd' parameter allows counter "groups" to be set up. A
262counter group has one counter which is the group "leader". The leader 262counter group has one counter which is the group "leader". The leader
263is created first, with group_fd = -1 in the perf_event_open call 263is created first, with group_fd = -1 in the sys_perf_event_open call
264that creates it. The rest of the group members are created 264that creates it. The rest of the group members are created
265subsequently, with group_fd giving the fd of the group leader. 265subsequently, with group_fd giving the fd of the group leader.
266(A single counter on its own is created with group_fd = -1 and is 266(A single counter on its own is created with group_fd = -1 and is
diff --git a/tools/perf/tests/hists_link.c b/tools/perf/tests/hists_link.c
index 2b6519e0e36f..7ccbc7b6ae77 100644
--- a/tools/perf/tests/hists_link.c
+++ b/tools/perf/tests/hists_link.c
@@ -101,6 +101,7 @@ static struct machine *setup_fake_machine(struct machines *machines)
101 .mmap = { 101