mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [GIT PULL 0/9] perf/core improvements and fixes
@ 2012-01-24 23:07 Arnaldo Carvalho de Melo
  2012-01-24 23:07 ` [PATCH 1/9] perf tools: Add fprintf methods for thread_map and cpu_map classes Arnaldo Carvalho de Melo
                   ` (9 more replies)
  0 siblings, 10 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-24 23:07 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern, David Daney,
	Frederic Weisbecker, Jan Beulich, Joerg Roedel, Masami Hiramatsu,
	Mike Galbraith, Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Srikar Dronamraju, Stephane Eranian, arnaldo.melo

Hi Ingo,

	This is a signed tag, please lemme know if everything went well.

	The --uid feature works for root, we still need to sort out that
paranoia with some threads owned by a user that prevents 'perf --uid
non-root-user' to work for 'non-root-user'.

	http://git.kernel.org/?p=linux/kernel/git/acme/linux.git;a=tag;h=ce9600c4c664ce7f97e8aa5e756b0b4ea5b017c7
looks ok to me, need just to improve on the commit log message, I'll get
used to it :-)

- Arnaldo

The following changes since commit 172d1b0b73256551f100fc00c69e356d047103f5:

  perf tools: Fix compile error on x86_64 Ubuntu (2012-01-08 13:34:55 -0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux perf-core-for-mingo

for you to fetch changes up to f8f4b2872295dca88339ec0c403b2217b1197353:

  perf tools: Fix strlen() bug in perf_event__synthesize_event_type() (2012-01-24 20:31:34 -0200)

----------------------------------------------------------------
perf/core improvements and fixes

----------------------------------------------------------------
Arnaldo Carvalho de Melo (2):
      perf tools: Add fprintf methods for thread_map and cpu_map classes
      perf tools: Introduce per user view

David Daney (1):
      perf tools: Fix broken build by defining _GNU_SOURCE in Makefile

Jan Beulich (4):
      perf bench: Make "default" memcpy() selection actually use glibc's implementation
      perf bench: Also allow measuring alternative memcpy implementations
      perf bench: Also allow measuring memset()
      perf bench: Allow passing an iteration count to "bench mem mem{cpy,set}"

Srikar Dronamraju (1):
      perf probe: Usability fixes

Stephane Eranian (1):
      perf tools: Fix strlen() bug in perf_event__synthesize_event_type()

 tools/perf/Documentation/perf-record.txt     |    4 +
 tools/perf/Documentation/perf-top.txt        |    4 +
 tools/perf/Makefile                          |   11 +-
 tools/perf/bench/bench.h                     |    1 +
 tools/perf/bench/mem-memcpy-x86-64-asm-def.h |    8 +
 tools/perf/bench/mem-memcpy-x86-64-asm.S     |    6 +-
 tools/perf/bench/mem-memcpy.c                |   11 +-
 tools/perf/bench/mem-memset-arch.h           |   12 +
 tools/perf/bench/mem-memset-x86-64-asm-def.h |   12 +
 tools/perf/bench/mem-memset-x86-64-asm.S     |    6 +
 tools/perf/bench/mem-memset.c                |  298 ++++++++++++++++++++++++++
 tools/perf/builtin-bench.c                   |    3 +
 tools/perf/builtin-probe.c                   |    2 -
 tools/perf/builtin-record.c                  |   12 +-
 tools/perf/builtin-stat.c                    |    2 +-
 tools/perf/builtin-test.c                    |    8 +-
 tools/perf/builtin-top.c                     |   22 ++-
 tools/perf/perf.h                            |    1 +
 tools/perf/util/cpumap.c                     |   11 +
 tools/perf/util/cpumap.h                     |    4 +
 tools/perf/util/evlist.c                     |    6 +-
 tools/perf/util/evlist.h                     |    2 +-
 tools/perf/util/header.c                     |    2 +-
 tools/perf/util/hist.h                       |    1 +
 tools/perf/util/include/asm/dwarf2.h         |    4 +-
 tools/perf/util/probe-event.c                |    8 +-
 tools/perf/util/python.c                     |   10 +-
 tools/perf/util/symbol.c                     |    1 -
 tools/perf/util/thread_map.c                 |  109 +++++++++-
 tools/perf/util/thread_map.h                 |    7 +-
 tools/perf/util/top.c                        |    3 +
 tools/perf/util/top.h                        |    2 +
 tools/perf/util/trace-event-parse.c          |    3 +-
 tools/perf/util/ui/browsers/hists.c          |    5 +-
 tools/perf/util/ui/helpline.c                |    1 -
 tools/perf/util/usage.c                      |   39 ++++
 tools/perf/util/util.h                       |    3 +-
 37 files changed, 597 insertions(+), 47 deletions(-)
 create mode 100644 tools/perf/bench/mem-memset-arch.h
 create mode 100644 tools/perf/bench/mem-memset-x86-64-asm-def.h
 create mode 100644 tools/perf/bench/mem-memset-x86-64-asm.S
 create mode 100644 tools/perf/bench/mem-memset.c

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 1/9] perf tools: Add fprintf methods for thread_map and cpu_map classes
  2012-01-24 23:07 [GIT PULL 0/9] perf/core improvements and fixes Arnaldo Carvalho de Melo
@ 2012-01-24 23:07 ` Arnaldo Carvalho de Melo
  2012-01-24 23:07 ` [PATCH 2/9] perf tools: Introduce per user view Arnaldo Carvalho de Melo
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-24 23:07 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern,
	Frederic Weisbecker, Mike Galbraith, Paul Mackerras,
	Peter Zijlstra, Stephane Eranian

From: Arnaldo Carvalho de Melo <acme@redhat.com>

For helping with debugging.

Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-m06n4rp7pwr6dlzwoq89cl69@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/cpumap.c     |   11 +++++++++++
 tools/perf/util/cpumap.h     |    4 ++++
 tools/perf/util/thread_map.c |   11 +++++++++++
 tools/perf/util/thread_map.h |    4 ++++
 4 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/tools/perf/util/cpumap.c b/tools/perf/util/cpumap.c
index 6893eec..adc72f0 100644
--- a/tools/perf/util/cpumap.c
+++ b/tools/perf/util/cpumap.c
@@ -166,6 +166,17 @@ out:
 	return cpus;
 }
 
+size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp)
+{
+	int i;
+	size_t printed = fprintf(fp, "%d cpu%s: ",
+				 map->nr, map->nr > 1 ? "s" : "");
+	for (i = 0; i < map->nr; ++i)
+		printed += fprintf(fp, "%s%d", i ? ", " : "", map->map[i]);
+
+	return printed + fprintf(fp, "\n");
+}
+
 struct cpu_map *cpu_map__dummy_new(void)
 {
 	struct cpu_map *cpus = malloc(sizeof(*cpus) + sizeof(int));
diff --git a/tools/perf/util/cpumap.h b/tools/perf/util/cpumap.h
index 072c0a3..c415185 100644
--- a/tools/perf/util/cpumap.h
+++ b/tools/perf/util/cpumap.h
@@ -1,6 +1,8 @@
 #ifndef __PERF_CPUMAP_H
 #define __PERF_CPUMAP_H
 
+#include <stdio.h>
+
 struct cpu_map {
 	int nr;
 	int map[];
@@ -10,4 +12,6 @@ struct cpu_map *cpu_map__new(const char *cpu_list);
 struct cpu_map *cpu_map__dummy_new(void);
 void cpu_map__delete(struct cpu_map *map);
 
+size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp);
+
 #endif /* __PERF_CPUMAP_H */
diff --git a/tools/perf/util/thread_map.c b/tools/perf/util/thread_map.c
index a5df131..894d52f 100644
--- a/tools/perf/util/thread_map.c
+++ b/tools/perf/util/thread_map.c
@@ -62,3 +62,14 @@ void thread_map__delete(struct thread_map *threads)
 {
 	free(threads);
 }
+
+size_t thread_map__fprintf(struct thread_map *threads, FILE *fp)
+{
+	int i;
+	size_t printed = fprintf(fp, "%d thread%s: ",
+				 threads->nr, threads->nr > 1 ? "s" : "");
+	for (i = 0; i < threads->nr; ++i)
+		printed += fprintf(fp, "%s%d", i ? ", " : "", threads->map[i]);
+
+	return printed + fprintf(fp, "\n");
+}
diff --git a/tools/perf/util/thread_map.h b/tools/perf/util/thread_map.h
index 3cb9073..736ab4a26 100644
--- a/tools/perf/util/thread_map.h
+++ b/tools/perf/util/thread_map.h
@@ -2,6 +2,7 @@
 #define __PERF_THREAD_MAP_H
 
 #include <sys/types.h>
+#include <stdio.h>
 
 struct thread_map {
 	int nr;
@@ -12,4 +13,7 @@ struct thread_map *thread_map__new_by_pid(pid_t pid);
 struct thread_map *thread_map__new_by_tid(pid_t tid);
 struct thread_map *thread_map__new(pid_t pid, pid_t tid);
 void thread_map__delete(struct thread_map *threads);
+
+size_t thread_map__fprintf(struct thread_map *threads, FILE *fp);
+
 #endif	/* __PERF_THREAD_MAP_H */
-- 
1.7.9.rc2.1.g69204


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 2/9] perf tools: Introduce per user view
  2012-01-24 23:07 [GIT PULL 0/9] perf/core improvements and fixes Arnaldo Carvalho de Melo
  2012-01-24 23:07 ` [PATCH 1/9] perf tools: Add fprintf methods for thread_map and cpu_map classes Arnaldo Carvalho de Melo
@ 2012-01-24 23:07 ` Arnaldo Carvalho de Melo
  2012-01-24 23:07 ` [PATCH 3/9] perf bench: Make "default" memcpy() selection actually use glibc's implementation Arnaldo Carvalho de Melo
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-24 23:07 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern,
	Frederic Weisbecker, Mike Galbraith, Paul Mackerras,
	Peter Zijlstra, Stephane Eranian

From: Arnaldo Carvalho de Melo <acme@redhat.com>

The new --uid command line option will show only the tasks for a given
user, using the proc interface to figure out the existing tasks.

Kernel work is needed to close races at startup, but this should already
be useful in many use cases.

Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-bdnspm000gw2l984a2t53o8z@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Documentation/perf-record.txt |    4 +
 tools/perf/Documentation/perf-top.txt    |    4 +
 tools/perf/builtin-record.c              |   12 +++-
 tools/perf/builtin-stat.c                |    2 +-
 tools/perf/builtin-test.c                |    8 +-
 tools/perf/builtin-top.c                 |   22 ++++++-
 tools/perf/perf.h                        |    1 +
 tools/perf/util/evlist.c                 |    6 +-
 tools/perf/util/evlist.h                 |    2 +-
 tools/perf/util/hist.h                   |    1 +
 tools/perf/util/python.c                 |   10 ++--
 tools/perf/util/thread_map.c             |   98 +++++++++++++++++++++++++++++-
 tools/perf/util/thread_map.h             |    3 +-
 tools/perf/util/top.c                    |    3 +
 tools/perf/util/top.h                    |    2 +
 tools/perf/util/ui/browsers/hists.c      |    3 +
 tools/perf/util/usage.c                  |   39 ++++++++++++
 tools/perf/util/util.h                   |    2 +
 18 files changed, 200 insertions(+), 22 deletions(-)

diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt
index 2937f7e..ff9a66e 100644
--- a/tools/perf/Documentation/perf-record.txt
+++ b/tools/perf/Documentation/perf-record.txt
@@ -58,6 +58,10 @@ OPTIONS
 --tid=::
         Record events on existing thread ID.
 
+-u::
+--uid=::
+        Record events in threads owned by uid. Name or number.
+
 -r::
 --realtime=::
 	Collect data with this RT SCHED_FIFO priority.
diff --git a/tools/perf/Documentation/perf-top.txt b/tools/perf/Documentation/perf-top.txt
index b1a5bbb..ab1454e 100644
--- a/tools/perf/Documentation/perf-top.txt
+++ b/tools/perf/Documentation/perf-top.txt
@@ -78,6 +78,10 @@ Default is to monitor all CPUS.
 --tid=<tid>::
         Profile events on existing thread ID.
 
+-u::
+--uid=::
+        Record events in threads owned by uid. Name or number.
+
 -r <priority>::
 --realtime=<priority>::
 	Collect data with this RT SCHED_FIFO priority.
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 0abfb18..32870ee 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -44,6 +44,7 @@ struct perf_record {
 	struct perf_evlist	*evlist;
 	struct perf_session	*session;
 	const char		*progname;
+	const char		*uid_str;
 	int			output;
 	unsigned int		page_size;
 	int			realtime_prio;
@@ -727,6 +728,7 @@ const struct option record_options[] = {
 	OPT_CALLBACK('G', "cgroup", &record.evlist, "name",
 		     "monitor event in cgroup name only",
 		     parse_cgroups),
+	OPT_STRING('u', "uid", &record.uid_str, "user", "user to profile"),
 	OPT_END()
 };
 
@@ -748,7 +750,7 @@ int cmd_record(int argc, const char **argv, const char *prefix __used)
 	argc = parse_options(argc, argv, record_options, record_usage,
 			    PARSE_OPT_STOP_AT_NON_OPTION);
 	if (!argc && rec->opts.target_pid == -1 && rec->opts.target_tid == -1 &&
-		!rec->opts.system_wide && !rec->opts.cpu_list)
+		!rec->opts.system_wide && !rec->opts.cpu_list && !rec->uid_str)
 		usage_with_options(record_usage, record_options);
 
 	if (rec->force && rec->append_file) {
@@ -788,11 +790,17 @@ int cmd_record(int argc, const char **argv, const char *prefix __used)
 		goto out_symbol_exit;
 	}
 
+	rec->opts.uid = parse_target_uid(rec->uid_str, rec->opts.target_tid,
+					 rec->opts.target_pid);
+	if (rec->uid_str != NULL && rec->opts.uid == UINT_MAX - 1)
+		goto out_free_fd;
+
 	if (rec->opts.target_pid != -1)
 		rec->opts.target_tid = rec->opts.target_pid;
 
 	if (perf_evlist__create_maps(evsel_list, rec->opts.target_pid,
-				     rec->opts.target_tid, rec->opts.cpu_list) < 0)
+				     rec->opts.target_tid, rec->opts.uid,
+				     rec->opts.cpu_list) < 0)
 		usage_with_options(record_usage, record_options);
 
 	list_for_each_entry(pos, &evsel_list->entries, node) {
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index f5d2a63..459b862 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -1201,7 +1201,7 @@ int cmd_stat(int argc, const char **argv, const char *prefix __used)
 	if (target_pid != -1)
 		target_tid = target_pid;
 
-	evsel_list->threads = thread_map__new(target_pid, target_tid);
+	evsel_list->threads = thread_map__new(target_pid, target_tid, UINT_MAX);
 	if (evsel_list->threads == NULL) {
 		pr_err("Problems finding threads of monitor\n");
 		usage_with_options(stat_usage, options);
diff --git a/tools/perf/builtin-test.c b/tools/perf/builtin-test.c
index 3854e86..3ce709e 100644
--- a/tools/perf/builtin-test.c
+++ b/tools/perf/builtin-test.c
@@ -276,7 +276,7 @@ static int test__open_syscall_event(void)
 		return -1;
 	}
 
-	threads = thread_map__new(-1, getpid());
+	threads = thread_map__new(-1, getpid(), UINT_MAX);
 	if (threads == NULL) {
 		pr_debug("thread_map__new\n");
 		return -1;
@@ -342,7 +342,7 @@ static int test__open_syscall_event_on_all_cpus(void)
 		return -1;
 	}
 
-	threads = thread_map__new(-1, getpid());
+	threads = thread_map__new(-1, getpid(), UINT_MAX);
 	if (threads == NULL) {
 		pr_debug("thread_map__new\n");
 		return -1;
@@ -490,7 +490,7 @@ static int test__basic_mmap(void)
 		expected_nr_events[i] = random() % 257;
 	}
 
-	threads = thread_map__new(-1, getpid());
+	threads = thread_map__new(-1, getpid(), UINT_MAX);
 	if (threads == NULL) {
 		pr_debug("thread_map__new\n");
 		return -1;
@@ -1054,7 +1054,7 @@ static int test__PERF_RECORD(void)
 	 * we're monitoring, the one forked there.
 	 */
 	err = perf_evlist__create_maps(evlist, opts.target_pid,
-				       opts.target_tid, opts.cpu_list);
+				       opts.target_tid, UINT_MAX, opts.cpu_list);
 	if (err < 0) {
 		pr_debug("Not enough memory to create thread/cpu maps\n");
 		goto out_delete_evlist;
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 8f80df8..e8b033c 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -64,7 +64,6 @@
 #include <linux/unistd.h>
 #include <linux/types.h>
 
-
 void get_term_dimensions(struct winsize *ws)
 {
 	char *s = getenv("LINES");
@@ -537,10 +536,20 @@ static void perf_top__sort_new_samples(void *arg)
 
 static void *display_thread_tui(void *arg)
 {
+	struct perf_evsel *pos;
 	struct perf_top *top = arg;
 	const char *help = "For a higher level overview, try: perf top --sort comm,dso";
 
 	perf_top__sort_new_samples(top);
+
+	/*
+	 * Initialize the uid_filter_str, in the future the TUI will allow
+	 * Zooming in/out UIDs. For now juse use whatever the user passed
+	 * via --uid.
+	 */
+	list_for_each_entry(pos, &top->evlist->entries, node)
+		pos->hists.uid_filter_str = top->uid_str;
+
 	perf_evlist__tui_browse_hists(top->evlist, help,
 				      perf_top__sort_new_samples,
 				      top, top->delay_secs);
@@ -949,7 +958,7 @@ static int __cmd_top(struct perf_top *top)
 	if (ret)
 		goto out_delete;
 
-	if (top->target_tid != -1)
+	if (top->target_tid != -1 || top->uid != UINT_MAX)
 		perf_event__synthesize_thread_map(&top->tool, top->evlist->threads,
 						  perf_event__process,
 						  &top->session->host_machine);
@@ -1089,6 +1098,7 @@ int cmd_top(int argc, const char **argv, const char *prefix __used)
 		.delay_secs	     = 2,
 		.target_pid	     = -1,
 		.target_tid	     = -1,
+		.uid		     = UINT_MAX,
 		.freq		     = 1000, /* 1 KHz */
 		.sample_id_all_avail = true,
 		.mmap_pages	     = 128,
@@ -1162,6 +1172,7 @@ int cmd_top(int argc, const char **argv, const char *prefix __used)
 		    "Display raw encoding of assembly instructions (default)"),
 	OPT_STRING('M', "disassembler-style", &disassembler_style, "disassembler style",
 		   "Specify disassembler style (e.g. -M intel for intel syntax)"),
+	OPT_STRING('u', "uid", &top.uid_str, "user", "user to profile"),
 	OPT_END()
 	};
 
@@ -1187,6 +1198,10 @@ int cmd_top(int argc, const char **argv, const char *prefix __used)
 
 	setup_browser(false);
 
+	top.uid = parse_target_uid(top.uid_str, top.target_tid, top.target_pid);
+	if (top.uid_str != NULL && top.uid == UINT_MAX - 1)
+		goto out_delete_evlist;
+
 	/* CPU and PID are mutually exclusive */
 	if (top.target_tid > 0 && top.cpu_list) {
 		printf("WARNING: PID switch overriding CPU\n");
@@ -1198,7 +1213,7 @@ int cmd_top(int argc, const char **argv, const char *prefix __used)
 		top.target_tid = top.target_pid;
 
 	if (perf_evlist__create_maps(top.evlist, top.target_pid,
-				     top.target_tid, top.cpu_list) < 0)
+				     top.target_tid, top.uid, top.cpu_list) < 0)
 		usage_with_options(top_usage, options);
 
 	if (!top.evlist->nr_entries &&
@@ -1262,6 +1277,7 @@ int cmd_top(int argc, const char **argv, const char *prefix __used)
 
 	status = __cmd_top(&top);
 
+out_delete_evlist:
 	perf_evlist__delete(top.evlist);
 
 	return status;
diff --git a/tools/perf/perf.h b/tools/perf/perf.h
index 64f8bee..92af168 100644
--- a/tools/perf/perf.h
+++ b/tools/perf/perf.h
@@ -188,6 +188,7 @@ void pthread__unblock_sigwinch(void);
 struct perf_record_opts {
 	pid_t	     target_pid;
 	pid_t	     target_tid;
+	uid_t	     uid;
 	bool	     call_graph;
 	bool	     group;
 	bool	     inherit_stat;
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 3f16e08..a6d50e3 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -594,14 +594,14 @@ int perf_evlist__mmap(struct perf_evlist *evlist, unsigned int pages,
 }
 
 int perf_evlist__create_maps(struct perf_evlist *evlist, pid_t target_pid,
-			     pid_t target_tid, const char *cpu_list)
+			     pid_t target_tid, uid_t uid, const char *cpu_list)
 {
-	evlist->threads = thread_map__new(target_pid, target_tid);
+	evlist->threads = thread_map__new(target_pid, target_tid, uid);
 
 	if (evlist->threads == NULL)
 		return -1;
 
-	if (cpu_list == NULL && target_tid != -1)
+	if (uid != UINT_MAX || (cpu_list == NULL && target_tid != -1))
 		evlist->cpus = cpu_map__dummy_new();
 	else
 		evlist->cpus = cpu_map__new(cpu_list);
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index 8922aee..9c51660 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -107,7 +107,7 @@ static inline void perf_evlist__set_maps(struct perf_evlist *evlist,
 }
 
 int perf_evlist__create_maps(struct perf_evlist *evlist, pid_t target_pid,
-			     pid_t target_tid, const char *cpu_list);
+			     pid_t tid, uid_t uid, const char *cpu_list);
 void perf_evlist__delete_maps(struct perf_evlist *evlist);
 int perf_evlist__set_filters(struct perf_evlist *evlist);
 
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index f55f0a8d..0d48613 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -55,6 +55,7 @@ struct hists {
 	u64			nr_entries;
 	const struct thread	*thread_filter;
 	const struct dso	*dso_filter;
+	const char		*uid_filter_str;
 	pthread_mutex_t		lock;
 	struct events_stats	stats;
 	u64			event_stream;
diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c
index 9dd47a4..e03b58a 100644
--- a/tools/perf/util/python.c
+++ b/tools/perf/util/python.c
@@ -425,14 +425,14 @@ struct pyrf_thread_map {
 static int pyrf_thread_map__init(struct pyrf_thread_map *pthreads,
 				 PyObject *args, PyObject *kwargs)
 {
-	static char *kwlist[] = { "pid", "tid", NULL };
-	int pid = -1, tid = -1;
+	static char *kwlist[] = { "pid", "tid", "uid", NULL };
+	int pid = -1, tid = -1, uid = UINT_MAX;
 
-	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ii",
-					 kwlist, &pid, &tid))
+	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iii",
+					 kwlist, &pid, &tid, &uid))
 		return -1;
 
-	pthreads->threads = thread_map__new(pid, tid);
+	pthreads->threads = thread_map__new(pid, tid, uid);
 	if (pthreads->threads == NULL)
 		return -1;
 	return 0;
diff --git a/tools/perf/util/thread_map.c b/tools/perf/util/thread_map.c
index 894d52f..3d4b6c5 100644
--- a/tools/perf/util/thread_map.c
+++ b/tools/perf/util/thread_map.c
@@ -1,6 +1,11 @@
 #include <dirent.h>
+#include <limits.h>
+#include <stdbool.h>
 #include <stdlib.h>
 #include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
 #include "thread_map.h"
 
 /* Skip "." and ".." directories */
@@ -23,7 +28,7 @@ struct thread_map *thread_map__new_by_pid(pid_t pid)
 	sprintf(name, "/proc/%d/task", pid);
 	items = scandir(name, &namelist, filter, NULL);
 	if (items <= 0)
-                return NULL;
+		return NULL;
 
 	threads = malloc(sizeof(*threads) + sizeof(pid_t) * items);
 	if (threads != NULL) {
@@ -51,10 +56,99 @@ struct thread_map *thread_map__new_by_tid(pid_t tid)
 	return threads;
 }
 
-struct thread_map *thread_map__new(pid_t pid, pid_t tid)
+struct thread_map *thread_map__new_by_uid(uid_t uid)
+{
+	DIR *proc;
+	int max_threads = 32, items, i;
+	char path[256];
+	struct dirent dirent, *next, **namelist = NULL;
+	struct thread_map *threads = malloc(sizeof(*threads) +
+					    max_threads * sizeof(pid_t));
+	if (threads == NULL)
+		goto out;
+
+	proc = opendir("/proc");
+	if (proc == NULL)
+		goto out_free_threads;
+
+	threads->nr = 0;
+
+	while (!readdir_r(proc, &dirent, &next) && next) {
+		char *end;
+		bool grow = false;
+		struct stat st;
+		pid_t pid = strtol(dirent.d_name, &end, 10);
+
+		if (*end) /* only interested in proper numerical dirents */
+			continue;
+
+		snprintf(path, sizeof(path), "/proc/%s", dirent.d_name);
+
+		if (stat(path, &st) != 0)
+			continue;
+
+		if (st.st_uid != uid)
+			continue;
+
+		snprintf(path, sizeof(path), "/proc/%d/task", pid);
+		items = scandir(path, &namelist, filter, NULL);
+		if (items <= 0)
+			goto out_free_closedir;
+
+		while (threads->nr + items >= max_threads) {
+			max_threads *= 2;
+			grow = true;
+		}
+
+		if (grow) {
+			struct thread_map *tmp;
+
+			tmp = realloc(threads, (sizeof(*threads) +
+						max_threads * sizeof(pid_t)));
+			if (tmp == NULL)
+				goto out_free_namelist;
+
+			threads = tmp;
+		}
+
+		for (i = 0; i < items; i++)
+			threads->map[threads->nr + i] = atoi(namelist[i]->d_name);
+
+		for (i = 0; i < items; i++)
+			free(namelist[i]);
+		free(namelist);
+
+		threads->nr += items;
+	}
+
+out_closedir:
+	closedir(proc);
+out:
+	return threads;
+
+out_free_threads:
+	free(threads);
+	return NULL;
+
+out_free_namelist:
+	for (i = 0; i < items; i++)
+		free(namelist[i]);
+	free(namelist);
+
+out_free_closedir:
+	free(threads);
+	threads = NULL;
+	goto out_closedir;
+}
+
+struct thread_map *thread_map__new(pid_t pid, pid_t tid, uid_t uid)
 {
 	if (pid != -1)
 		return thread_map__new_by_pid(pid);
+
+	if (tid == -1 && uid != UINT_MAX)
+		return thread_map__new_by_uid(uid);
+
 	return thread_map__new_by_tid(tid);
 }
 
diff --git a/tools/perf/util/thread_map.h b/tools/perf/util/thread_map.h
index 736ab4a26..c75ddba 100644
--- a/tools/perf/util/thread_map.h
+++ b/tools/perf/util/thread_map.h
@@ -11,7 +11,8 @@ struct thread_map {
 
 struct thread_map *thread_map__new_by_pid(pid_t pid);
 struct thread_map *thread_map__new_by_tid(pid_t tid);
-struct thread_map *thread_map__new(pid_t pid, pid_t tid);
+struct thread_map *thread_map__new_by_uid(uid_t uid);
+struct thread_map *thread_map__new(pid_t pid, pid_t tid, uid_t uid);
 void thread_map__delete(struct thread_map *threads);
 
 size_t thread_map__fprintf(struct thread_map *threads, FILE *fp);
diff --git a/tools/perf/util/top.c b/tools/perf/util/top.c
index 500471d..e4370ca 100644
--- a/tools/perf/util/top.c
+++ b/tools/perf/util/top.c
@@ -75,6 +75,9 @@ size_t perf_top__header_snprintf(struct perf_top *top, char *bf, size_t size)
 	else if (top->target_tid != -1)
 		ret += SNPRINTF(bf + ret, size - ret, " (target_tid: %d",
 				top->target_tid);
+	else if (top->uid_str != NULL)
+		ret += SNPRINTF(bf + ret, size - ret, " (uid: %s",
+				top->uid_str);
 	else
 		ret += SNPRINTF(bf + ret, size - ret, " (all");
 
diff --git a/tools/perf/util/top.h b/tools/perf/util/top.h
index a248f3c..def3e53 100644
--- a/tools/perf/util/top.h
+++ b/tools/perf/util/top.h
@@ -24,6 +24,7 @@ struct perf_top {
 	int		   print_entries, count_filter, delay_secs;
 	int		   freq;
 	pid_t		   target_pid, target_tid;
+	uid_t		   uid;
 	bool		   hide_kernel_symbols, hide_user_symbols, zero;
 	bool		   system_wide;
 	bool		   use_tui, use_stdio;
@@ -45,6 +46,7 @@ struct perf_top {
 	int		   realtime_prio;
 	int		   sym_pcnt_filter;
 	const char	   *sym_filter;
+	const char	   *uid_str;
 };
 
 size_t perf_top__header_snprintf(struct perf_top *top, char *bf, size_t size);
diff --git a/tools/perf/util/ui/browsers/hists.c b/tools/perf/util/ui/browsers/hists.c
index 1212a38..7b6669d 100644
--- a/tools/perf/util/ui/browsers/hists.c
+++ b/tools/perf/util/ui/browsers/hists.c
@@ -841,6 +841,9 @@ static int hists__browser_title(struct hists *self, char *bf, size_t size,
 	nr_events = convert_unit(nr_events, &unit);
 	printed = snprintf(bf, size, "Events: %lu%c %s", nr_events, unit, ev_name);
 
+	if (self->uid_filter_str)
+		printed += snprintf(bf + printed, size - printed,
+				    ", UID: %s", self->uid_filter_str);
 	if (thread)
 		printed += snprintf(bf + printed, size - printed,
 				    ", Thread: %s(%d)",
diff --git a/tools/perf/util/usage.c b/tools/perf/util/usage.c
index d76d1c0..d0c0139 100644
--- a/tools/perf/util/usage.c
+++ b/tools/perf/util/usage.c
@@ -7,6 +7,7 @@
  * Copyright (C) Linus Torvalds, 2005
  */
 #include "util.h"
+#include "debug.h"
 
 static void report(const char *prefix, const char *err, va_list params)
 {
@@ -81,3 +82,41 @@ void warning(const char *warn, ...)
 	warn_routine(warn, params);
 	va_end(params);
 }
+
+uid_t parse_target_uid(const char *str, pid_t tid, pid_t pid)
+{
+	struct passwd pwd, *result;
+	char buf[1024];
+
+	if (str == NULL)
+		return UINT_MAX;
+
+	/* CPU and PID are mutually exclusive */
+	if (tid > 0 || pid > 0) {
+		ui__warning("PID/TID switch overriding UID\n");
+		sleep(1);
+		return UINT_MAX;
+	}
+
+	getpwnam_r(str, &pwd, buf, sizeof(buf), &result);
+
+	if (result == NULL) {
+		char *endptr;
+		int uid = strtol(str, &endptr, 10);
+
+		if (*endptr != '\0') {
+			ui__error("Invalid user %s\n", str);
+			return UINT_MAX - 1;
+		}
+
+		getpwuid_r(uid, &pwd, buf, sizeof(buf), &result);
+
+		if (result == NULL) {
+			ui__error("Problems obtaining information for user %s\n",
+				  str);
+			return UINT_MAX - 1;
+		}
+	}
+
+	return result->pw_uid;
+}
diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
index b9c530c..061dbf8 100644
--- a/tools/perf/util/util.h
+++ b/tools/perf/util/util.h
@@ -246,6 +246,8 @@ struct perf_event_attr;
 
 void event_attr_init(struct perf_event_attr *attr);
 
+uid_t parse_target_uid(const char *str, pid_t tid, pid_t pid);
+
 #define _STR(x) #x
 #define STR(x) _STR(x)
 
-- 
1.7.9.rc2.1.g69204


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 3/9] perf bench: Make "default" memcpy() selection actually use glibc's implementation
  2012-01-24 23:07 [GIT PULL 0/9] perf/core improvements and fixes Arnaldo Carvalho de Melo
  2012-01-24 23:07 ` [PATCH 1/9] perf tools: Add fprintf methods for thread_map and cpu_map classes Arnaldo Carvalho de Melo
  2012-01-24 23:07 ` [PATCH 2/9] perf tools: Introduce per user view Arnaldo Carvalho de Melo
@ 2012-01-24 23:07 ` Arnaldo Carvalho de Melo
  2012-01-24 23:07 ` [PATCH 4/9] perf bench: Also allow measuring alternative memcpy implementations Arnaldo Carvalho de Melo
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-24 23:07 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Jan Beulich, Paul Mackerras, Peter Zijlstra,
	Jan Beulich, Arnaldo Carvalho de Melo

From: Jan Beulich <JBeulich@suse.com>

Since arch/x86/lib/memcpy_64.S implements not only __memcpy, but also
memcpy, without further precautions this function will get chose by the
static linker for resolving all references, and hence the "default"
measurement didn't really measure anything else than the
"x86-64-unrolled" one.

Fix this by renaming (through the pre-processor) the conflicting symbol.

On my Westmere system, the glibc variant turns out to require about 4%
less instructions, but 15% more cycles for the default 1Mb block size
measured.

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/4F16D6FD020000780006D72F@nat28.tlf.novell.com
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/bench/mem-memcpy-x86-64-asm.S |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/tools/perf/bench/mem-memcpy-x86-64-asm.S b/tools/perf/bench/mem-memcpy-x86-64-asm.S
index a57b66e..384b607 100644
--- a/tools/perf/bench/mem-memcpy-x86-64-asm.S
+++ b/tools/perf/bench/mem-memcpy-x86-64-asm.S
@@ -1,2 +1,2 @@
-
+#define memcpy MEMCPY /* don't hide glibc's memcpy() */
 #include "../../../arch/x86/lib/memcpy_64.S"
-- 
1.7.9.rc2.1.g69204


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 4/9] perf bench: Also allow measuring alternative memcpy implementations
  2012-01-24 23:07 [GIT PULL 0/9] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (2 preceding siblings ...)
  2012-01-24 23:07 ` [PATCH 3/9] perf bench: Make "default" memcpy() selection actually use glibc's implementation Arnaldo Carvalho de Melo
@ 2012-01-24 23:07 ` Arnaldo Carvalho de Melo
  2012-01-24 23:07 ` [PATCH 5/9] perf bench: Also allow measuring memset() Arnaldo Carvalho de Melo
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-24 23:07 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Jan Beulich, Paul Mackerras, Peter Zijlstra,
	Jan Beulich, Arnaldo Carvalho de Melo

From: Jan Beulich <JBeulich@suse.com>

Intended to be able to support the current selection of the preferred
memcpy() implementation, this patch adds the ability to also measure the
two alternative implementations, again by way of using some
pre-processsor replacement.

While on my Westmere system this proves that the movsb based variant is
worse than the movsq based one (since the ERMS feature isn't there), it
also shows that here for the default as well as small sizes the unrolled
variant outperforms the movsq one.

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/4F16D728020000780006D732@nat28.tlf.novell.com
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/bench/mem-memcpy-x86-64-asm-def.h |    8 ++++++++
 tools/perf/bench/mem-memcpy-x86-64-asm.S     |    4 ++++
 2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/tools/perf/bench/mem-memcpy-x86-64-asm-def.h b/tools/perf/bench/mem-memcpy-x86-64-asm-def.h
index d588b87..d66ab79 100644
--- a/tools/perf/bench/mem-memcpy-x86-64-asm-def.h
+++ b/tools/perf/bench/mem-memcpy-x86-64-asm-def.h
@@ -2,3 +2,11 @@
 MEMCPY_FN(__memcpy,
 	"x86-64-unrolled",
 	"unrolled memcpy() in arch/x86/lib/memcpy_64.S")
+
+MEMCPY_FN(memcpy_c,
+	"x86-64-movsq",
+	"movsq-based memcpy() in arch/x86/lib/memcpy_64.S")
+
+MEMCPY_FN(memcpy_c_e,
+	"x86-64-movsb",
+	"movsb-based memcpy() in arch/x86/lib/memcpy_64.S")
diff --git a/tools/perf/bench/mem-memcpy-x86-64-asm.S b/tools/perf/bench/mem-memcpy-x86-64-asm.S
index 384b607..a20780b 100644
--- a/tools/perf/bench/mem-memcpy-x86-64-asm.S
+++ b/tools/perf/bench/mem-memcpy-x86-64-asm.S
@@ -1,2 +1,6 @@
 #define memcpy MEMCPY /* don't hide glibc's memcpy() */
+#define altinstr_replacement text
+#define globl p2align 4; .globl
+#define Lmemcpy_c globl memcpy_c; memcpy_c
+#define Lmemcpy_c_e globl memcpy_c_e; memcpy_c_e
 #include "../../../arch/x86/lib/memcpy_64.S"
-- 
1.7.9.rc2.1.g69204


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 5/9] perf bench: Also allow measuring memset()
  2012-01-24 23:07 [GIT PULL 0/9] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (3 preceding siblings ...)
  2012-01-24 23:07 ` [PATCH 4/9] perf bench: Also allow measuring alternative memcpy implementations Arnaldo Carvalho de Melo
@ 2012-01-24 23:07 ` Arnaldo Carvalho de Melo
  2012-01-24 23:07 ` [PATCH 6/9] perf bench: Allow passing an iteration count to "bench mem mem{cpy,set}" Arnaldo Carvalho de Melo
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-24 23:07 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Jan Beulich, Paul Mackerras, Peter Zijlstra,
	Stephane Eranian, Arnaldo Carvalho de Melo

From: Jan Beulich <jbeulich@suse.com>

This simply clones the respective memcpy() implementation.

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/4F16D743020000780006D735@nat28.tlf.novell.com
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Makefile                          |    4 +-
 tools/perf/bench/bench.h                     |    1 +
 tools/perf/bench/mem-memset-arch.h           |   12 +
 tools/perf/bench/mem-memset-x86-64-asm-def.h |   12 +
 tools/perf/bench/mem-memset-x86-64-asm.S     |    6 +
 tools/perf/bench/mem-memset.c                |  291 ++++++++++++++++++++++++++
 tools/perf/builtin-bench.c                   |    3 +
 tools/perf/util/include/asm/dwarf2.h         |    4 +-
 8 files changed, 331 insertions(+), 2 deletions(-)
 create mode 100644 tools/perf/bench/mem-memset-arch.h
 create mode 100644 tools/perf/bench/mem-memset-x86-64-asm-def.h
 create mode 100644 tools/perf/bench/mem-memset-x86-64-asm.S
 create mode 100644 tools/perf/bench/mem-memset.c

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index ac86d67..599031a 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -61,7 +61,7 @@ ifeq ($(ARCH),x86_64)
 	ifeq (${IS_X86_64}, 1)
 		RAW_ARCH := x86_64
 		ARCH_CFLAGS := -DARCH_X86_64
-		ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S
+		ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S
 	endif
 endif
 
@@ -362,8 +362,10 @@ BUILTIN_OBJS += $(OUTPUT)bench/sched-messaging.o
 BUILTIN_OBJS += $(OUTPUT)bench/sched-pipe.o
 ifeq ($(RAW_ARCH),x86_64)
 BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy-x86-64-asm.o
+BUILTIN_OBJS += $(OUTPUT)bench/mem-memset-x86-64-asm.o
 endif
 BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy.o
+BUILTIN_OBJS += $(OUTPUT)bench/mem-memset.o
 
 BUILTIN_OBJS += $(OUTPUT)builtin-diff.o
 BUILTIN_OBJS += $(OUTPUT)builtin-evlist.o
diff --git a/tools/perf/bench/bench.h b/tools/perf/bench/bench.h
index f7781c6..a09bece 100644
--- a/tools/perf/bench/bench.h
+++ b/tools/perf/bench/bench.h
@@ -4,6 +4,7 @@
 extern int bench_sched_messaging(int argc, const char **argv, const char *prefix);
 extern int bench_sched_pipe(int argc, const char **argv, const char *prefix);
 extern int bench_mem_memcpy(int argc, const char **argv, const char *prefix __used);
+extern int bench_mem_memset(int argc, const char **argv, const char *prefix);
 
 #define BENCH_FORMAT_DEFAULT_STR	"default"
 #define BENCH_FORMAT_DEFAULT		0
diff --git a/tools/perf/bench/mem-memset-arch.h b/tools/perf/bench/mem-memset-arch.h
new file mode 100644
index 0000000..a040fa7
--- /dev/null
+++ b/tools/perf/bench/mem-memset-arch.h
@@ -0,0 +1,12 @@
+
+#ifdef ARCH_X86_64
+
+#define MEMSET_FN(fn, name, desc)		\
+	extern void *fn(void *, int, size_t);
+
+#include "mem-memset-x86-64-asm-def.h"
+
+#undef MEMSET_FN
+
+#endif
+
diff --git a/tools/perf/bench/mem-memset-x86-64-asm-def.h b/tools/perf/bench/mem-memset-x86-64-asm-def.h
new file mode 100644
index 0000000..a71dff9
--- /dev/null
+++ b/tools/perf/bench/mem-memset-x86-64-asm-def.h
@@ -0,0 +1,12 @@
+
+MEMSET_FN(__memset,
+	"x86-64-unrolled",
+	"unrolled memset() in arch/x86/lib/memset_64.S")
+
+MEMSET_FN(memset_c,
+	"x86-64-stosq",
+	"movsq-based memset() in arch/x86/lib/memset_64.S")
+
+MEMSET_FN(memset_c_e,
+	"x86-64-stosb",
+	"movsb-based memset() in arch/x86/lib/memset_64.S")
diff --git a/tools/perf/bench/mem-memset-x86-64-asm.S b/tools/perf/bench/mem-memset-x86-64-asm.S
new file mode 100644
index 0000000..cb92170
--- /dev/null
+++ b/tools/perf/bench/mem-memset-x86-64-asm.S
@@ -0,0 +1,6 @@
+#define memset MEMSET /* don't hide glibc's memset() */
+#define altinstr_replacement text
+#define globl p2align 4; .globl
+#define Lmemset_c globl memset_c; memset_c
+#define Lmemset_c_e globl memset_c_e; memset_c_e
+#include "../../../arch/x86/lib/memset_64.S"
diff --git a/tools/perf/bench/mem-memset.c b/tools/perf/bench/mem-memset.c
new file mode 100644
index 0000000..9c0c6f0
--- /dev/null
+++ b/tools/perf/bench/mem-memset.c
@@ -0,0 +1,291 @@
+/*
+ * mem-memset.c
+ *
+ * memset: Simple memory set in various ways
+ *
+ * Trivial clone of mem-memcpy.c.
+ */
+#include <ctype.h>
+
+#include "../perf.h"
+#include "../util/util.h"
+#include "../util/parse-options.h"
+#include "../util/header.h"
+#include "bench.h"
+#include "mem-memset-arch.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+#include <errno.h>
+
+#define K 1024
+
+static const char	*length_str	= "1MB";
+static const char	*routine	= "default";
+static bool		use_clock;
+static int		clock_fd;
+static bool		only_prefault;
+static bool		no_prefault;
+
+static const struct option options[] = {
+	OPT_STRING('l', "length", &length_str, "1MB",
+		    "Specify length of memory to copy. "
+		    "available unit: B, MB, GB (upper and lower)"),
+	OPT_STRING('r', "routine", &routine, "default",
+		    "Specify routine to copy"),
+	OPT_BOOLEAN('c', "clock", &use_clock,
+		    "Use CPU clock for measuring"),
+	OPT_BOOLEAN('o', "only-prefault", &only_prefault,
+		    "Show only the result with page faults before memset()"),
+	OPT_BOOLEAN('n', "no-prefault", &no_prefault,
+		    "Show only the result without page faults before memset()"),
+	OPT_END()
+};
+
+typedef void *(*memset_t)(void *, int, size_t);
+
+struct routine {
+	const char *name;
+	const char *desc;
+	memset_t fn;
+};
+
+static const struct routine routines[] = {
+	{ "default",
+	  "Default memset() provided by glibc",
+	  memset },
+#ifdef ARCH_X86_64
+
+#define MEMSET_FN(fn, name, desc) { name, desc, fn },
+#include "mem-memset-x86-64-asm-def.h"
+#undef MEMSET_FN
+
+#endif
+
+	{ NULL,
+	  NULL,
+	  NULL   }
+};
+
+static const char * const bench_mem_memset_usage[] = {
+	"perf bench mem memset <options>",
+	NULL
+};
+
+static struct perf_event_attr clock_attr = {
+	.type		= PERF_TYPE_HARDWARE,
+	.config		= PERF_COUNT_HW_CPU_CYCLES
+};
+
+static void init_clock(void)
+{
+	clock_fd = sys_perf_event_open(&clock_attr, getpid(), -1, -1, 0);
+
+	if (clock_fd < 0 && errno == ENOSYS)
+		die("No CONFIG_PERF_EVENTS=y kernel support configured?\n");
+	else
+		BUG_ON(clock_fd < 0);
+}
+
+static u64 get_clock(void)
+{
+	int ret;
+	u64 clk;
+
+	ret = read(clock_fd, &clk, sizeof(u64));
+	BUG_ON(ret != sizeof(u64));
+
+	return clk;
+}
+
+static double timeval2double(struct timeval *ts)
+{
+	return (double)ts->tv_sec +
+		(double)ts->tv_usec / (double)1000000;
+}
+
+static void alloc_mem(void **dst, size_t length)
+{
+	*dst = zalloc(length);
+	if (!dst)
+		die("memory allocation failed - maybe length is too large?\n");
+}
+
+static u64 do_memset_clock(memset_t fn, size_t len, bool prefault)
+{
+	u64 clock_start = 0ULL, clock_end = 0ULL;
+	void *dst = NULL;
+
+	alloc_mem(&dst, len);
+
+	if (prefault)
+		fn(dst, -1, len);
+
+	clock_start = get_clock();
+	fn(dst, 0, len);
+	clock_end = get_clock();
+
+	free(dst);
+	return clock_end - clock_start;
+}
+
+static double do_memset_gettimeofday(memset_t fn, size_t len, bool prefault)
+{
+	struct timeval tv_start, tv_end, tv_diff;
+	void *dst = NULL;
+
+	alloc_mem(&dst, len);
+
+	if (prefault)
+		fn(dst, -1, len);
+
+	BUG_ON(gettimeofday(&tv_start, NULL));
+	fn(dst, 0, len);
+	BUG_ON(gettimeofday(&tv_end, NULL));
+
+	timersub(&tv_end, &tv_start, &tv_diff);
+
+	free(dst);
+	return (double)((double)len / timeval2double(&tv_diff));
+}
+
+#define pf (no_prefault ? 0 : 1)
+
+#define print_bps(x) do {					\
+		if (x < K)					\
+			printf(" %14lf B/Sec", x);		\
+		else if (x < K * K)				\
+			printf(" %14lfd KB/Sec", x / K);	\
+		else if (x < K * K * K)				\
+			printf(" %14lf MB/Sec", x / K / K);	\
+		else						\
+			printf(" %14lf GB/Sec", x / K / K / K); \
+	} while (0)
+
+int bench_mem_memset(int argc, const char **argv,
+		     const char *prefix __used)
+{
+	int i;
+	size_t len;
+	double result_bps[2];
+	u64 result_clock[2];
+
+	argc = parse_options(argc, argv, options,
+			     bench_mem_memset_usage, 0);
+
+	if (use_clock)
+		init_clock();
+
+	len = (size_t)perf_atoll((char *)length_str);
+
+	result_clock[0] = result_clock[1] = 0ULL;
+	result_bps[0] = result_bps[1] = 0.0;
+
+	if ((s64)len <= 0) {
+		fprintf(stderr, "Invalid length:%s\n", length_str);
+		return 1;
+	}
+
+	/* same to without specifying either of prefault and no-prefault */
+	if (only_prefault && no_prefault)
+		only_prefault = no_prefault = false;
+
+	for (i = 0; routines[i].name; i++) {
+		if (!strcmp(routines[i].name, routine))
+			break;
+	}
+	if (!routines[i].name) {
+		printf("Unknown routine:%s\n", routine);
+		printf("Available routines...\n");
+		for (i = 0; routines[i].name; i++) {
+			printf("\t%s ... %s\n",
+			       routines[i].name, routines[i].desc);
+		}
+		return 1;
+	}
+
+	if (bench_format == BENCH_FORMAT_DEFAULT)
+		printf("# Copying %s Bytes ...\n\n", length_str);
+
+	if (!only_prefault && !no_prefault) {
+		/* show both of results */
+		if (use_clock) {
+			result_clock[0] =
+				do_memset_clock(routines[i].fn, len, false);
+			result_clock[1] =
+				do_memset_clock(routines[i].fn, len, true);
+		} else {
+			result_bps[0] =
+				do_memset_gettimeofday(routines[i].fn,
+						len, false);
+			result_bps[1] =
+				do_memset_gettimeofday(routines[i].fn,
+						len, true);
+		}
+	} else {
+		if (use_clock) {
+			result_clock[pf] =
+				do_memset_clock(routines[i].fn,
+						len, only_prefault);
+		} else {
+			result_bps[pf] =
+				do_memset_gettimeofday(routines[i].fn,
+						len, only_prefault);
+		}
+	}
+
+	switch (bench_format) {
+	case BENCH_FORMAT_DEFAULT:
+		if (!only_prefault && !no_prefault) {
+			if (use_clock) {
+				printf(" %14lf Clock/Byte\n",
+					(double)result_clock[0]
+					/ (double)len);
+				printf(" %14lf Clock/Byte (with prefault)\n ",
+					(double)result_clock[1]
+					/ (double)len);
+			} else {
+				print_bps(result_bps[0]);
+				printf("\n");
+				print_bps(result_bps[1]);
+				printf(" (with prefault)\n");
+			}
+		} else {
+			if (use_clock) {
+				printf(" %14lf Clock/Byte",
+					(double)result_clock[pf]
+					/ (double)len);
+			} else
+				print_bps(result_bps[pf]);
+
+			printf("%s\n", only_prefault ? " (with prefault)" : "");
+		}
+		break;
+	case BENCH_FORMAT_SIMPLE:
+		if (!only_prefault && !no_prefault) {
+			if (use_clock) {
+				printf("%lf %lf\n",
+					(double)result_clock[0] / (double)len,
+					(double)result_clock[1] / (double)len);
+			} else {
+				printf("%lf %lf\n",
+					result_bps[0], result_bps[1]);
+			}
+		} else {
+			if (use_clock) {
+				printf("%lf\n", (double)result_clock[pf]
+					/ (double)len);
+			} else
+				printf("%lf\n", result_bps[pf]);
+		}
+		break;
+	default:
+		/* reaching this means there's some disaster: */
+		die("unknown format: %d\n", bench_format);
+		break;
+	}
+
+	return 0;
+}
diff --git a/tools/perf/builtin-bench.c b/tools/perf/builtin-bench.c
index fcb9626..b0e74ab 100644
--- a/tools/perf/builtin-bench.c
+++ b/tools/perf/builtin-bench.c
@@ -52,6 +52,9 @@ static struct bench_suite mem_suites[] = {
 	{ "memcpy",
 	  "Simple memory copy in various ways",
 	  bench_mem_memcpy },
+	{ "memset",
+	  "Simple memory set in various ways",
+	  bench_mem_memset },
 	suite_all,
 	{ NULL,
 	  NULL,
diff --git a/tools/perf/util/include/asm/dwarf2.h b/tools/perf/util/include/asm/dwarf2.h
index bb4198e..afe3819 100644
--- a/tools/perf/util/include/asm/dwarf2.h
+++ b/tools/perf/util/include/asm/dwarf2.h
@@ -2,10 +2,12 @@
 #ifndef PERF_DWARF2_H
 #define PERF_DWARF2_H
 
-/* dwarf2.h ... dummy header file for including arch/x86/lib/memcpy_64.S */
+/* dwarf2.h ... dummy header file for including arch/x86/lib/mem{cpy,set}_64.S */
 
 #define CFI_STARTPROC
 #define CFI_ENDPROC
+#define CFI_REMEMBER_STATE
+#define CFI_RESTORE_STATE
 
 #endif	/* PERF_DWARF2_H */
 
-- 
1.7.9.rc2.1.g69204


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 6/9] perf bench: Allow passing an iteration count to "bench mem mem{cpy,set}"
  2012-01-24 23:07 [GIT PULL 0/9] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (4 preceding siblings ...)
  2012-01-24 23:07 ` [PATCH 5/9] perf bench: Also allow measuring memset() Arnaldo Carvalho de Melo
@ 2012-01-24 23:07 ` Arnaldo Carvalho de Melo
  2012-01-24 23:07 ` [PATCH 7/9] perf tools: Fix broken build by defining _GNU_SOURCE in Makefile Arnaldo Carvalho de Melo
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-24 23:07 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Jan Beulich, Paul Mackerras, Peter Zijlstra,
	Jan Beulich, Arnaldo Carvalho de Melo

From: Jan Beulich <JBeulich@suse.com>

"perf stat ... perf bench mem mem..." is pretty meaningless when using
small block sizes (as the overhead of the invocation of each test run
basically hides the actual test result in the noise). Repeating the
actually interesting function's invocation a number of times allows the
results to become meaningful.

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/4F16D767020000780006D738@nat28.tlf.novell.com
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/bench/mem-memcpy.c |   11 +++++++++--
 tools/perf/bench/mem-memset.c |   11 +++++++++--
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/tools/perf/bench/mem-memcpy.c b/tools/perf/bench/mem-memcpy.c
index db82021..6ad2b1c 100644
--- a/tools/perf/bench/mem-memcpy.c
+++ b/tools/perf/bench/mem-memcpy.c
@@ -24,6 +24,7 @@
 
 static const char	*length_str	= "1MB";
 static const char	*routine	= "default";
+static int		iterations	= 1;
 static bool		use_clock;
 static int		clock_fd;
 static bool		only_prefault;
@@ -35,6 +36,8 @@ static const struct option options[] = {
 		    "available unit: B, MB, GB (upper and lower)"),
 	OPT_STRING('r', "routine", &routine, "default",
 		    "Specify routine to copy"),
+	OPT_INTEGER('i', "iterations", &iterations,
+		    "repeat memcpy() invocation this number of times"),
 	OPT_BOOLEAN('c', "clock", &use_clock,
 		    "Use CPU clock for measuring"),
 	OPT_BOOLEAN('o', "only-prefault", &only_prefault,
@@ -121,6 +124,7 @@ static u64 do_memcpy_clock(memcpy_t fn, size_t len, bool prefault)
 {
 	u64 clock_start = 0ULL, clock_end = 0ULL;
 	void *src = NULL, *dst = NULL;
+	int i;
 
 	alloc_mem(&src, &dst, len);
 
@@ -128,7 +132,8 @@ static u64 do_memcpy_clock(memcpy_t fn, size_t len, bool prefault)
 		fn(dst, src, len);
 
 	clock_start = get_clock();
-	fn(dst, src, len);
+	for (i = 0; i < iterations; ++i)
+		fn(dst, src, len);
 	clock_end = get_clock();
 
 	free(src);
@@ -140,6 +145,7 @@ static double do_memcpy_gettimeofday(memcpy_t fn, size_t len, bool prefault)
 {
 	struct timeval tv_start, tv_end, tv_diff;
 	void *src = NULL, *dst = NULL;
+	int i;
 
 	alloc_mem(&src, &dst, len);
 
@@ -147,7 +153,8 @@ static double do_memcpy_gettimeofday(memcpy_t fn, size_t len, bool prefault)
 		fn(dst, src, len);
 
 	BUG_ON(gettimeofday(&tv_start, NULL));
-	fn(dst, src, len);
+	for (i = 0; i < iterations; ++i)
+		fn(dst, src, len);
 	BUG_ON(gettimeofday(&tv_end, NULL));
 
 	timersub(&tv_end, &tv_start, &tv_diff);
diff --git a/tools/perf/bench/mem-memset.c b/tools/perf/bench/mem-memset.c
index 9c0c6f0..59d4933 100644
--- a/tools/perf/bench/mem-memset.c
+++ b/tools/perf/bench/mem-memset.c
@@ -24,6 +24,7 @@
 
 static const char	*length_str	= "1MB";
 static const char	*routine	= "default";
+static int		iterations	= 1;
 static bool		use_clock;
 static int		clock_fd;
 static bool		only_prefault;
@@ -35,6 +36,8 @@ static const struct option options[] = {
 		    "available unit: B, MB, GB (upper and lower)"),
 	OPT_STRING('r', "routine", &routine, "default",
 		    "Specify routine to copy"),
+	OPT_INTEGER('i', "iterations", &iterations,
+		    "repeat memset() invocation this number of times"),
 	OPT_BOOLEAN('c', "clock", &use_clock,
 		    "Use CPU clock for measuring"),
 	OPT_BOOLEAN('o', "only-prefault", &only_prefault,
@@ -117,6 +120,7 @@ static u64 do_memset_clock(memset_t fn, size_t len, bool prefault)
 {
 	u64 clock_start = 0ULL, clock_end = 0ULL;
 	void *dst = NULL;
+	int i;
 
 	alloc_mem(&dst, len);
 
@@ -124,7 +128,8 @@ static u64 do_memset_clock(memset_t fn, size_t len, bool prefault)
 		fn(dst, -1, len);
 
 	clock_start = get_clock();
-	fn(dst, 0, len);
+	for (i = 0; i < iterations; ++i)
+		fn(dst, i, len);
 	clock_end = get_clock();
 
 	free(dst);
@@ -135,6 +140,7 @@ static double do_memset_gettimeofday(memset_t fn, size_t len, bool prefault)
 {
 	struct timeval tv_start, tv_end, tv_diff;
 	void *dst = NULL;
+	int i;
 
 	alloc_mem(&dst, len);
 
@@ -142,7 +148,8 @@ static double do_memset_gettimeofday(memset_t fn, size_t len, bool prefault)
 		fn(dst, -1, len);
 
 	BUG_ON(gettimeofday(&tv_start, NULL));
-	fn(dst, 0, len);
+	for (i = 0; i < iterations; ++i)
+		fn(dst, i, len);
 	BUG_ON(gettimeofday(&tv_end, NULL));
 
 	timersub(&tv_end, &tv_start, &tv_diff);
-- 
1.7.9.rc2.1.g69204


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 7/9] perf tools: Fix broken build by defining _GNU_SOURCE in Makefile
  2012-01-24 23:07 [GIT PULL 0/9] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (5 preceding siblings ...)
  2012-01-24 23:07 ` [PATCH 6/9] perf bench: Allow passing an iteration count to "bench mem mem{cpy,set}" Arnaldo Carvalho de Melo
@ 2012-01-24 23:07 ` Arnaldo Carvalho de Melo
  2012-01-24 23:08 ` [PATCH 8/9] perf probe: Usability fixes Arnaldo Carvalho de Melo
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-24 23:07 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, David Daney, Joerg Roedel, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Arnaldo Carvalho de Melo

From: David Daney <david.daney@cavium.com>

When building on my Debian/mips system, util/util.c fails to build
because commit 1aed2671738785e8f5aea663a6fda91aa7ef59b5 (perf kvm: Do
guest-only counting by default) indirectly includes stdio.h before the
feature selection in util.h is done.  This prevents _GNU_SOURCE in
util.h from enabling the declaration of getline(), from now second
inclusion of stdio.h, and the build is broken.

There is another breakage in util/evsel.c caused by include ordering,
but I didn't fully track down the commit that caused it.

The root cause of all this is an inconsistent definition of _GNU_SOURCE,
so I move the definition into the Makefile so that it is passed to all
invocations of the compiler and used uniformly for all system header
files.  All other #define and #undef of _GNU_SOURCE are removed as they
cause conflicts with the definition passed to the compiler.

All the features.h definitions (_LARGEFILE64_SOURCE _FILE_OFFSET_BITS=64
and _GNU_SOURCE) are needed by the python glue code too, so they are
moved to BASIC_CFLAGS, and the misleading comments about BASIC_CFLAGS
are removed.

This gives me a clean build on x86_64 (fc12) and mips (Debian).

Cc: David Daney <david.daney@cavium.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Joerg Roedel <joerg.roedel@amd.com>
Cc: Namhyung Kim <namhyung.kim@lge.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1326836461-11952-1-git-send-email-ddaney.cavm@gmail.com
Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/Makefile                 |    7 ++-----
 tools/perf/builtin-probe.c          |    2 --
 tools/perf/util/probe-event.c       |    2 --
 tools/perf/util/symbol.c            |    1 -
 tools/perf/util/trace-event-parse.c |    3 +--
 tools/perf/util/ui/browsers/hists.c |    2 --
 tools/perf/util/ui/helpline.c       |    1 -
 tools/perf/util/util.h              |    1 -
 8 files changed, 3 insertions(+), 16 deletions(-)

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 599031a..d64f581 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -104,7 +104,7 @@ endif
 
 CFLAGS = -fno-omit-frame-pointer -ggdb3 -Wall -Wextra -std=gnu99 $(CFLAGS_WERROR) $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
 EXTLIBS = -lpthread -lrt -lelf -lm
-ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
 ALL_LDFLAGS = $(LDFLAGS)
 STRIP ?= strip
 
@@ -168,10 +168,7 @@ endif
 
 ### --- END CONFIGURATION SECTION ---
 
-# Those must not be GNU-specific; they are shared with perl/ which may
-# be built by a different compiler. (Note that this is an artifact now
-# but it still might be nice to keep that distinction.)
-BASIC_CFLAGS = -Iutil/include -Iarch/$(ARCH)/include
+BASIC_CFLAGS = -Iutil/include -Iarch/$(ARCH)/include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
 BASIC_LDFLAGS =
 
 # Guard against environment variables
diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
index 59d43ab..fb85661 100644
--- a/tools/perf/builtin-probe.c
+++ b/tools/perf/builtin-probe.c
@@ -20,7 +20,6 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  *
  */
-#define _GNU_SOURCE
 #include <sys/utsname.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -31,7 +30,6 @@
 #include <stdlib.h>
 #include <string.h>
 
-#undef _GNU_SOURCE
 #include "perf.h"
 #include "builtin.h"
 #include "util/util.h"
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index eb25900..29cb654 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -19,7 +19,6 @@
  *
  */
 
-#define _GNU_SOURCE
 #include <sys/utsname.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -33,7 +32,6 @@
 #include <limits.h>
 #include <elf.h>
 
-#undef _GNU_SOURCE
 #include "util.h"
 #include "event.h"
 #include "string.h"
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 215d50f..0975438 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1,4 +1,3 @@
-#define _GNU_SOURCE
 #include <ctype.h>
 #include <dirent.h>
 #include <errno.h>
diff --git a/tools/perf/util/trace-event-parse.c b/tools/perf/util/trace-event-parse.c
index 6c164dc..1a8d4dc 100644
--- a/tools/perf/util/trace-event-parse.c
+++ b/tools/perf/util/trace-event-parse.c
@@ -21,14 +21,13 @@
  *  The parts for function graph printing was taken and modified from the
  *  Linux Kernel that were written by Frederic Weisbecker.
  */
-#define _GNU_SOURCE
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
 #include <errno.h>
 
-#undef _GNU_SOURCE
 #include "../perf.h"
 #include "util.h"
 #include "trace-event.h"
diff --git a/tools/perf/util/ui/browsers/hists.c b/tools/perf/util/ui/browsers/hists.c
index 7b6669d..bfba049 100644
--- a/tools/perf/util/ui/browsers/hists.c
+++ b/tools/perf/util/ui/browsers/hists.c
@@ -1,6 +1,4 @@
-#define _GNU_SOURCE
 #include <stdio.h>
-#undef _GNU_SOURCE
 #include "../libslang.h"
 #include <stdlib.h>
 #include <string.h>
diff --git a/tools/perf/util/ui/helpline.c b/tools/perf/util/ui/helpline.c
index 6ef3c56..4f48f59 100644
--- a/tools/perf/util/ui/helpline.c
+++ b/tools/perf/util/ui/helpline.c
@@ -1,4 +1,3 @@
-#define _GNU_SOURCE
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
index 061dbf8..232d17e 100644
--- a/tools/perf/util/util.h
+++ b/tools/perf/util/util.h
@@ -40,7 +40,6 @@
 #define decimal_length(x)	((int)(sizeof(x) * 2.56 + 0.5) + 1)
 
 #define _ALL_SOURCE 1
-#define _GNU_SOURCE 1
 #define _BSD_SOURCE 1
 #define HAS_BOOL
 
-- 
1.7.9.rc2.1.g69204


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 8/9] perf probe: Usability fixes
  2012-01-24 23:07 [GIT PULL 0/9] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (6 preceding siblings ...)
  2012-01-24 23:07 ` [PATCH 7/9] perf tools: Fix broken build by defining _GNU_SOURCE in Makefile Arnaldo Carvalho de Melo
@ 2012-01-24 23:08 ` Arnaldo Carvalho de Melo
  2012-01-24 23:08 ` [PATCH 9/9] perf tools: Fix strlen() bug in perf_event__synthesize_event_type() Arnaldo Carvalho de Melo
  2012-01-26 11:16 ` [GIT PULL 0/9] perf/core improvements and fixes Ingo Molnar
  9 siblings, 0 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-24 23:08 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Srikar Dronamraju, Masami Hiramatsu,
	Arnaldo Carvalho de Melo

From: Srikar Dronamraju <srikar@linux.vnet.ibm.com>

Ingo pointed out few perf probe usability related errors during his
review of uprobes.

Since these issues are independent of uprobes, fixing them in a separate
patch.

Suggested-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Link: http://lkml.kernel.org/r/20120120121354.GL15447@linux.vnet.ibm.com
Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/probe-event.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 29cb654..b9bbdd2 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -1729,7 +1729,7 @@ static int __add_probe_trace_events(struct perf_probe_event *pev,
 	}
 
 	ret = 0;
-	printf("Add new event%s\n", (ntevs > 1) ? "s:" : ":");
+	printf("Added new event%s\n", (ntevs > 1) ? "s:" : ":");
 	for (i = 0; i < ntevs; i++) {
 		tev = &tevs[i];
 		if (pev->event)
@@ -1784,7 +1784,7 @@ static int __add_probe_trace_events(struct perf_probe_event *pev,
 
 	if (ret >= 0) {
 		/* Show how to use the event. */
-		printf("\nYou can now use it on all perf tools, such as:\n\n");
+		printf("\nYou can now use it in all perf tools, such as:\n\n");
 		printf("\tperf record -e %s:%s -aR sleep 1\n\n", tev->group,
 			 tev->event);
 	}
@@ -1959,7 +1959,7 @@ static int __del_trace_probe_event(int fd, struct str_node *ent)
 		goto error;
 	}
 
-	printf("Remove event: %s\n", ent->s);
+	printf("Removed event: %s\n", ent->s);
 	return 0;
 error:
 	pr_warning("Failed to delete event: %s\n", strerror(-ret));
-- 
1.7.9.rc2.1.g69204


^ permalink raw reply	[flat|nested] 47+ messages in thread

* [PATCH 9/9] perf tools: Fix strlen() bug in perf_event__synthesize_event_type()
  2012-01-24 23:07 [GIT PULL 0/9] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (7 preceding siblings ...)
  2012-01-24 23:08 ` [PATCH 8/9] perf probe: Usability fixes Arnaldo Carvalho de Melo
@ 2012-01-24 23:08 ` Arnaldo Carvalho de Melo
  2012-01-26 11:16 ` [GIT PULL 0/9] perf/core improvements and fixes Ingo Molnar
  9 siblings, 0 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-24 23:08 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Stephane Eranian, David Ahern, Peter Zijlstra,
	Arnaldo Carvalho de Melo

From: Stephane Eranian <eranian@google.com>

The event_type record has a max length for the event name.

It's called MAX_EVENT_NAME.

The name may be truncated to fit the max length. But the header.size still
reflects the original name length. If that length is > MAX_EVENT_NAME, then the
header.size field is bogus. Fix this by using the length of the name after the
potential truncation.

Cc: David Ahern <dsahern@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20120120094912.GA4882@quad
Signed-off-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/header.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 3e7e0b0..ecd7f4d 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2105,7 +2105,7 @@ int perf_event__synthesize_event_type(struct perf_tool *tool,
 	strncpy(ev.event_type.event_type.name, name, MAX_EVENT_NAME - 1);
 
 	ev.event_type.header.type = PERF_RECORD_HEADER_EVENT_TYPE;
-	size = strlen(name);
+	size = strlen(ev.event_type.event_type.name);
 	size = ALIGN(size, sizeof(u64));
 	ev.event_type.header.size = sizeof(ev.event_type) -
 		(sizeof(ev.event_type.event_type.name) - size);
-- 
1.7.9.rc2.1.g69204


^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-01-24 23:07 [GIT PULL 0/9] perf/core improvements and fixes Arnaldo Carvalho de Melo
                   ` (8 preceding siblings ...)
  2012-01-24 23:08 ` [PATCH 9/9] perf tools: Fix strlen() bug in perf_event__synthesize_event_type() Arnaldo Carvalho de Melo
@ 2012-01-26 11:16 ` Ingo Molnar
  2012-01-26 12:22   ` Fixing perf top --user shortcoming was: " Arnaldo Carvalho de Melo
  9 siblings, 1 reply; 47+ messages in thread
From: Ingo Molnar @ 2012-01-26 11:16 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, David Ahern, David Daney, Frederic Weisbecker,
	Jan Beulich, Joerg Roedel, Masami Hiramatsu, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Srikar Dronamraju,
	Stephane Eranian, arnaldo.melo


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> Hi Ingo,
> 
> 	This is a signed tag, please lemme know if everything went well.
> 
> 	The --uid feature works for root, we still need to 
> sort out that paranoia with some threads owned by a user that 
> prevents 'perf --uid non-root-user' to work for 
> 'non-root-user'.

Just wondering what detail causes that failure - the whole point 
of --uid mingo would be to enable nonprivileged users to do 
'session wide' profiling, *especially* if paranoia is high.

So what does --uid do which perf record --pid 1234 wouldnt 
already do? By all means --uid ought to be a fancy way of doing 
a whole bunch of perf record --pid 1234 profiling sessions, at 
once.

[ Btw, we should probably alias --user to --uid as well, as that 
  might be the intuitive thing people would typically use? ]

> 	http://git.kernel.org/?p=linux/kernel/git/acme/linux.git;a=tag;h=ce9600c4c664ce7f97e8aa5e756b0b4ea5b017c7
> looks ok to me, need just to improve on the commit log message, I'll get
> used to it :-)
> 
> - Arnaldo
> 
> The following changes since commit 172d1b0b73256551f100fc00c69e356d047103f5:
> 
>   perf tools: Fix compile error on x86_64 Ubuntu (2012-01-08 13:34:55 -0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux perf-core-for-mingo
> 
> for you to fetch changes up to f8f4b2872295dca88339ec0c403b2217b1197353:
> 
>   perf tools: Fix strlen() bug in perf_event__synthesize_event_type() (2012-01-24 20:31:34 -0200)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes
> 
> ----------------------------------------------------------------

Anyway, pulled, thanks a lot Arnaldo!

One detail: don't we want some of these fixes cherry-picked into 
perf/urgent as well?

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Fixing perf top --user shortcoming was: Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-01-26 11:16 ` [GIT PULL 0/9] perf/core improvements and fixes Ingo Molnar
@ 2012-01-26 12:22   ` Arnaldo Carvalho de Melo
  2012-01-26 13:09     ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-26 12:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, David Ahern, David Daney, Frederic Weisbecker,
	Jan Beulich, Joerg Roedel, Masami Hiramatsu, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Srikar Dronamraju,
	Stephane Eranian

Em Thu, Jan 26, 2012 at 12:16:48PM +0100, Ingo Molnar escreveu:
> * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> > 	The --uid feature works for root, we still need to 
> > sort out that paranoia with some threads owned by a user that 
> > prevents 'perf --uid non-root-user' to work for 
> > 'non-root-user'.

> Just wondering what detail causes that failure - the whole point 
> of --uid mingo would be to enable nonprivileged users to do 
> 'session wide' profiling, *especially* if paranoia is high.

> So what does --uid do which perf record --pid 1234 wouldnt 
> already do? By all means --uid ought to be a fancy way of doing 
> a whole bunch of perf record --pid 1234 profiling sessions, at 
> once.

I stopped at the kernel, i.e. used what can be done with what is
available from the kernel right now, the diagnosis was sent in private,
but boils down to:

+++ b/kernel/events/core.c
@@ -2636,7 +2636,8 @@ find_lively_task_by_vpid(pid_t vpid)
 
 	/* Reuse ptrace permission checks for now. */
 	err = -EACCES;
-	if (!ptrace_may_access(task, PTRACE_MODE_READ))
+	if (perf_paranoid_tracepoint_raw() &&
+	    !ptrace_may_access(task, PTRACE_MODE_READ))
 		goto errout;
 
 	return task;

ptrace_may_access(task, PTRACE_MODE_READ) fails for some tasks owned by
the user because, IIRC, in __ptrace_may_access:

        const struct cred *cred = current_cred(), *tcred;

        /* May we inspect the given task?
         * This check is used both for attaching with ptrace
         * and for allowing access to sensitive information in /proc.
         *
         * ptrace_attach denies several cases that /proc allows
         * because setting up the necessary parent/child relationship
         * or halting the specified task is impossible.
         */
        int dumpable = 0;
<SNIP>
        if (!dumpable && !task_ns_capable(task, CAP_SYS_PTRACE))
                return -EPERM;

fails.

The patch above is not any kind of solution, just a way to make it work
when paranoia is set to -1 (thus perf_paranoid_tracepoint_raw in the
POC) and show where the problem lies, ideas? Peter?

> [ Btw, we should probably alias --user to --uid as well, as that 
>   might be the intuitive thing people would typically use? ]

I'll do that
 
> Anyway, pulled, thanks a lot Arnaldo!
> 
> One detail: don't we want some of these fixes cherry-picked into 
> perf/urgent as well?

Yeah, I'll prepare a perf-urgent-for-ingo signed tag.
 
> Thanks,
> 
> 	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Fixing perf top --user shortcoming was: Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-01-26 12:22   ` Fixing perf top --user shortcoming was: " Arnaldo Carvalho de Melo
@ 2012-01-26 13:09     ` Ingo Molnar
  2012-01-26 14:30       ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 47+ messages in thread
From: Ingo Molnar @ 2012-01-26 13:09 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, David Ahern, David Daney, Frederic Weisbecker,
	Jan Beulich, Joerg Roedel, Masami Hiramatsu, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Srikar Dronamraju,
	Stephane Eranian


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> > So what does --uid do which perf record --pid 1234 wouldnt 
> > already do? By all means --uid ought to be a fancy way of 
> > doing a whole bunch of perf record --pid 1234 profiling 
> > sessions, at once.
> 
> I stopped at the kernel, i.e. used what can be done with what 
> is available from the kernel right now, the diagnosis was sent 
> in private, but boils down to:
> 
> +++ b/kernel/events/core.c
> @@ -2636,7 +2636,8 @@ find_lively_task_by_vpid(pid_t vpid)
>  
>  	/* Reuse ptrace permission checks for now. */
>  	err = -EACCES;
> -	if (!ptrace_may_access(task, PTRACE_MODE_READ))
> +	if (perf_paranoid_tracepoint_raw() &&
> +	    !ptrace_may_access(task, PTRACE_MODE_READ))
>  		goto errout;
>  
>  	return task;
> 
> ptrace_may_access(task, PTRACE_MODE_READ) fails for some tasks 
> owned by the user because, IIRC, in __ptrace_may_access:

Which tasks are these, are they privileged in any sense?

If yes and if most of the 'real' tasks a user have can be 
profiled just fine then i think we should just skip the 
privileged tasks and not abort the profiling session?

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Fixing perf top --user shortcoming was: Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-01-26 13:09     ` Ingo Molnar
@ 2012-01-26 14:30       ` Arnaldo Carvalho de Melo
  2012-01-26 18:32         ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-26 14:30 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, David Ahern, David Daney, Frederic Weisbecker,
	Jan Beulich, Joerg Roedel, Masami Hiramatsu, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Srikar Dronamraju,
	Stephane Eranian

Em Thu, Jan 26, 2012 at 02:09:19PM +0100, Ingo Molnar escreveu:
> * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> > > So what does --uid do which perf record --pid 1234 wouldnt 
> > > already do? By all means --uid ought to be a fancy way of 
> > > doing a whole bunch of perf record --pid 1234 profiling 
> > > sessions, at once.

> > I stopped at the kernel, i.e. used what can be done with what 
> > is available from the kernel right now, the diagnosis was sent 
> > in private, but boils down to:

> > +++ b/kernel/events/core.c
> > @@ -2636,7 +2636,8 @@ find_lively_task_by_vpid(pid_t vpid)
> >  	/* Reuse ptrace permission checks for now. */
> >  	err = -EACCES;
> > -	if (!ptrace_may_access(task, PTRACE_MODE_READ))
> > +	if (perf_paranoid_tracepoint_raw() &&
> > +	    !ptrace_may_access(task, PTRACE_MODE_READ))
> >  		goto errout;
> >  	return task;

> > ptrace_may_access(task, PTRACE_MODE_READ) fails for some tasks 
> > owned by the user because, IIRC, in __ptrace_may_access:

> Which tasks are these, are they privileged in any sense?

IIRC one of them was a child of sshd, that runs as root and then changes
the child ownership to the user logging in.

I'll continue investigation but probably for now the first thing to do
is to just remove them from the thread_map when they return -EPERM.
 
> If yes and if most of the 'real' tasks a user have can be 
> profiled just fine then i think we should just skip the 
> privileged tasks and not abort the profiling session?

Yeah, that can be done, while debugging I'll emit a warning with the
resulting thread_map of "special tasks" to figure out what makes them
special.

- Arnaldo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Fixing perf top --user shortcoming was: Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-01-26 14:30       ` Arnaldo Carvalho de Melo
@ 2012-01-26 18:32         ` Ingo Molnar
  2012-01-26 19:24           ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 47+ messages in thread
From: Ingo Molnar @ 2012-01-26 18:32 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, David Ahern, David Daney, Frederic Weisbecker,
	Jan Beulich, Joerg Roedel, Masami Hiramatsu, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Srikar Dronamraju,
	Stephane Eranian


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> > > ptrace_may_access(task, PTRACE_MODE_READ) fails for some 
> > > tasks owned by the user because, IIRC, in 
> > > __ptrace_may_access:
> 
> > Which tasks are these, are they privileged in any sense?
> 
> IIRC one of them was a child of sshd, that runs as root and 
> then changes the child ownership to the user logging in.

It's probably privileged then - or at least not sufficiently 
deprivileged.

Skipping them ought to be the right solution - it's not like 
such tasks tend to create a lot of overhead worth profiling. 
They are also not debuggable via gdb so they are not part of the 
user's development session and such.

> I'll continue investigation but probably for now the first 
> thing to do is to just remove them from the thread_map when 
> they return -EPERM.

Yeah. Maybe warn about them in verbose mode or such.

> > If yes and if most of the 'real' tasks a user have can be 
> > profiled just fine then i think we should just skip the 
> > privileged tasks and not abort the profiling session?
> 
> Yeah, that can be done, while debugging I'll emit a warning 
> with the resulting thread_map of "special tasks" to figure out 
> what makes them special.

Ok, sounds great!

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Fixing perf top --user shortcoming was: Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-01-26 18:32         ` Ingo Molnar
@ 2012-01-26 19:24           ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-01-26 19:24 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, David Ahern, David Daney, Frederic Weisbecker,
	Jan Beulich, Joerg Roedel, Masami Hiramatsu, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Srikar Dronamraju,
	Stephane Eranian

Em Thu, Jan 26, 2012 at 07:32:23PM +0100, Ingo Molnar escreveu:
> 
> * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> 
> > > > ptrace_may_access(task, PTRACE_MODE_READ) fails for some 
> > > > tasks owned by the user because, IIRC, in 
> > > > __ptrace_may_access:
> > 
> > > Which tasks are these, are they privileged in any sense?
> > 
> > IIRC one of them was a child of sshd, that runs as root and 
> > then changes the child ownership to the user logging in.
> 
> It's probably privileged then - or at least not sufficiently 
> deprivileged.
> 
> Skipping them ought to be the right solution - it's not like 
> such tasks tend to create a lot of overhead worth profiling. 
> They are also not debuggable via gdb so they are not part of the 
> user's development session and such.

Least convoluted way seems to be just to try to call sys_perf_event_open
on then when building the thread list in thread_new__by_uid(), will try
that after soccer :-)

/me vanishes

- Arnaldo

> > I'll continue investigation but probably for now the first 
> > thing to do is to just remove them from the thread_map when 
> > they return -EPERM.
> 
> Yeah. Maybe warn about them in verbose mode or such.

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2017-04-01  2:10 Arnaldo Carvalho de Melo
@ 2017-04-01 10:44 ` Ingo Molnar
  0 siblings, 0 replies; 47+ messages in thread
From: Ingo Molnar @ 2017-04-01 10:44 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Alexander Shishkin,
	Alexis Berlemont, Al Viro, Colin King, David Ahern,
	David Howells, Hemant Kumar, Jan Stancek, Jiri Olsa, Kan Liang,
	kernel-janitors, Krister Johansen, Luis Claudio Gonçalves,
	Masami Hiramatsu, Michael Ellerman, Namhyung Kim, Naveen N . Rao,
	Peter Zijlstra, Ravi Bangoria, Wang Nan, Yao Jin,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> Test results at the end of this message, as usual.
> 
> The following changes since commit 3906a13a6b4e78fbc0def03a808f091f0dff1b44:
> 
>   Merge tag 'perf-core-for-mingo-4.12-20170327' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-03-28 07:44:43 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.12-20170331
> 
> for you to fetch changes up to fd5cead23f54697310bd565aa2a23ae5128080a0:
> 
>   perf trace: Beautify statx syscall 'flag' and 'mask' arguments (2017-03-31 14:42:31 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> New features:
> 
> - Beautify the statx syscall arguments in 'perf trace' (Arnaldo Carvalho de Melo)
> 
>     e.g.:
> 
>   System wide strace like session:
> 
>   # trace -e statx
>    16612.967 ( 0.028 ms): statx/4562 statx(dfd: CWD, filename: /tmp/statx, flags: SYMLINK_NOFOLLOW, mask: TYPE|MODE|NLINK|UID|GID|ATIME|MTIME|CTIME|INO|SIZE|BLOCKS|BTIME, buffer: 0x7ffef195d660) = 0
>    36050.891 ( 0.007 ms): statx/4576 statx(dfd: CWD, filename: /etc/passwd, flags: SYMLINK_NOFOLLOW|STATX_DONT_SYNC, mask: BTIME, buffer: 0x7ffda9bf50f0) = 0
>   ^C#
> 
> User visible:
> 
> - Handle unpaired raw_syscalls:sys_exit events in 'perf trace', i.e. we
>   shouldn't try to calculate duration or print the timestamp for a missing
>   matching raw_syscalls:sys_enter (Arnaldo Carvalho de Melo)
> 
> - Do not print "cycles: 0" in perf report LBR lines in platforms not
>   supporting 'cycles', such as Intel's Broadwell (Jin Yao)
> 
> - Handle missing $HOME env var (Jiri Olsa)
> 
> - Map 8-bit registers (al, bl, etc), not supported in uprobes_events, to
>   the next best thing (ax, bx, etc) supported (Ravi Bangoria)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (4):
>       perf tools: Remove support for command aliases
>       perf trace: Handle unpaired raw_syscalls:sys_exit event
>       tools include uapi: Grab copies of stat.h and fcntl.h
>       perf trace: Beautify statx syscall 'flag' and 'mask' arguments
> 
> Colin Ian King (1):
>       perf utils: Fix spelling mistake: "Invalud" -> "Invalid"
> 
> Jin Yao (1):
>       perf report: Drop cycles 0 for LBR print
> 
> Jiri Olsa (1):
>       perf tools: Do not fail in case of empty HOME env variable
> 
> Ravi Bangoria (2):
>       perf/sdt/x86: Add renaming logic for (missing) 8 bit registers
>       perf/sdt/x86: Move OP parser to tools/perf/arch/x86/
> 
>  tools/include/linux/types.h                       |   1 +
>  tools/include/uapi/linux/fcntl.h                  |  72 +++++++++
>  tools/include/uapi/linux/stat.h                   | 176 ++++++++++++++++++++
>  tools/perf/Build                                  |   1 +
>  tools/perf/MANIFEST                               |   2 +
>  tools/perf/arch/x86/entry/syscalls/syscall_64.tbl |   1 +
>  tools/perf/arch/x86/util/perf_regs.c              | 187 ++++++++++++++++++----
>  tools/perf/builtin-help.c                         |  13 --
>  tools/perf/builtin-trace.c                        |  57 ++++---
>  tools/perf/check-headers.sh                       |   2 +
>  tools/perf/perf.c                                 |  97 +----------
>  tools/perf/trace/beauty/Build                     |   1 +
>  tools/perf/trace/beauty/beauty.h                  |  24 +++
>  tools/perf/trace/beauty/statx.c                   |  72 +++++++++
>  tools/perf/util/Build                             |   1 -
>  tools/perf/util/alias.c                           |  78 ---------
>  tools/perf/util/cache.h                           |   1 -
>  tools/perf/util/callchain.c                       | 111 ++++++++-----
>  tools/perf/util/config.c                          |  54 ++++---
>  tools/perf/util/help-unknown-cmd.c                |   8 +-
>  tools/perf/util/hist.c                            |   2 +-
>  tools/perf/util/perf_regs.c                       |   6 +-
>  tools/perf/util/perf_regs.h                       |  11 +-
>  tools/perf/util/probe-file.c                      | 132 +++++----------
>  24 files changed, 707 insertions(+), 403 deletions(-)
>  create mode 100644 tools/include/uapi/linux/fcntl.h
>  create mode 100644 tools/include/uapi/linux/stat.h
>  create mode 100644 tools/perf/trace/beauty/Build
>  create mode 100644 tools/perf/trace/beauty/beauty.h
>  create mode 100644 tools/perf/trace/beauty/statx.c
>  delete mode 100644 tools/perf/util/alias.c

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [GIT PULL 0/9] perf/core improvements and fixes
@ 2017-04-01  2:10 Arnaldo Carvalho de Melo
  2017-04-01 10:44 ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-04-01  2:10 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexander Shishkin, Alexis Berlemont, Al Viro, Colin King,
	David Ahern, David Howells, Hemant Kumar, Jan Stancek, Jiri Olsa,
	Kan Liang, kernel-janitors, Krister Johansen,
	Luis Claudio Gonçalves, Masami Hiramatsu, Michael Ellerman,
	Namhyung Kim, Naveen N . Rao, Peter Zijlstra, Ravi Bangoria,
	Wang Nan, Yao Jin, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

Test results at the end of this message, as usual.

The following changes since commit 3906a13a6b4e78fbc0def03a808f091f0dff1b44:

  Merge tag 'perf-core-for-mingo-4.12-20170327' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-03-28 07:44:43 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.12-20170331

for you to fetch changes up to fd5cead23f54697310bd565aa2a23ae5128080a0:

  perf trace: Beautify statx syscall 'flag' and 'mask' arguments (2017-03-31 14:42:31 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

New features:

- Beautify the statx syscall arguments in 'perf trace' (Arnaldo Carvalho de Melo)

    e.g.:

  System wide strace like session:

  # trace -e statx
   16612.967 ( 0.028 ms): statx/4562 statx(dfd: CWD, filename: /tmp/statx, flags: SYMLINK_NOFOLLOW, mask: TYPE|MODE|NLINK|UID|GID|ATIME|MTIME|CTIME|INO|SIZE|BLOCKS|BTIME, buffer: 0x7ffef195d660) = 0
   36050.891 ( 0.007 ms): statx/4576 statx(dfd: CWD, filename: /etc/passwd, flags: SYMLINK_NOFOLLOW|STATX_DONT_SYNC, mask: BTIME, buffer: 0x7ffda9bf50f0) = 0
  ^C#

User visible:

- Handle unpaired raw_syscalls:sys_exit events in 'perf trace', i.e. we
  shouldn't try to calculate duration or print the timestamp for a missing
  matching raw_syscalls:sys_enter (Arnaldo Carvalho de Melo)

- Do not print "cycles: 0" in perf report LBR lines in platforms not
  supporting 'cycles', such as Intel's Broadwell (Jin Yao)

- Handle missing $HOME env var (Jiri Olsa)

- Map 8-bit registers (al, bl, etc), not supported in uprobes_events, to
  the next best thing (ax, bx, etc) supported (Ravi Bangoria)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (4):
      perf tools: Remove support for command aliases
      perf trace: Handle unpaired raw_syscalls:sys_exit event
      tools include uapi: Grab copies of stat.h and fcntl.h
      perf trace: Beautify statx syscall 'flag' and 'mask' arguments

Colin Ian King (1):
      perf utils: Fix spelling mistake: "Invalud" -> "Invalid"

Jin Yao (1):
      perf report: Drop cycles 0 for LBR print

Jiri Olsa (1):
      perf tools: Do not fail in case of empty HOME env variable

Ravi Bangoria (2):
      perf/sdt/x86: Add renaming logic for (missing) 8 bit registers
      perf/sdt/x86: Move OP parser to tools/perf/arch/x86/

 tools/include/linux/types.h                       |   1 +
 tools/include/uapi/linux/fcntl.h                  |  72 +++++++++
 tools/include/uapi/linux/stat.h                   | 176 ++++++++++++++++++++
 tools/perf/Build                                  |   1 +
 tools/perf/MANIFEST                               |   2 +
 tools/perf/arch/x86/entry/syscalls/syscall_64.tbl |   1 +
 tools/perf/arch/x86/util/perf_regs.c              | 187 ++++++++++++++++++----
 tools/perf/builtin-help.c                         |  13 --
 tools/perf/builtin-trace.c                        |  57 ++++---
 tools/perf/check-headers.sh                       |   2 +
 tools/perf/perf.c                                 |  97 +----------
 tools/perf/trace/beauty/Build                     |   1 +
 tools/perf/trace/beauty/beauty.h                  |  24 +++
 tools/perf/trace/beauty/statx.c                   |  72 +++++++++
 tools/perf/util/Build                             |   1 -
 tools/perf/util/alias.c                           |  78 ---------
 tools/perf/util/cache.h                           |   1 -
 tools/perf/util/callchain.c                       | 111 ++++++++-----
 tools/perf/util/config.c                          |  54 ++++---
 tools/perf/util/help-unknown-cmd.c                |   8 +-
 tools/perf/util/hist.c                            |   2 +-
 tools/perf/util/perf_regs.c                       |   6 +-
 tools/perf/util/perf_regs.h                       |  11 +-
 tools/perf/util/probe-file.c                      | 132 +++++----------
 24 files changed, 707 insertions(+), 403 deletions(-)
 create mode 100644 tools/include/uapi/linux/fcntl.h
 create mode 100644 tools/include/uapi/linux/stat.h
 create mode 100644 tools/perf/trace/beauty/Build
 create mode 100644 tools/perf/trace/beauty/beauty.h
 create mode 100644 tools/perf/trace/beauty/statx.c
 delete mode 100644 tools/perf/util/alias.c

Test results:

The first ones are container (docker) based builds of tools/perf with and
without libelf support, objtool where it is supported and samples/bpf/, ditto.
Where clang is available, it is also used to build perf with/without libelf.

For this specific pull request the samples/bpf/ was disabled, as 'make headers_install'
is failing with the following error, in this case in fedora:rawhide:

    INSTALL usr/include/uapi/ (0 file)
  /git/linux/scripts/Makefile.headersinst:62: *** Missing generated UAPI file ./arch/x86/include/generated/uapi/asm/unistd_32.h.  Stop.
  make[1]: *** [/git/linux/Makefile:1151: headers_install] Error 2
  make[1]: Leaving directory '/tmp/build/linux'
  make: *** [Makefile:152: sub-make] Error 2
  make: Leaving directory '/git/linux'

I'll investigate later, perf and objtool builds just fine, with clang and gcc.

Several are cross builds, the ones with -x-ARCH, and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.

The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.

Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.

  # dm
   1 alpine:3.4: Ok
   2 alpine:3.5: Ok
   3 alpine:edge: Ok
   4 android-ndk:r12b-arm: Ok
   5 archlinux:latest: Ok
   6 centos:5: Ok
   7 centos:6: Ok
   8 centos:7: Ok
   9 debian:7: Ok
  10 debian:8: Ok
  11 debian:9: Ok
  12 debian:experimental: Ok
  13 debian:experimental-x-arm64: Ok
  14 debian:experimental-x-mips: Ok
  15 debian:experimental-x-mips64: Ok
  16 debian:experimental-x-mipsel: Ok
  17 fedora:20: Ok
  18 fedora:21: Ok
  19 fedora:22: Ok
  20 fedora:23: Ok
  21 fedora:24: Ok
  22 fedora:24-x-ARC-uClibc: Ok
  23 fedora:25: Ok
  24 fedora:rawhide: Ok
  25 mageia:5: Ok
  26 opensuse:13.2: Ok
  27 opensuse:42.1: Ok
  28 opensuse:tumbleweed: Ok
  29 ubuntu:12.04.5: Ok
  30 ubuntu:14.04.4: Ok
  31 ubuntu:14.04.4-x-linaro-arm64: Ok
  32 ubuntu:15.10: Ok
  33 ubuntu:16.04: Ok
  34 ubuntu:16.04-x-arm: Ok
  35 ubuntu:16.04-x-arm64: Ok
  36 ubuntu:16.04-x-powerpc: Ok
  37 ubuntu:16.04-x-powerpc64: Ok
  38 ubuntu:16.04-x-s390: Ok
  39 ubuntu:16.10: Ok
  40 ubuntu:17.04: Ok
  #
 
  # uname -a
  Linux jouet 4.11.0-rc2+ #5 SMP Mon Mar 20 18:12:29 -03 2017 x86_64 x86_64 x86_64 GNU/Linux
  # 'perf test tsc' already fixed by peterz in tip
  # perf test
   1: vmlinux symtab matches kallsyms            : Ok
   2: Detect openat syscall event                : Ok
   3: Detect openat syscall event on all cpus    : Ok
   4: Read samples using the mmap interface      : Ok
   5: Parse event definition strings             : Ok
   6: Simple expression parser                   : Ok
   7: PERF_RECORD_* events & perf_sample fields  : Ok
   8: Parse perf pmu format                      : Ok
   9: DSO data read                              : Ok
  10: DSO data cache                             : Ok
  11: DSO data reopen                            : Ok
  12: Roundtrip evsel->name                      : Ok
  13: Parse sched tracepoints fields             : Ok
  14: syscalls:sys_enter_openat event fields     : Ok
  15: Setup struct perf_event_attr               : Ok
  16: Match and link multiple hists              : Ok
  17: 'import perf' in python                    : Ok
  18: Breakpoint overflow signal handler         : Ok
  19: Breakpoint overflow sampling               : Ok
  20: Number of exit events of a simple workload : Ok
  21: Software clock events period values        : Ok
  22: Object code reading                        : Ok
  23: Sample parsing                             : Ok
  24: Use a dummy software event to keep tracking: Ok
  25: Parse with no sample_id_all bit set        : Ok
  26: Filter hist entries                        : Ok
  27: Lookup mmap thread                         : Ok
  28: Share thread mg                            : Ok
  29: Sort output of hist entries                : Ok
  30: Cumulate child hist entries                : Ok
  31: Track with sched_switch                    : Ok
  32: Filter fds with revents mask in a fdarray  : Ok
  33: Add fd to a fdarray, making it autogrow    : Ok
  34: kmod_path__parse                           : Ok
  35: Thread map                                 : Ok
  36: LLVM search and compile                    :
  36.1: Basic BPF llvm compile                    : Ok
  36.2: kbuild searching                          : Ok
  36.3: Compile source for BPF prologue generation: Ok
  36.4: Compile source for BPF relocation         : Ok
  37: Session topology                           : Ok
  38: BPF filter                                 :
  38.1: Basic BPF filtering                      : Ok
  38.2: BPF pinning                              : Ok
  38.3: BPF prologue generation                  : Ok
  38.4: BPF relocation checker                   : Ok
  39: Synthesize thread map                      : Ok
  40: Remove thread map                          : Ok
  41: Synthesize cpu map                         : Ok
  42: Synthesize stat config                     : Ok
  43: Synthesize stat                            : Ok
  44: Synthesize stat round                      : Ok
  45: Synthesize attr update                     : Ok
  46: Event times                                : Ok
  47: Read backward ring buffer                  : Ok
  48: Print cpu map                              : Ok
  49: Probe SDT events                           : Ok
  50: is_printable_array                         : Ok
  51: Print bitmap                               : Ok
  52: perf hooks                                 : Ok
  53: builtin clang support                      : Skip (not compiled in)
  54: unit_number__scnprintf                     : Ok
  55: x86 rdpmc                                  : Ok
  56: Convert perf time to TSC                   : FAILED!
  57: DWARF unwind                               : Ok
  58: x86 instruction decoder - new instructions : Ok
  59: Intel cqm nmi context read                 : Skip

  $ make -C tools/perf build-test
  make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
                make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
                make_no_gtk2_O: make NO_GTK2=1
                make_no_newt_O: make NO_NEWT=1
                  make_debug_O: make DEBUG=1
           make_no_backtrace_O: make NO_BACKTRACE=1
         make_with_clangllvm_O: make LIBCLANGLLVM=1
                   make_tags_O: make tags
            make_no_demangle_O: make NO_DEMANGLE=1
            make_install_bin_O: make install-bin
           make_no_libpython_O: make NO_LIBPYTHON=1
               make_no_slang_O: make NO_SLANG=1
            make_no_auxtrace_O: make NO_AUXTRACE=1
       make_util_pmu_bison_o_O: make util/pmu-bison.o
                  make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
             make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
              make_no_libbpf_O: make NO_LIBBPF=1
        make_with_babeltrace_O: make LIBBABELTRACE=1
             make_util_map_o_O: make util/map.o
                 make_static_O: make LDFLAGS=-static
                   make_help_O: make help
                   make_pure_O: make
                 make_perf_o_O: make perf.o
             make_no_libnuma_O: make NO_LIBNUMA=1
             make_no_libperl_O: make NO_LIBPERL=1
           make_no_libunwind_O: make NO_LIBUNWIND=1
           make_no_libbionic_O: make NO_LIBBIONIC=1
                    make_doc_O: make doc
              make_no_libelf_O: make NO_LIBELF=1
              make_clean_all_O: make clean all
         make_install_prefix_O: make install prefix=/tmp/krava
            make_no_libaudit_O: make NO_LIBAUDIT=1
                make_install_O: make install
   make_install_prefix_slash_O: make install prefix=/tmp/krava/
  OK
  make: Leaving directory '/home/acme/git/linux/tools/perf'
  $

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2015-12-11 14:22 Arnaldo Carvalho de Melo
@ 2015-12-14  8:32 ` Ingo Molnar
  0 siblings, 0 replies; 47+ messages in thread
From: Ingo Molnar @ 2015-12-14  8:32 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Alexei Starovoitov, Brendan Gregg,
	David Ahern, David S . Miller, Jiri Olsa, Masami Hiramatsu,
	Namhyung Kim, Peter Zijlstra, pi3orama, Wang Nan, Zefan Li,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit e7a7865cc0da306542db0b9205cb0a467f59e33d:
> 
>   perf symbols: Fix dso__load_sym to put dso (2015-12-10 16:29:32 -0300)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
> 
> for you to fetch changes up to 93b0ba3c60da89043ce2b9f601cd2b3da408903b:
> 
>   perf tools: Clear struct machine during machine__init() (2015-12-11 09:32:41 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> User visible:
> 
> - Fix 'perf top' annotation in --stdio (Namhyung Kim)
> 
> - Support hw breakpoint events (mem:0xAddress) in the default output mode in
>   'perf script' (Wang Nan)
> 
> Infrastructure:
> 
> - Do not hold the hists lock while emitting one specific warning (Namhyung Kim)
> 
> - Fetch map names from correct strtab, worked so far because llvm/clang
>   uses just one string table (Wang Nan)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Namhyung Kim (4):
>       perf top: Do not convert address for perf_top__record_precise_ip()
>       perf top: Access hists->lock only if needed
>       perf top: Fix annotation on --stdio
>       perf top: Cleanup condition in perf_top__record_precise_ip()
> 
> Wang Nan (5):
>       tools lib bpf: Check return value of strdup when reading map names
>       tools lib bpf: Fetch map names from correct strtab
>       perf data: Add u32_hex data type
>       perf script: Add support for PERF_TYPE_BREAKPOINT
>       perf tools: Clear struct machine during machine__init()
> 
>  tools/lib/bpf/libbpf.c            | 24 +++++++++++++-----
>  tools/perf/builtin-script.c       | 14 +++++++++++
>  tools/perf/builtin-top.c          | 52 +++++++++++++++++----------------------
>  tools/perf/util/data-convert-bt.c |  2 ++
>  tools/perf/util/machine.c         |  1 +
>  5 files changed, 57 insertions(+), 36 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [GIT PULL 0/9] perf/core improvements and fixes
@ 2015-12-11 14:22 Arnaldo Carvalho de Melo
  2015-12-14  8:32 ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-12-11 14:22 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexei Starovoitov, Brendan Gregg, David Ahern, David S . Miller,
	Jiri Olsa, Masami Hiramatsu, Namhyung Kim, Peter Zijlstra,
	pi3orama, Wang Nan, Zefan Li, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit e7a7865cc0da306542db0b9205cb0a467f59e33d:

  perf symbols: Fix dso__load_sym to put dso (2015-12-10 16:29:32 -0300)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo

for you to fetch changes up to 93b0ba3c60da89043ce2b9f601cd2b3da408903b:

  perf tools: Clear struct machine during machine__init() (2015-12-11 09:32:41 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Fix 'perf top' annotation in --stdio (Namhyung Kim)

- Support hw breakpoint events (mem:0xAddress) in the default output mode in
  'perf script' (Wang Nan)

Infrastructure:

- Do not hold the hists lock while emitting one specific warning (Namhyung Kim)

- Fetch map names from correct strtab, worked so far because llvm/clang
  uses just one string table (Wang Nan)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Namhyung Kim (4):
      perf top: Do not convert address for perf_top__record_precise_ip()
      perf top: Access hists->lock only if needed
      perf top: Fix annotation on --stdio
      perf top: Cleanup condition in perf_top__record_precise_ip()

Wang Nan (5):
      tools lib bpf: Check return value of strdup when reading map names
      tools lib bpf: Fetch map names from correct strtab
      perf data: Add u32_hex data type
      perf script: Add support for PERF_TYPE_BREAKPOINT
      perf tools: Clear struct machine during machine__init()

 tools/lib/bpf/libbpf.c            | 24 +++++++++++++-----
 tools/perf/builtin-script.c       | 14 +++++++++++
 tools/perf/builtin-top.c          | 52 +++++++++++++++++----------------------
 tools/perf/util/data-convert-bt.c |  2 ++
 tools/perf/util/machine.c         |  1 +
 5 files changed, 57 insertions(+), 36 deletions(-)

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2015-09-23  1:57 Arnaldo Carvalho de Melo
@ 2015-09-23  7:45 ` Ingo Molnar
  0 siblings, 0 replies; 47+ messages in thread
From: Ingo Molnar @ 2015-09-23  7:45 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Alexei Starovoitov, Borislav Petkov,
	Brendan Gregg, Daniel Borkmann, David Ahern, Frederic Weisbecker,
	He Kuang, H . Peter Anvin, Jiri Olsa, Kaixu Xia,
	Masami Hiramatsu, Matt Fleming, Milian Wolff, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, pi3orama, Raphael Beamonte,
	Stephane Eranian, Steven Rostedt, Thomas Gleixner, Vinson Lee,
	Wang Nan, Zefan Li, Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit 96f3eda67fcf2598e9d2794398e0e7ab35138ea6:
> 
>   perf/x86/intel: Fix static checker warning in lbr enable (2015-09-18 09:24:57 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
> 
> for you to fetch changes up to e803cf97a4f90d31bcc2c9a1ea20fe9cdc12b2f9:
> 
>   perf record: Synthesize COMM event for a command line workload (2015-09-22 22:43:12 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> User visible:
> 
> - Fix a segfault in 'perf probe' when removing uprobe events (Masami Hiramatsu)
> 
> - Synthesize COMM event for workloads started from the command line in 'perf
>   record' so that we can have the pid->comm mapping before we get the real
>   PERF_RECORD_COMM switching from perf to the workload (Namhyung Kim)
> 
> - Fix build tools/vm/ due to removal of tools/lib/api/fs/debugfs.h
>   (Arnaldo Carvalho de Melo)
> 
> Developer stuff:
> 
> - Fix the make tarball targets by including the recently added err.h header in
>   the perf MANIFEST file (Jiri Olsa)
> 
> - Don't assume that the event parser returns a non empty evlist (Wang Nan)
> 
> - Add way to disambiguate feature detection state files, needed to use
>   tools/build feature detection for multiple components in a single O= output
>   dir, which will be the case with tools/perf/ and tools/lib/bpf/
>   (Arnaldo Carvalho de Melo)
> 
> - Fixup FEATURE_{TESTS,DISPLAY} inversion in tools/lib/bpf/ (Arnaldo Carvalho de Melo)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (5):
>       tools build: Fixup feature detection display function name
>       tools lib bpf: Fix up FEATURE_{TESTS,DISPLAY} usage
>       tools build: Allow setting the feature detection user
>       tools lib bpf: Use FEATURE_USER to allow building in the same dir as perf
>       tools vm: Fix build due to removal of tools/lib/api/fs/debugfs.h
> 
> Jiri Olsa (1):
>       perf tools: Add include/err.h into MANIFEST
> 
> Masami Hiramatsu (1):
>       perf probe: Fix a segfault when removing uprobe events
> 
> Namhyung Kim (1):
>       perf record: Synthesize COMM event for a command line workload
> 
> Wang Nan (1):
>       perf tools: Don't assume that the parser returns non empty evsel list
> 
>  tools/build/Makefile.feature   |  9 +++++----
>  tools/lib/bpf/Makefile         |  5 +++--
>  tools/perf/MANIFEST            |  1 +
>  tools/perf/builtin-probe.c     |  7 +++++--
>  tools/perf/builtin-record.c    | 15 ++++++++++++++-
>  tools/perf/util/event.c        |  2 +-
>  tools/perf/util/event.h        |  5 +++++
>  tools/perf/util/parse-events.c | 16 ++++++++++++++++
>  tools/vm/page-types.c          |  6 +++---
>  9 files changed, 53 insertions(+), 13 deletions(-)

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [GIT PULL 0/9] perf/core improvements and fixes
@ 2015-09-23  1:57 Arnaldo Carvalho de Melo
  2015-09-23  7:45 ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-09-23  1:57 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexei Starovoitov, Borislav Petkov, Brendan Gregg,
	Daniel Borkmann, David Ahern, Frederic Weisbecker, He Kuang,
	H . Peter Anvin, Jiri Olsa, Kaixu Xia, Masami Hiramatsu,
	Matt Fleming, Milian Wolff, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, pi3orama, Raphael Beamonte, Stephane Eranian,
	Steven Rostedt, Thomas Gleixner, Vinson Lee, Wang Nan, Zefan Li,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 96f3eda67fcf2598e9d2794398e0e7ab35138ea6:

  perf/x86/intel: Fix static checker warning in lbr enable (2015-09-18 09:24:57 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo

for you to fetch changes up to e803cf97a4f90d31bcc2c9a1ea20fe9cdc12b2f9:

  perf record: Synthesize COMM event for a command line workload (2015-09-22 22:43:12 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Fix a segfault in 'perf probe' when removing uprobe events (Masami Hiramatsu)

- Synthesize COMM event for workloads started from the command line in 'perf
  record' so that we can have the pid->comm mapping before we get the real
  PERF_RECORD_COMM switching from perf to the workload (Namhyung Kim)

- Fix build tools/vm/ due to removal of tools/lib/api/fs/debugfs.h
  (Arnaldo Carvalho de Melo)

Developer stuff:

- Fix the make tarball targets by including the recently added err.h header in
  the perf MANIFEST file (Jiri Olsa)

- Don't assume that the event parser returns a non empty evlist (Wang Nan)

- Add way to disambiguate feature detection state files, needed to use
  tools/build feature detection for multiple components in a single O= output
  dir, which will be the case with tools/perf/ and tools/lib/bpf/
  (Arnaldo Carvalho de Melo)

- Fixup FEATURE_{TESTS,DISPLAY} inversion in tools/lib/bpf/ (Arnaldo Carvalho de Melo)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (5):
      tools build: Fixup feature detection display function name
      tools lib bpf: Fix up FEATURE_{TESTS,DISPLAY} usage
      tools build: Allow setting the feature detection user
      tools lib bpf: Use FEATURE_USER to allow building in the same dir as perf
      tools vm: Fix build due to removal of tools/lib/api/fs/debugfs.h

Jiri Olsa (1):
      perf tools: Add include/err.h into MANIFEST

Masami Hiramatsu (1):
      perf probe: Fix a segfault when removing uprobe events

Namhyung Kim (1):
      perf record: Synthesize COMM event for a command line workload

Wang Nan (1):
      perf tools: Don't assume that the parser returns non empty evsel list

 tools/build/Makefile.feature   |  9 +++++----
 tools/lib/bpf/Makefile         |  5 +++--
 tools/perf/MANIFEST            |  1 +
 tools/perf/builtin-probe.c     |  7 +++++--
 tools/perf/builtin-record.c    | 15 ++++++++++++++-
 tools/perf/util/event.c        |  2 +-
 tools/perf/util/event.h        |  5 +++++
 tools/perf/util/parse-events.c | 16 ++++++++++++++++
 tools/vm/page-types.c          |  6 +++---
 9 files changed, 53 insertions(+), 13 deletions(-)

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2015-08-21 16:10 Arnaldo Carvalho de Melo
@ 2015-08-22  6:47 ` Ingo Molnar
  0 siblings, 0 replies; 47+ messages in thread
From: Ingo Molnar @ 2015-08-22  6:47 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Alexei Starovoitov, Borislav Petkov,
	Brendan Gregg, Daniel Borkmann, David Ahern, Dean Nelson,
	Frederic Weisbecker, He Kuang, Jiri Olsa, Kaixu Xia, Li Zhang,
	Masami Hiramatsu, Namhyung Kim, Peter Zijlstra, pi3orama,
	Stephane Eranian, Sukadev Bhattiprolu, Wang Nan, Zefan Li,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit 82819ffb42fb45197bacf3223191deca31d3eb91:
> 
>   perf/x86/msr: Fix the MSR driver build (2015-08-21 08:17:01 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
> 
> for you to fetch changes up to 1c0bd0e891aaed0219010bfe79b32e1b0b82d662:
> 
>   perf probe: Try to use symbol table if searching debug info failed (2015-08-21 12:57:20 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> User visible:
> 
> - Fix segfault using 'perf script --show-mmap-events', affects
>   only current perf/core (Adrian Hunter).
> 
> - /proc/kcore requires CAP_SYS_RAWIO message too noisy, make it
>   debug only (Adrian Hunter)
> 
> - Fix Intel PT timestamp handling (Adrian Hunter)
> 
> - Add Intel BTS support, with a call-graph script to show it and
>   PT in use in a GUI using 'perf script' python scripting with
>   postgresql and Qt (Adrian Hunter)
> 
> - Add checks for returned EVENT_ERROR type in libtraceevent, fixing
>   a bug that surfaced on arm64 systems (Dean Nelson)
> 
> - Fallback to using kallsyms when libdw fails to handle a vmlinux file,
>   that can happen, for instance, when perf is statically linked and
>   then libdw fails to load libebl_{arch}.so (Wang Nan)
> 
> Infrastructure:
> 
> - Initialize reference counts in map__clone() (Arnaldo Carvalho de Melo)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Adrian Hunter (6):
>       perf script: Fix segfault using --show-mmap-events
>       perf tools: /proc/kcore requires CAP_SYS_RAWIO message too noisy
>       perf tools: Fix Intel PT timestamp handling
>       perf tools: Add Intel BTS support
>       perf tools: Put itrace options into an asciidoc include
>       perf tools: Add example call-graph script
> 
> Arnaldo Carvalho de Melo (1):
>       perf tools: Initialize reference counts in map__clone()
> 
> Dean Nelson (1):
>       tools lib traceevent: Add checks for returned EVENT_ERROR type
> 
> Wang Nan (1):
>       perf probe: Try to use symbol table if searching debug info failed
> 
>  tools/lib/traceevent/event-parse.c                 |   9 +
>  tools/perf/Documentation/intel-bts.txt             |  86 ++
>  tools/perf/Documentation/itrace.txt                |  22 +
>  tools/perf/Documentation/perf-inject.txt           |  23 +-
>  tools/perf/Documentation/perf-report.txt           |  23 +-
>  tools/perf/Documentation/perf-script.txt           |  23 +-
>  tools/perf/arch/x86/util/Build                     |   1 +
>  tools/perf/arch/x86/util/auxtrace.c                |  49 +-
>  tools/perf/arch/x86/util/intel-bts.c               | 458 ++++++++++
>  tools/perf/arch/x86/util/pmu.c                     |   3 +
>  .../scripts/python/call-graph-from-postgresql.py   | 327 ++++++++
>  tools/perf/scripts/python/export-to-postgresql.py  |  47 ++
>  tools/perf/util/Build                              |   1 +
>  tools/perf/util/annotate.c                         |   1 +
>  tools/perf/util/auxtrace.c                         |   3 +
>  tools/perf/util/auxtrace.h                         |   1 +
>  tools/perf/util/evlist.c                           |   2 +-
>  tools/perf/util/intel-bts.c                        | 933 +++++++++++++++++++++
>  tools/perf/util/intel-bts.h                        |  43 +
>  tools/perf/util/intel-pt.c                         |   2 +-
>  tools/perf/util/map.c                              |  13 +-
>  tools/perf/util/pmu.c                              |   4 -
>  tools/perf/util/probe-event.c                      |   7 +-
>  tools/perf/util/symbol.c                           |   4 +-
>  24 files changed, 2004 insertions(+), 81 deletions(-)
>  create mode 100644 tools/perf/Documentation/intel-bts.txt
>  create mode 100644 tools/perf/Documentation/itrace.txt
>  create mode 100644 tools/perf/arch/x86/util/intel-bts.c
>  create mode 100644 tools/perf/scripts/python/call-graph-from-postgresql.py
>  create mode 100644 tools/perf/util/intel-bts.c
>  create mode 100644 tools/perf/util/intel-bts.h

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [GIT PULL 0/9] perf/core improvements and fixes
@ 2015-08-21 16:10 Arnaldo Carvalho de Melo
  2015-08-22  6:47 ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-08-21 16:10 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Alexei Starovoitov, Borislav Petkov, Brendan Gregg,
	Daniel Borkmann, David Ahern, Dean Nelson, Frederic Weisbecker,
	He Kuang, Jiri Olsa, Kaixu Xia, Li Zhang, Masami Hiramatsu,
	Namhyung Kim, Peter Zijlstra, pi3orama, Stephane Eranian,
	Sukadev Bhattiprolu, Wang Nan, Zefan Li,
	Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 82819ffb42fb45197bacf3223191deca31d3eb91:

  perf/x86/msr: Fix the MSR driver build (2015-08-21 08:17:01 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo

for you to fetch changes up to 1c0bd0e891aaed0219010bfe79b32e1b0b82d662:

  perf probe: Try to use symbol table if searching debug info failed (2015-08-21 12:57:20 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Fix segfault using 'perf script --show-mmap-events', affects
  only current perf/core (Adrian Hunter).

- /proc/kcore requires CAP_SYS_RAWIO message too noisy, make it
  debug only (Adrian Hunter)

- Fix Intel PT timestamp handling (Adrian Hunter)

- Add Intel BTS support, with a call-graph script to show it and
  PT in use in a GUI using 'perf script' python scripting with
  postgresql and Qt (Adrian Hunter)

- Add checks for returned EVENT_ERROR type in libtraceevent, fixing
  a bug that surfaced on arm64 systems (Dean Nelson)

- Fallback to using kallsyms when libdw fails to handle a vmlinux file,
  that can happen, for instance, when perf is statically linked and
  then libdw fails to load libebl_{arch}.so (Wang Nan)

Infrastructure:

- Initialize reference counts in map__clone() (Arnaldo Carvalho de Melo)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Adrian Hunter (6):
      perf script: Fix segfault using --show-mmap-events
      perf tools: /proc/kcore requires CAP_SYS_RAWIO message too noisy
      perf tools: Fix Intel PT timestamp handling
      perf tools: Add Intel BTS support
      perf tools: Put itrace options into an asciidoc include
      perf tools: Add example call-graph script

Arnaldo Carvalho de Melo (1):
      perf tools: Initialize reference counts in map__clone()

Dean Nelson (1):
      tools lib traceevent: Add checks for returned EVENT_ERROR type

Wang Nan (1):
      perf probe: Try to use symbol table if searching debug info failed

 tools/lib/traceevent/event-parse.c                 |   9 +
 tools/perf/Documentation/intel-bts.txt             |  86 ++
 tools/perf/Documentation/itrace.txt                |  22 +
 tools/perf/Documentation/perf-inject.txt           |  23 +-
 tools/perf/Documentation/perf-report.txt           |  23 +-
 tools/perf/Documentation/perf-script.txt           |  23 +-
 tools/perf/arch/x86/util/Build                     |   1 +
 tools/perf/arch/x86/util/auxtrace.c                |  49 +-
 tools/perf/arch/x86/util/intel-bts.c               | 458 ++++++++++
 tools/perf/arch/x86/util/pmu.c                     |   3 +
 .../scripts/python/call-graph-from-postgresql.py   | 327 ++++++++
 tools/perf/scripts/python/export-to-postgresql.py  |  47 ++
 tools/perf/util/Build                              |   1 +
 tools/perf/util/annotate.c                         |   1 +
 tools/perf/util/auxtrace.c                         |   3 +
 tools/perf/util/auxtrace.h                         |   1 +
 tools/perf/util/evlist.c                           |   2 +-
 tools/perf/util/intel-bts.c                        | 933 +++++++++++++++++++++
 tools/perf/util/intel-bts.h                        |  43 +
 tools/perf/util/intel-pt.c                         |   2 +-
 tools/perf/util/map.c                              |  13 +-
 tools/perf/util/pmu.c                              |   4 -
 tools/perf/util/probe-event.c                      |   7 +-
 tools/perf/util/symbol.c                           |   4 +-
 24 files changed, 2004 insertions(+), 81 deletions(-)
 create mode 100644 tools/perf/Documentation/intel-bts.txt
 create mode 100644 tools/perf/Documentation/itrace.txt
 create mode 100644 tools/perf/arch/x86/util/intel-bts.c
 create mode 100644 tools/perf/scripts/python/call-graph-from-postgresql.py
 create mode 100644 tools/perf/util/intel-bts.c
 create mode 100644 tools/perf/util/intel-bts.h

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2015-08-10 20:56 Arnaldo Carvalho de Melo
@ 2015-08-12 10:18 ` Ingo Molnar
  0 siblings, 0 replies; 47+ messages in thread
From: Ingo Molnar @ 2015-08-12 10:18 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Adrian Hunter, Andi Kleen, Borislav Petkov,
	David Ahern, Frederic Weisbecker, Jiri Olsa, Kan Liang,
	Namhyung Kim, Peter Zijlstra, Stephane Eranian,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit f1d800bf615b84ca253af372d2dac8cdef743a20:
> 
>   Merge tag 'perf-ebpf-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-08-08 10:05:17 +0200)
> 
> are available in the git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
> 
> for you to fetch changes up to 4605bb55b91449a1a953a51f0334d3bc02351adb:
> 
>   perf evlist: Be more specific on -F/--freq (2015-08-10 17:20:26 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> User visible:
> 
> - Introduce 'srcfile' sort key: (Andi Kleen)
> 
>   # perf record -F 10000 usleep 1
>   # perf report --stdio --dsos '[kernel.vmlinux]' -s srcfile
>   <SNIP>
>   # Overhead  Source File
>       26.49%  copy_page_64.S
>        5.49%  signal.c
>        0.51%  msr.h
>   #
> 
>   It can be combined with other fields, for instance, experiment with
>   '-s srcfile,symbol'.
> 
>   There are some oddities in some distros and with some specific DSOs, being
>   investigated, so your mileage may vary.
> 
> - Update the column width for the "srcline" sort key (Arnaldo Carvalho de Melo)
> 
> - Support per-event 'freq' term: (Namhyung Kim)
> 
>   $ perf record -e 'cpu/instructions,freq=1234/',cycles -c 1000 sleep 1
>   $ perf evlist -F
>   cpu/instructions,freq=1234/: sample_freq=1234
>   cycles: sample_period=1000
>   $
> 
> Infrastructure:
> 
> - Move perf_counts struct and functions into separate object (Jiri Olsa)
> 
> - Unset perf_event_attr::freq when period term is set (Jiri Olsa)
> 
> - Move callchain option parsing code to util.c (Kan Liang)
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Andi Kleen (2):
>       perf tools: Support full source file paths for srcline
>       perf report: Add support for srcfile sort key
> 
> Arnaldo Carvalho de Melo (2):
>       perf hists: hist_entry__cmp() may use he_tmp.hists, initialize it
>       perf hists: Update the column width for the "srcline" sort key
> 
> Jiri Olsa (2):
>       perf stat: Move perf_counts struct and functions into separate object
>       perf tools: Unset perf_event_attr::freq when period term is set
> 
> Kan Liang (1):
>       perf callchain: Move option parsing code to util.c
> 
> Namhyung Kim (2):
>       perf record: Support per-event freq term
>       perf evlist: Be more specific on -F/--freq
> 
>  tools/perf/Documentation/perf-record.txt |  1 +
>  tools/perf/Documentation/perf-report.txt |  4 ++
>  tools/perf/Documentation/perf-script.txt |  3 ++
>  tools/perf/builtin-report.c              |  2 +
>  tools/perf/builtin-script.c              |  2 +
>  tools/perf/builtin-stat.c                |  1 +
>  tools/perf/util/Build                    |  1 +
>  tools/perf/util/callchain.c              | 89 +------------------------------
>  tools/perf/util/callchain.h              |  1 +
>  tools/perf/util/counts.c                 | 52 ++++++++++++++++++
>  tools/perf/util/counts.h                 | 37 +++++++++++++
>  tools/perf/util/evsel.c                  | 14 ++++-
>  tools/perf/util/evsel.h                  |  4 +-
>  tools/perf/util/hist.c                   |  9 ++++
>  tools/perf/util/hist.h                   |  1 +
>  tools/perf/util/parse-events.c           |  6 +++
>  tools/perf/util/parse-events.h           |  1 +
>  tools/perf/util/parse-events.l           |  1 +
>  tools/perf/util/pmu.c                    |  2 +-
>  tools/perf/util/python-ext-sources       |  2 +-
>  tools/perf/util/sort.c                   | 52 ++++++++++++++++++
>  tools/perf/util/sort.h                   |  2 +
>  tools/perf/util/srcline.c                |  6 ++-
>  tools/perf/util/stat.c                   | 49 -----------------
>  tools/perf/util/stat.h                   | 30 -----------
>  tools/perf/util/util.c                   | 90 ++++++++++++++++++++++++++++++++
>  tools/perf/util/util.h                   |  3 ++
>  27 files changed, 292 insertions(+), 173 deletions(-)
>  create mode 100644 tools/perf/util/counts.c
>  create mode 100644 tools/perf/util/counts.h

Pulled, thanks a lot Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [GIT PULL 0/9] perf/core improvements and fixes
@ 2015-08-10 20:56 Arnaldo Carvalho de Melo
  2015-08-12 10:18 ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-08-10 20:56 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
	Andi Kleen, Borislav Petkov, David Ahern, Frederic Weisbecker,
	Jiri Olsa, Kan Liang, Namhyung Kim, Peter Zijlstra,
	Stephane Eranian, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit f1d800bf615b84ca253af372d2dac8cdef743a20:

  Merge tag 'perf-ebpf-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-08-08 10:05:17 +0200)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo

for you to fetch changes up to 4605bb55b91449a1a953a51f0334d3bc02351adb:

  perf evlist: Be more specific on -F/--freq (2015-08-10 17:20:26 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Introduce 'srcfile' sort key: (Andi Kleen)

  # perf record -F 10000 usleep 1
  # perf report --stdio --dsos '[kernel.vmlinux]' -s srcfile
  <SNIP>
  # Overhead  Source File
      26.49%  copy_page_64.S
       5.49%  signal.c
       0.51%  msr.h
  #

  It can be combined with other fields, for instance, experiment with
  '-s srcfile,symbol'.

  There are some oddities in some distros and with some specific DSOs, being
  investigated, so your mileage may vary.

- Update the column width for the "srcline" sort key (Arnaldo Carvalho de Melo)

- Support per-event 'freq' term: (Namhyung Kim)

  $ perf record -e 'cpu/instructions,freq=1234/',cycles -c 1000 sleep 1
  $ perf evlist -F
  cpu/instructions,freq=1234/: sample_freq=1234
  cycles: sample_period=1000
  $

Infrastructure:

- Move perf_counts struct and functions into separate object (Jiri Olsa)

- Unset perf_event_attr::freq when period term is set (Jiri Olsa)

- Move callchain option parsing code to util.c (Kan Liang)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Andi Kleen (2):
      perf tools: Support full source file paths for srcline
      perf report: Add support for srcfile sort key

Arnaldo Carvalho de Melo (2):
      perf hists: hist_entry__cmp() may use he_tmp.hists, initialize it
      perf hists: Update the column width for the "srcline" sort key

Jiri Olsa (2):
      perf stat: Move perf_counts struct and functions into separate object
      perf tools: Unset perf_event_attr::freq when period term is set

Kan Liang (1):
      perf callchain: Move option parsing code to util.c

Namhyung Kim (2):
      perf record: Support per-event freq term
      perf evlist: Be more specific on -F/--freq

 tools/perf/Documentation/perf-record.txt |  1 +
 tools/perf/Documentation/perf-report.txt |  4 ++
 tools/perf/Documentation/perf-script.txt |  3 ++
 tools/perf/builtin-report.c              |  2 +
 tools/perf/builtin-script.c              |  2 +
 tools/perf/builtin-stat.c                |  1 +
 tools/perf/util/Build                    |  1 +
 tools/perf/util/callchain.c              | 89 +------------------------------
 tools/perf/util/callchain.h              |  1 +
 tools/perf/util/counts.c                 | 52 ++++++++++++++++++
 tools/perf/util/counts.h                 | 37 +++++++++++++
 tools/perf/util/evsel.c                  | 14 ++++-
 tools/perf/util/evsel.h                  |  4 +-
 tools/perf/util/hist.c                   |  9 ++++
 tools/perf/util/hist.h                   |  1 +
 tools/perf/util/parse-events.c           |  6 +++
 tools/perf/util/parse-events.h           |  1 +
 tools/perf/util/parse-events.l           |  1 +
 tools/perf/util/pmu.c                    |  2 +-
 tools/perf/util/python-ext-sources       |  2 +-
 tools/perf/util/sort.c                   | 52 ++++++++++++++++++
 tools/perf/util/sort.h                   |  2 +
 tools/perf/util/srcline.c                |  6 ++-
 tools/perf/util/stat.c                   | 49 -----------------
 tools/perf/util/stat.h                   | 30 -----------
 tools/perf/util/util.c                   | 90 ++++++++++++++++++++++++++++++++
 tools/perf/util/util.h                   |  3 ++
 27 files changed, 292 insertions(+), 173 deletions(-)
 create mode 100644 tools/perf/util/counts.c
 create mode 100644 tools/perf/util/counts.h

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [GIT PULL 0/9] perf/core improvements and fixes
@ 2014-06-19 16:38 Jiri Olsa
  0 siblings, 0 replies; 47+ messages in thread
From: Jiri Olsa @ 2014-06-19 16:38 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Corey Ashford,
	David Ahern, Frederic Weisbecker, Jan Kiszka, Jiri Olsa,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Simon Que,
	Steven Rostedt

hi Ingo,
please consider pulling

thanks,
jirka


The following changes since commit 4ba96195051be30160af6d5f5f83f9a055ab1f23:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf into perf/core (2014-06-13 08:19:06 +0200)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git tags/perf-core-for-mingo

for you to fetch changes up to 26d664a30d08002ac0a4dbd09217ea084da07bc9:

  perf symbols: Get kernel start address by symbol name (2014-06-19 18:18:38 +0200)

----------------------------------------------------------------
perf/core improvements and fixes:

. Updates from trace-cmd for traceevent plugin_kvm plus args cleanup (Steven Rostedt)

. Fix kernel start address lookup in report code (Simon Que)

. Fix segfault in cumulative.callchain report (Jiri Olsa)

Signed-off-by: Jiri Olsa <jolsa@kernel.org>

----------------------------------------------------------------
Jan Kiszka (3):
      tools lib traceevent: Report unknown VMX exit reasons with code
      tools lib traceevent: Factor out print_exit_reason in kvm plugin
      tools lib traceevent: Fix and cleanup kvm_nested_vmexit tracepoints

Jiri Olsa (1):
      perf tools: Fix segfault in cumulative.callchain report

Simon Que (1):
      perf symbols: Get kernel start address by symbol name

Steven Rostedt (3):
      tools lib traceevent: Fix format in plugin_kvm
      tools lib traceevent: Clean up format of args in cfg80211 plugin
      tools lib traceevent: Clean up format of args in jbd2 plugin

Steven Rostedt (Red Hat) (1):
      tools lib traceevent: Add back in kvm plugins nested_vmexit events

 tools/lib/traceevent/plugin_cfg80211.c |  3 +-
 tools/lib/traceevent/plugin_jbd2.c     |  6 ++--
 tools/lib/traceevent/plugin_kvm.c      | 64 +++++++++++++++++++++++++++++-----
 tools/perf/ui/browsers/hists.c         | 21 ++++++++---
 tools/perf/util/machine.c              | 54 ++++++++++++----------------
 5 files changed, 97 insertions(+), 51 deletions(-)

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2014-06-03 20:36 Jiri Olsa
@ 2014-06-05  8:45 ` Ingo Molnar
  0 siblings, 0 replies; 47+ messages in thread
From: Ingo Molnar @ 2014-06-05  8:45 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: linux-kernel, Adrian Hunter, Arnaldo Carvalho de Melo,
	Arnaldo Carvalho de Melo, Cody P Schafer, Corey Ashford,
	David Ahern, David Binderman, Dianfang Zhang, Don Zickus,
	Frederic Weisbecker, Jean Delvare, Jianyu Zhan, Mike Galbraith,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Peter Zijlstra,
	Sebastian Andrzej Siewior, Stephane Eranian, Sukadev Bhattiprolu


* Jiri Olsa <jolsa@kernel.org> wrote:

> hi Ingo,
> please consider pulling
> 
> thanks,
> jirka
> 
> 
> The following changes since commit 9b261365dd73a5014b49033327ad881708e81f33:
> 
>   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf into perf/core (2014-06-03 20:22:40 +0200)
> 
> are available in the git repository at:
> 
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git tags/perf-core-for-mingo
> 
> for you to fetch changes up to fc9cabeabf42d76854059e7bce81a02645e7e5ca:
> 
>   perf tools: Fix 'make help' message error (2014-06-03 21:35:12 +0200)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes:
> 
> . Warn the user when trace command is not available (Arnaldo Carvalho de Melo)
> 
> . Add warning when disabling perl scripting support due to missing devel files (Arnaldo Carvalho de Melo)
> 
> . Consider header files outside perf directory in tags target (Sebastian Andrzej Siewior)
> 
> . Allow overriding sysfs and proc finding with env var (Cody P Schafer)
> 
> . Fix "==" into "=" in ui_browser__warning assignment (zhangdianfang)
> 
> . Factor elide bool handling in sort code (Jiri Olsa)
> 
> . Fix poll return value propagation (Jiri Olsa)
> 
> . Fix 'make help' message error (Jianyu Zhan)
> 
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> 
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (2):
>       perf trace: Warn the user when not available
>       perf tools: Add warning when disabling perl scripting support due to missing devel files
> 
> Cody P Schafer (1):
>       perf tools: Allow overriding sysfs and proc finding with env var
> 
> Jianyu Zhan (1):
>       perf tools: Fix 'make help' message error
> 
> Jiri Olsa (3):
>       perf tools: Remove elide setup for SORT_MODE__MEMORY mode
>       perf tools: Move elide bool into perf_hpp_fmt struct
>       perf record: Fix poll return value propagation
> 
> Sebastian Andrzej Siewior (1):
>       perf tools: Consider header files outside perf directory in tags target
> 
> zhangdianfang (1):
>       perf tools: Fix "==" into "=" in ui_browser__warning assignment
> 
>  tools/lib/api/fs/fs.c          |  43 ++++++++++++++++-
>  tools/perf/Makefile.perf       |  13 ++++--
>  tools/perf/builtin-record.c    |   6 ++-
>  tools/perf/config/Makefile     |   3 +-
>  tools/perf/perf.c              |   8 +++-
>  tools/perf/ui/browser.c        |   2 +-
>  tools/perf/ui/browsers/hists.c |   8 ++--
>  tools/perf/util/hist.h         |   8 +++-
>  tools/perf/util/sort.c         | 103 ++++++++++++++++++++++-------------------
>  tools/perf/util/sort.h         |   2 +-
>  10 files changed, 132 insertions(+), 64 deletions(-)

Pulled, thanks a lot Jiri!

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [GIT PULL 0/9] perf/core improvements and fixes
@ 2014-06-03 20:36 Jiri Olsa
  2014-06-05  8:45 ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Jiri Olsa @ 2014-06-03 20:36 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Adrian Hunter, Arnaldo Carvalho de Melo,
	Arnaldo Carvalho de Melo, Cody P Schafer, Corey Ashford,
	David Ahern, David Binderman, Dianfang Zhang, Don Zickus,
	Frederic Weisbecker, Jean Delvare, Jianyu Zhan, Jiri Olsa,
	Mike Galbraith, Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Peter Zijlstra, Sebastian Andrzej Siewior, Stephane Eranian,
	Sukadev Bhattiprolu

hi Ingo,
please consider pulling

thanks,
jirka


The following changes since commit 9b261365dd73a5014b49033327ad881708e81f33:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf into perf/core (2014-06-03 20:22:40 +0200)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git tags/perf-core-for-mingo

for you to fetch changes up to fc9cabeabf42d76854059e7bce81a02645e7e5ca:

  perf tools: Fix 'make help' message error (2014-06-03 21:35:12 +0200)

----------------------------------------------------------------
perf/core improvements and fixes:

. Warn the user when trace command is not available (Arnaldo Carvalho de Melo)

. Add warning when disabling perl scripting support due to missing devel files (Arnaldo Carvalho de Melo)

. Consider header files outside perf directory in tags target (Sebastian Andrzej Siewior)

. Allow overriding sysfs and proc finding with env var (Cody P Schafer)

. Fix "==" into "=" in ui_browser__warning assignment (zhangdianfang)

. Factor elide bool handling in sort code (Jiri Olsa)

. Fix poll return value propagation (Jiri Olsa)

. Fix 'make help' message error (Jianyu Zhan)

Signed-off-by: Jiri Olsa <jolsa@kernel.org>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (2):
      perf trace: Warn the user when not available
      perf tools: Add warning when disabling perl scripting support due to missing devel files

Cody P Schafer (1):
      perf tools: Allow overriding sysfs and proc finding with env var

Jianyu Zhan (1):
      perf tools: Fix 'make help' message error

Jiri Olsa (3):
      perf tools: Remove elide setup for SORT_MODE__MEMORY mode
      perf tools: Move elide bool into perf_hpp_fmt struct
      perf record: Fix poll return value propagation

Sebastian Andrzej Siewior (1):
      perf tools: Consider header files outside perf directory in tags target

zhangdianfang (1):
      perf tools: Fix "==" into "=" in ui_browser__warning assignment

 tools/lib/api/fs/fs.c          |  43 ++++++++++++++++-
 tools/perf/Makefile.perf       |  13 ++++--
 tools/perf/builtin-record.c    |   6 ++-
 tools/perf/config/Makefile     |   3 +-
 tools/perf/perf.c              |   8 +++-
 tools/perf/ui/browser.c        |   2 +-
 tools/perf/ui/browsers/hists.c |   8 ++--
 tools/perf/util/hist.h         |   8 +++-
 tools/perf/util/sort.c         | 103 ++++++++++++++++++++++-------------------
 tools/perf/util/sort.h         |   2 +-
 10 files changed, 132 insertions(+), 64 deletions(-)

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [GIT PULL 0/9] perf/core improvements and fixes
@ 2014-05-28 13:20 Jiri Olsa
  0 siblings, 0 replies; 47+ messages in thread
From: Jiri Olsa @ 2014-05-28 13:20 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Adrian Hunter, Arnaldo Carvalho de Melo,
	Cody P Schafer, David Ahern, Don Zickus, Frederic Weisbecker,
	Javi Merino, Jiri Olsa, Mike Galbraith, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Sebastian Andrzej Siewior,
	Stephane Eranian, Steven Rostedt, Sukadev Bhattiprolu

hi Ingo,
please consider pulling

thanks,
jirka


The following changes since commit e450f90e8c7d0bf70519223c1b848446ae63f313:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf into perf/core (2014-05-22 11:37:40 +0200)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git tags/perf-core-for-mingo

for you to fetch changes up to 34cfec19bd8496279d283498b97069d9a0f7e130:

  tools lib traceevent: Added support for __get_bitmask() macro (2014-05-28 15:08:26 +0200)

----------------------------------------------------------------
perf/core improvements and fixes:

. Added support for __get_bitmask() macro to traceevent library (Steven Rostedt)

. Allow overriding sysfs and proc finding with env var (Cody P Schafer)

. Consider header files outside perf directory in tags target (Sebastian Andrzej Siewior)

. Add warning when disabling perl scripting support due to missing devel files (Arnaldo Carvalho de Melo)

. Warn the user when trace command is not available (Arnaldo Carvalho de Melo)

. Pass protection and flags bits through mmap2 interface (Peter Zijlstra)

. Update perf tool mmap2 interface with protection and flag bits (Don Zickus)

. Re-enable mmap interface (Don Zickus)

. Add mem-mode documentation to report command (Don Zickus)

Signed-off-by: Jiri Olsa <jolsa@kernel.org>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (2):
      perf trace: Warn the user when not available
      perf tools: Add warning when disabling perl scripting support due to missing devel files

Cody P Schafer (1):
      perf tools: Allow overriding sysfs and proc finding with env var

Don Zickus (3):
      Revert "perf: Disable PERF_RECORD_MMAP2 support"
      perf tools: Update mmap2 interface with protection and flag bits
      perf report: Add mem-mode documentation to report command

Peter Zijlstra (1):
      perf: Pass protection and flags bits through mmap2 interface

Sebastian Andrzej Siewior (1):
      perf tools: Consider header files outside perf directory in tags target

Steven Rostedt (Red Hat) (1):
      tools lib traceevent: Added support for __get_bitmask() macro

 include/uapi/linux/perf_event.h                    |   1 +
 kernel/events/core.c                               |  37 ++++++-
 tools/lib/api/fs/fs.c                              |  43 +++++++-
 tools/lib/traceevent/event-parse.c                 | 113 +++++++++++++++++++++
 tools/lib/traceevent/event-parse.h                 |   7 ++
 tools/perf/Documentation/perf-report.txt           |  22 ++++
 tools/perf/Makefile.perf                           |   9 +-
 tools/perf/config/Makefile                         |   1 +
 tools/perf/perf.c                                  |   8 +-
 tools/perf/tests/dwarf-unwind.c                    |   2 +-
 tools/perf/util/event.c                            |  59 +++++++----
 tools/perf/util/event.h                            |   2 +
 tools/perf/util/evsel.c                            |   1 +
 tools/perf/util/machine.c                          |   4 +-
 tools/perf/util/map.c                              |   4 +-
 tools/perf/util/map.h                              |   4 +-
 .../perf/util/scripting-engines/trace-event-perl.c |   1 +
 .../util/scripting-engines/trace-event-python.c    |   1 +
 18 files changed, 286 insertions(+), 33 deletions(-)

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-30  8:21         ` Peter Zijlstra
@ 2012-10-30  9:14           ` Ingo Molnar
  0 siblings, 0 replies; 47+ messages in thread
From: Ingo Molnar @ 2012-10-30  9:14 UTC (permalink / raw)
  To: Peter Zijlstra
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Andrew Vagin,
	Borislav Petkov, David Howells, Frederic Weisbecker, Jiri Olsa,
	Namhyung Kim, Paul Mackerras, Stephane Eranian, Steven Rostedt


* Peter Zijlstra <a.p.zijlstra@chello.nl> wrote:

> On Tue, 2012-10-30 at 09:18 +0100, Ingo Molnar wrote:
> > > > The optimal way, I guess, would be to have some cache file 
> > > > with the results of such feature tests, that would be created 
> > > > and then used till the build fails using its findings, which 
> > > > would trigger a new feature check round, followed by an 
> > > > automatic rebuild. 

I did not write that.

I think making the feature tests parallel would be enough to 
speed it all up - caching brings in a new set of problems. The 
tests are mostly independent and the feature test makefile rules 
could be parallelized like the object file rules.

> autoconf!! ;-)
> 
> /me runs

hey, we build perf much faster than autoconf's 'configure' 
script finishes running ;-)

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-30  8:18       ` Ingo Molnar
@ 2012-10-30  8:21         ` Peter Zijlstra
  2012-10-30  9:14           ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Peter Zijlstra @ 2012-10-30  8:21 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Andrew Vagin,
	Borislav Petkov, David Howells, Frederic Weisbecker, Jiri Olsa,
	Namhyung Kim, Paul Mackerras, Stephane Eranian, Steven Rostedt

On Tue, 2012-10-30 at 09:18 +0100, Ingo Molnar wrote:
> > > The optimal way, I guess, would be to have some cache file 
> > > with the results of such feature tests, that would be created 
> > > and then used till the build fails using its findings, which 
> > > would trigger a new feature check round, followed by an 
> > > automatic rebuild. 

autoconf!! ;-)

/me runs

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-27 13:19     ` Ingo Molnar
@ 2012-10-30  8:18       ` Ingo Molnar
  2012-10-30  8:21         ` Peter Zijlstra
  0 siblings, 1 reply; 47+ messages in thread
From: Ingo Molnar @ 2012-10-30  8:18 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Andrew Vagin, Borislav Petkov, David Howells,
	Frederic Weisbecker, Jiri Olsa, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Stephane Eranian, Steven Rostedt


* Ingo Molnar <mingo@kernel.org> wrote:

> 
> * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> 
> > Em Fri, Oct 26, 2012 at 04:54:51PM +0200, Ingo Molnar escreveu:
> > > * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> > > > . Makefile improvements from Namhyung Kim.
> > > 
> > > These are really useful: there used to be a couple of 
> > > seconds of wait time at the beginning of every perf build - 
> > > these are now nicely explained with the various CHK entries.
> > 
> > The optimal way, I guess, would be to have some cache file 
> > with the results of such feature tests, that would be created 
> > and then used till the build fails using its findings, which 
> > would trigger a new feature check round, followed by an 
> > automatic rebuild.
> > 
> > That would be tricky because we would have to have an 
> > automated way of discovering if the build failed due to 
> > missing packages or if it failed due to some ordinary coding 
> > mistake.
> 
> The feature tests aren't a big problem right now - but making 
> it *visible* is really useful. It also tells us which feature 
> test fails, etc.

Btw., there's another thing that would be nice in addition to 
simplifying the PERF-VERSION-GEN script: to be able to run the 
CHK tests in parallel, like the object file runes.

Right now the CHK tests are serialized and they take several 
seconds to build and run. A parallel make rule would reduce
that to about a second I think.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-26 15:31     ` Namhyung Kim
  2012-10-26 15:34       ` Borislav Petkov
@ 2012-10-27 17:12       ` stephane eranian
  1 sibling, 0 replies; 47+ messages in thread
From: stephane eranian @ 2012-10-27 17:12 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: David Ahern, Ingo Molnar, Arnaldo Carvalho de Melo, linux-kernel,
	Andrew Vagin, Borislav Petkov, David Howells,
	Frederic Weisbecker, Jiri Olsa, Paul Mackerras, Peter Zijlstra,
	Steven Rostedt, arnaldo.melo, Arnaldo Carvalho de Melo

On Fri, Oct 26, 2012 at 5:31 PM, Namhyung Kim <namhyung@kernel.org> wrote:
> 2012-10-26 (금), 09:06 -0600, David Ahern:
>> On 10/26/12 8:54 AM, Ingo Molnar wrote:
>> >> perf/core improvements:
>> >>
>> >> . perf inject changes to allow showing where a task sleeps, from Andrew Vagin.
>> >>
>> >> . Makefile improvements from Namhyung Kim.
>> >
>> > These are really useful: there used to be a couple of seconds of
>> > wait time at the beginning of every perf build - these are now
>> > nicely explained with the various CHK entries.
>
> Kudos to Jiri who did the real work!
>
>>
>> PERF-VERSION-GEN and specifically the git commands are the cause of more
>> delay than the config checks, especially when doing the build in a VM
>> with the kernel source on an NFS mount.
>
> And I see a strange delay when compiling builtin-sched.o.  After
> building perf tools, I deleted builtin-{sched,test,script}.o to rebuild
> the only since they are largest ones.
>
Yes, I see that delay on copiling builtin-sched.c on my IVB system.
Don't know why it takes a significant number of seconds to compile
this file. It did not use to be like that a few revisions back. It takes
about 8 seconds on my OC'd IVB (> 4GHz).  I don't see much code
in that file.

>   namhyung@leonhard:perf$ ls -lS *.c | head -3
>   -rw-r--r-- 1 namhyung namhyung 45522 2012-10-27 00:20 builtin-sched.c
>   -rw-r--r-- 1 namhyung namhyung 36372 2012-10-27 00:20 builtin-test.c
>   -rw-r--r-- 1 namhyung namhyung 35555 2012-10-27 00:20 builtin-script.c
>
>   namhyung@leonhard:perf$ rm builtin-{sched,test,script}.o
>
>
> And then building each file with time command shows this:
>
>   namhyung@leonhard:perf$ time make builtin-script.o &> /dev/null
>
>   real  0m4.577s
>   user  0m2.755s
>   sys   0m1.655s
>
>   namhyung@leonhard:perf$ time make builtin-test.o &> /dev/null
>
>   real  0m4.486s
>   user  0m2.707s
>   sys   0m1.658s
>
>   namhyung@leonhard:perf$ time make builtin-sched.o &> /dev/null
>
>   real  0m16.936s
>   user  0m15.157s
>   sys   0m1.635s
>
> You can see it easily when building perf without -j option. But I have
> no idea why it takes so long..
>
> Thanks,
> Namhyung
>
>

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-27  9:16             ` Namhyung Kim
@ 2012-10-27 14:29               ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-10-27 14:29 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: Borislav Petkov, David Ahern, Ingo Molnar, linux-kernel,
	Andrew Vagin, Borislav Petkov, David Howells,
	Frederic Weisbecker, Jiri Olsa, Paul Mackerras, Peter Zijlstra,
	Stephane Eranian, Steven Rostedt

Em Sat, Oct 27, 2012 at 06:16:31PM +0900, Namhyung Kim escreveu:
> 2012-10-26 (금), 19:20 +0200, Borislav Petkov:
> > On Fri, Oct 26, 2012 at 09:31:15AM -0700, Arnaldo Carvalho de Melo wrote:
> > > Right, perf'ing perf is a favourite pastime, right?
> > 
> > Sure, can I get "perfing perf" on a T-shirt please?
> 
> Well, guys, this is not perfing perf.  It's about perfing make and/or
> gcc.  Anyway I'd also like to get a "perfing perf" T-shirt. ;)

Well, building perf faster will allow us to perf perf faster. ;-)

- Arnaldo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-26 17:05   ` Arnaldo Carvalho de Melo
@ 2012-10-27 13:19     ` Ingo Molnar
  2012-10-30  8:18       ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Ingo Molnar @ 2012-10-27 13:19 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Andrew Vagin, Borislav Petkov, David Howells,
	Frederic Weisbecker, Jiri Olsa, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Stephane Eranian, Steven Rostedt


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> Em Fri, Oct 26, 2012 at 04:54:51PM +0200, Ingo Molnar escreveu:
> > * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> > > . Makefile improvements from Namhyung Kim.
> > 
> > These are really useful: there used to be a couple of 
> > seconds of wait time at the beginning of every perf build - 
> > these are now nicely explained with the various CHK entries.
> 
> The optimal way, I guess, would be to have some cache file 
> with the results of such feature tests, that would be created 
> and then used till the build fails using its findings, which 
> would trigger a new feature check round, followed by an 
> automatic rebuild.
> 
> That would be tricky because we would have to have an 
> automated way of discovering if the build failed due to 
> missing packages or if it failed due to some ordinary coding 
> mistake.

The feature tests aren't a big problem right now - but making it 
*visible* is really useful. It also tells us which feature test 
fails, etc.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-26 17:20           ` Borislav Petkov
@ 2012-10-27  9:16             ` Namhyung Kim
  2012-10-27 14:29               ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 47+ messages in thread
From: Namhyung Kim @ 2012-10-27  9:16 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: Arnaldo Carvalho de Melo, David Ahern, Ingo Molnar, linux-kernel,
	Andrew Vagin, Borislav Petkov, David Howells,
	Frederic Weisbecker, Jiri Olsa, Paul Mackerras, Peter Zijlstra,
	Stephane Eranian, Steven Rostedt

2012-10-26 (금), 19:20 +0200, Borislav Petkov:
> On Fri, Oct 26, 2012 at 09:31:15AM -0700, Arnaldo Carvalho de Melo wrote:
> > Right, perf'ing perf is a favourite pastime, right?
> 
> Sure, can I get "perfing perf" on a T-shirt please?

Well, guys, this is not perfing perf.  It's about perfing make and/or
gcc.  Anyway I'd also like to get a "perfing perf" T-shirt. ;)

Thanks,
Namhyung



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-26 16:31         ` Arnaldo Carvalho de Melo
@ 2012-10-26 17:20           ` Borislav Petkov
  2012-10-27  9:16             ` Namhyung Kim
  0 siblings, 1 reply; 47+ messages in thread
From: Borislav Petkov @ 2012-10-26 17:20 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Namhyung Kim, David Ahern, Ingo Molnar, linux-kernel,
	Andrew Vagin, Borislav Petkov, David Howells,
	Frederic Weisbecker, Jiri Olsa, Paul Mackerras, Peter Zijlstra,
	Stephane Eranian, Steven Rostedt

On Fri, Oct 26, 2012 at 09:31:15AM -0700, Arnaldo Carvalho de Melo wrote:
> Right, perf'ing perf is a favourite pastime, right?

Sure, can I get "perfing perf" on a T-shirt please?

-- 
Regards/Gruss,
    Boris.

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-26 14:54 ` Ingo Molnar
  2012-10-26 15:06   ` David Ahern
@ 2012-10-26 17:05   ` Arnaldo Carvalho de Melo
  2012-10-27 13:19     ` Ingo Molnar
  1 sibling, 1 reply; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-10-26 17:05 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Andrew Vagin, Borislav Petkov, David Howells,
	Frederic Weisbecker, Jiri Olsa, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Stephane Eranian, Steven Rostedt

Em Fri, Oct 26, 2012 at 04:54:51PM +0200, Ingo Molnar escreveu:
> * Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> > . Makefile improvements from Namhyung Kim.
> 
> These are really useful: there used to be a couple of seconds of 
> wait time at the beginning of every perf build - these are now 
> nicely explained with the various CHK entries.

The optimal way, I guess, would be to have some cache file with the
results of such feature tests, that would be created and then used till
the build fails using its findings, which would trigger a new feature
check round, followed by an automatic rebuild.

That would be tricky because we would have to have an automated way of
discovering if the build failed due to missing packages or if it failed
due to some ordinary coding mistake.

- Arnaldo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-26 15:34       ` Borislav Petkov
@ 2012-10-26 16:31         ` Arnaldo Carvalho de Melo
  2012-10-26 17:20           ` Borislav Petkov
  0 siblings, 1 reply; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-10-26 16:31 UTC (permalink / raw)
  To: Borislav Petkov, Namhyung Kim, David Ahern, Ingo Molnar,
	linux-kernel, Andrew Vagin, Borislav Petkov, David Howells,
	Frederic Weisbecker, Jiri Olsa, Paul Mackerras, Peter Zijlstra,
	Stephane Eranian, Steven Rostedt

Em Fri, Oct 26, 2012 at 05:34:32PM +0200, Borislav Petkov escreveu:
> On Sat, Oct 27, 2012 at 12:31:42AM +0900, Namhyung Kim wrote:
> > You can see it easily when building perf without -j option. But I have
> > no idea why it takes so long..
 
> Well, you can trace that workload with perf itself, no, and see the
> hotspots.

Right, perf'ing perf is a favourite pastime, right?

- Arnaldo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-26 15:31     ` Namhyung Kim
@ 2012-10-26 15:34       ` Borislav Petkov
  2012-10-26 16:31         ` Arnaldo Carvalho de Melo
  2012-10-27 17:12       ` stephane eranian
  1 sibling, 1 reply; 47+ messages in thread
From: Borislav Petkov @ 2012-10-26 15:34 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: David Ahern, Ingo Molnar, Arnaldo Carvalho de Melo, linux-kernel,
	Andrew Vagin, Borislav Petkov, David Howells,
	Frederic Weisbecker, Jiri Olsa, Paul Mackerras, Peter Zijlstra,
	Stephane Eranian, Steven Rostedt, arnaldo.melo,
	Arnaldo Carvalho de Melo

On Sat, Oct 27, 2012 at 12:31:42AM +0900, Namhyung Kim wrote:
> And I see a strange delay when compiling builtin-sched.o.  After
> building perf tools, I deleted builtin-{sched,test,script}.o to rebuild
> the only since they are largest ones.
> 
>   namhyung@leonhard:perf$ ls -lS *.c | head -3
>   -rw-r--r-- 1 namhyung namhyung 45522 2012-10-27 00:20 builtin-sched.c
>   -rw-r--r-- 1 namhyung namhyung 36372 2012-10-27 00:20 builtin-test.c
>   -rw-r--r-- 1 namhyung namhyung 35555 2012-10-27 00:20 builtin-script.c
> 
>   namhyung@leonhard:perf$ rm builtin-{sched,test,script}.o
> 
> 
> And then building each file with time command shows this:
> 
>   namhyung@leonhard:perf$ time make builtin-script.o &> /dev/null
> 
>   real	0m4.577s
>   user	0m2.755s
>   sys	0m1.655s
> 
>   namhyung@leonhard:perf$ time make builtin-test.o &> /dev/null
> 
>   real	0m4.486s
>   user	0m2.707s
>   sys	0m1.658s
> 
>   namhyung@leonhard:perf$ time make builtin-sched.o &> /dev/null
> 
>   real	0m16.936s
>   user	0m15.157s
>   sys	0m1.635s
> 
> You can see it easily when building perf without -j option. But I have
> no idea why it takes so long..

Well, you can trace that workload with perf itself, no, and see the
hotspots.

:-)

-- 
Regards/Gruss,
Boris.

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-26 15:06   ` David Ahern
@ 2012-10-26 15:31     ` Namhyung Kim
  2012-10-26 15:34       ` Borislav Petkov
  2012-10-27 17:12       ` stephane eranian
  0 siblings, 2 replies; 47+ messages in thread
From: Namhyung Kim @ 2012-10-26 15:31 UTC (permalink / raw)
  To: David Ahern
  Cc: Ingo Molnar, Arnaldo Carvalho de Melo, linux-kernel,
	Andrew Vagin, Borislav Petkov, David Howells,
	Frederic Weisbecker, Jiri Olsa, Paul Mackerras, Peter Zijlstra,
	Stephane Eranian, Steven Rostedt, arnaldo.melo,
	Arnaldo Carvalho de Melo

2012-10-26 (금), 09:06 -0600, David Ahern:
> On 10/26/12 8:54 AM, Ingo Molnar wrote:
> >> perf/core improvements:
> >>
> >> . perf inject changes to allow showing where a task sleeps, from Andrew Vagin.
> >>
> >> . Makefile improvements from Namhyung Kim.
> >
> > These are really useful: there used to be a couple of seconds of
> > wait time at the beginning of every perf build - these are now
> > nicely explained with the various CHK entries.

Kudos to Jiri who did the real work!

> 
> PERF-VERSION-GEN and specifically the git commands are the cause of more 
> delay than the config checks, especially when doing the build in a VM 
> with the kernel source on an NFS mount.

And I see a strange delay when compiling builtin-sched.o.  After
building perf tools, I deleted builtin-{sched,test,script}.o to rebuild
the only since they are largest ones.

  namhyung@leonhard:perf$ ls -lS *.c | head -3
  -rw-r--r-- 1 namhyung namhyung 45522 2012-10-27 00:20 builtin-sched.c
  -rw-r--r-- 1 namhyung namhyung 36372 2012-10-27 00:20 builtin-test.c
  -rw-r--r-- 1 namhyung namhyung 35555 2012-10-27 00:20 builtin-script.c

  namhyung@leonhard:perf$ rm builtin-{sched,test,script}.o


And then building each file with time command shows this:

  namhyung@leonhard:perf$ time make builtin-script.o &> /dev/null

  real	0m4.577s
  user	0m2.755s
  sys	0m1.655s

  namhyung@leonhard:perf$ time make builtin-test.o &> /dev/null

  real	0m4.486s
  user	0m2.707s
  sys	0m1.658s

  namhyung@leonhard:perf$ time make builtin-sched.o &> /dev/null

  real	0m16.936s
  user	0m15.157s
  sys	0m1.635s

You can see it easily when building perf without -j option. But I have
no idea why it takes so long..

Thanks,
Namhyung



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-26 14:54 ` Ingo Molnar
@ 2012-10-26 15:06   ` David Ahern
  2012-10-26 15:31     ` Namhyung Kim
  2012-10-26 17:05   ` Arnaldo Carvalho de Melo
  1 sibling, 1 reply; 47+ messages in thread
From: David Ahern @ 2012-10-26 15:06 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Arnaldo Carvalho de Melo, linux-kernel, Andrew Vagin,
	Borislav Petkov, David Howells, Frederic Weisbecker, Jiri Olsa,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt, arnaldo.melo, Arnaldo Carvalho de Melo

On 10/26/12 8:54 AM, Ingo Molnar wrote:
>> perf/core improvements:
>>
>> . perf inject changes to allow showing where a task sleeps, from Andrew Vagin.
>>
>> . Makefile improvements from Namhyung Kim.
>
> These are really useful: there used to be a couple of seconds of
> wait time at the beginning of every perf build - these are now
> nicely explained with the various CHK entries.

PERF-VERSION-GEN and specifically the git commands are the cause of more 
delay than the config checks, especially when doing the build in a VM 
with the kernel source on an NFS mount.

David

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-10-26 14:31 Arnaldo Carvalho de Melo
@ 2012-10-26 14:54 ` Ingo Molnar
  2012-10-26 15:06   ` David Ahern
  2012-10-26 17:05   ` Arnaldo Carvalho de Melo
  0 siblings, 2 replies; 47+ messages in thread
From: Ingo Molnar @ 2012-10-26 14:54 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Andrew Vagin, Borislav Petkov, David Howells,
	Frederic Weisbecker, Jiri Olsa, Namhyung Kim, Paul Mackerras,
	Peter Zijlstra, Stephane Eranian, Steven Rostedt, arnaldo.melo,
	Arnaldo Carvalho de Melo


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> Hi Ingo,
> 
> 	Please consider pulling,
> 
> - Arnaldo
> 
> The following changes since commit 8f7c1d07ade50dcdea7ec779b277e891f5c8292a:
> 
>   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2012-10-26 10:30:49 +0200)
> 
> are available in the git repository at:
> 
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
> 
> for you to fetch changes up to 1f16c5754d3a4008c29f3bf67b4f1271313ba385:
> 
>   perf stat: Add --pre and --post command (2012-10-26 11:22:25 -0200)
> 
> ----------------------------------------------------------------
> perf/core improvements:
> 
> . perf inject changes to allow showing where a task sleeps, from Andrew Vagin.
> 
> . Makefile improvements from Namhyung Kim.

These are really useful: there used to be a couple of seconds of 
wait time at the beginning of every perf build - these are now 
nicely explained with the various CHK entries.

> 
> . Add --pre and --post command hooks in 'stat', from Peter Zijlstra.
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> Andrew Vagin (3):
>       perf inject: Work with files
>       perf inject: Merge sched_stat_* and sched_switch events
>       perf inject: Mark a dso if it's used
> 
> Namhyung Kim (5):
>       tools lib traceevent: Do not generate dependency for system header files
>       perf tools: Cleanup doc related targets
>       perf tools: Convert invocation of MAKE into SUBDIR
>       perf tools: Always show CHK message when doing try-cc
>       perf tools: Fix LIBELF_MMAP checking
> 
> Peter Zijlstra (1):
>       perf stat: Add --pre and --post command
> 
>  tools/lib/traceevent/Makefile            |    2 +-
>  tools/perf/Documentation/perf-inject.txt |   11 ++
>  tools/perf/Documentation/perf-stat.txt   |    5 +
>  tools/perf/Makefile                      |   51 ++------
>  tools/perf/builtin-inject.c              |  189 ++++++++++++++++++++++++++++--
>  tools/perf/builtin-stat.c                |   42 ++++++-
>  tools/perf/config/utilities.mak          |    3 +-
>  tools/perf/util/build-id.c               |   10 +-
>  tools/perf/util/build-id.h               |    4 +
>  9 files changed, 256 insertions(+), 61 deletions(-)

Pulled, thanks Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [GIT PULL 0/9] perf/core improvements and fixes
@ 2012-10-26 14:31 Arnaldo Carvalho de Melo
  2012-10-26 14:54 ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-10-26 14:31 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, Andrew Vagin,
	Borislav Petkov, David Howells, Frederic Weisbecker, Jiri Olsa,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
	Steven Rostedt, arnaldo.melo, Arnaldo Carvalho de Melo

Hi Ingo,

	Please consider pulling,

- Arnaldo

The following changes since commit 8f7c1d07ade50dcdea7ec779b277e891f5c8292a:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2012-10-26 10:30:49 +0200)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo

for you to fetch changes up to 1f16c5754d3a4008c29f3bf67b4f1271313ba385:

  perf stat: Add --pre and --post command (2012-10-26 11:22:25 -0200)

----------------------------------------------------------------
perf/core improvements:

. perf inject changes to allow showing where a task sleeps, from Andrew Vagin.

. Makefile improvements from Namhyung Kim.

. Add --pre and --post command hooks in 'stat', from Peter Zijlstra.

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Andrew Vagin (3):
      perf inject: Work with files
      perf inject: Merge sched_stat_* and sched_switch events
      perf inject: Mark a dso if it's used

Namhyung Kim (5):
      tools lib traceevent: Do not generate dependency for system header files
      perf tools: Cleanup doc related targets
      perf tools: Convert invocation of MAKE into SUBDIR
      perf tools: Always show CHK message when doing try-cc
      perf tools: Fix LIBELF_MMAP checking

Peter Zijlstra (1):
      perf stat: Add --pre and --post command

 tools/lib/traceevent/Makefile            |    2 +-
 tools/perf/Documentation/perf-inject.txt |   11 ++
 tools/perf/Documentation/perf-stat.txt   |    5 +
 tools/perf/Makefile                      |   51 ++------
 tools/perf/builtin-inject.c              |  189 ++++++++++++++++++++++++++++--
 tools/perf/builtin-stat.c                |   42 ++++++-
 tools/perf/config/utilities.mak          |    3 +-
 tools/perf/util/build-id.c               |   10 +-
 tools/perf/util/build-id.h               |    4 +
 9 files changed, 256 insertions(+), 61 deletions(-)

^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: [GIT PULL 0/9] perf/core improvements and fixes
  2012-09-08 20:36 Arnaldo Carvalho de Melo
@ 2012-09-09  8:40 ` Ingo Molnar
  0 siblings, 0 replies; 47+ messages in thread
From: Ingo Molnar @ 2012-09-09  8:40 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern,
	Irina Tirdea, Irina Tirdea, Namhyung Kim, Namhyung Kim,
	Paul Mackerras, Pekka Enberg, Peter Zijlstra, Srikar Dronamraju,
	Steven Rostedt


* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:

> From: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> Hi Ingo,
> 
> 	Please consider pulling,
> 
> Thanks,
> 
> - Arnaldo
> 
> The following changes since commit ef34eb4da3eb62a1511592adf7c76d74faca0b14:
> 
>   Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2012-09-08 13:26:02 +0200)
> 
> are available in the git repository at:
> 
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo
> 
> for you to fetch changes up to 6c7f631261064762a8ba1ee34fc2b76d117ef3fa:
> 
>   perf symbols: Remove BIONIC wrapper around libgen.h (2012-09-08 17:15:16 -0300)
> 
> ----------------------------------------------------------------
> perf/core improvements and fixes
> 
> . Don't pass const char pointers to basename, so that we can unconditionally
>   use libgen.h and thus avoid ifdef BIONIC lines, from David Ahern
> 
> . Fix assert/BUG_ON when NDEBUG is defined, from Irina Tirdea.
> 
> . Refactor hist formatting so that it can be reused with the GTK browser,
>   From Namhyung Kim
> 
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ----------------------------------------------------------------
> David Ahern (3):
>       perf annotate: Make a copy of filename for passing to basename
>       perf probe: Make a copy of exec path for passing to basename
>       perf symbols: Remove BIONIC wrapper around libgen.h
> 
> Irina Tirdea (1):
>       perf bench: fix assert when NDEBUG is defined
> 
> Namhyung Kim (5):
>       perf hists: Introduce perf_hpp for hist period printing
>       perf hists: Handle field separator properly
>       perf hists: Use perf_hpp__format->width to calculate the column widths
>       perf hists browser: Use perf_hpp__format functions
>       perf gtk/browser: Use perf_hpp__format functions
> 
>  tools/perf/Makefile                    |    2 +
>  tools/perf/bench/sched-pipe.c          |    6 +-
>  tools/perf/builtin-diff.c              |    1 +
>  tools/perf/ui/browsers/hists.c         |   96 ++++++--
>  tools/perf/ui/gtk/browser.c            |  101 +++++++--
>  tools/perf/ui/gtk/gtk.h                |    1 +
>  tools/perf/ui/gtk/setup.c              |    1 +
>  tools/perf/ui/hist.c                   |  389 ++++++++++++++++++++++++++++++++
>  tools/perf/ui/setup.c                  |    8 +-
>  tools/perf/ui/stdio/hist.c             |  239 ++++----------------
>  tools/perf/ui/tui/setup.c              |    4 +
>  tools/perf/util/annotate.c             |    9 +-
>  tools/perf/util/hist.c                 |   33 ---
>  tools/perf/util/hist.h                 |   37 +++
>  tools/perf/util/include/linux/kernel.h |    4 +
>  tools/perf/util/probe-event.c          |   12 +-
>  tools/perf/util/symbol.h               |    2 -
>  17 files changed, 665 insertions(+), 280 deletions(-)
>  create mode 100644 tools/perf/ui/hist.c

Pulled, thanks Arnaldo!

	Ingo

^ permalink raw reply	[flat|nested] 47+ messages in thread

* [GIT PULL 0/9] perf/core improvements and fixes
@ 2012-09-08 20:36 Arnaldo Carvalho de Melo
  2012-09-09  8:40 ` Ingo Molnar
  0 siblings, 1 reply; 47+ messages in thread
From: Arnaldo Carvalho de Melo @ 2012-09-08 20:36 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern,
	Irina Tirdea, Irina Tirdea, Namhyung Kim, Namhyung Kim,
	Paul Mackerras, Pekka Enberg, Peter Zijlstra, Srikar Dronamraju,
	Steven Rostedt

From: Arnaldo Carvalho de Melo <acme@redhat.com>

Hi Ingo,

	Please consider pulling,

Thanks,

- Arnaldo

The following changes since commit ef34eb4da3eb62a1511592adf7c76d74faca0b14:

  Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2012-09-08 13:26:02 +0200)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo

for you to fetch changes up to 6c7f631261064762a8ba1ee34fc2b76d117ef3fa:

  perf symbols: Remove BIONIC wrapper around libgen.h (2012-09-08 17:15:16 -0300)

----------------------------------------------------------------
perf/core improvements and fixes

. Don't pass const char pointers to basename, so that we can unconditionally
  use libgen.h and thus avoid ifdef BIONIC lines, from David Ahern

. Fix assert/BUG_ON when NDEBUG is defined, from Irina Tirdea.

. Refactor hist formatting so that it can be reused with the GTK browser,
  From Namhyung Kim

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
David Ahern (3):
      perf annotate: Make a copy of filename for passing to basename
      perf probe: Make a copy of exec path for passing to basename
      perf symbols: Remove BIONIC wrapper around libgen.h

Irina Tirdea (1):
      perf bench: fix assert when NDEBUG is defined

Namhyung Kim (5):
      perf hists: Introduce perf_hpp for hist period printing
      perf hists: Handle field separator properly
      perf hists: Use perf_hpp__format->width to calculate the column widths
      perf hists browser: Use perf_hpp__format functions
      perf gtk/browser: Use perf_hpp__format functions

 tools/perf/Makefile                    |    2 +
 tools/perf/bench/sched-pipe.c          |    6 +-
 tools/perf/builtin-diff.c              |    1 +
 tools/perf/ui/browsers/hists.c         |   96 ++++++--
 tools/perf/ui/gtk/browser.c            |  101 +++++++--
 tools/perf/ui/gtk/gtk.h                |    1 +
 tools/perf/ui/gtk/setup.c              |    1 +
 tools/perf/ui/hist.c                   |  389 ++++++++++++++++++++++++++++++++
 tools/perf/ui/setup.c                  |    8 +-
 tools/perf/ui/stdio/hist.c             |  239 ++++----------------
 tools/perf/ui/tui/setup.c              |    4 +
 tools/perf/util/annotate.c             |    9 +-
 tools/perf/util/hist.c                 |   33 ---
 tools/perf/util/hist.h                 |   37 +++
 tools/perf/util/include/linux/kernel.h |    4 +
 tools/perf/util/probe-event.c          |   12 +-
 tools/perf/util/symbol.h               |    2 -
 17 files changed, 665 insertions(+), 280 deletions(-)
 create mode 100644 tools/perf/ui/hist.c

^ permalink raw reply	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2017-04-01 10:44 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-01-24 23:07 [GIT PULL 0/9] perf/core improvements and fixes Arnaldo Carvalho de Melo
2012-01-24 23:07 ` [PATCH 1/9] perf tools: Add fprintf methods for thread_map and cpu_map classes Arnaldo Carvalho de Melo
2012-01-24 23:07 ` [PATCH 2/9] perf tools: Introduce per user view Arnaldo Carvalho de Melo
2012-01-24 23:07 ` [PATCH 3/9] perf bench: Make "default" memcpy() selection actually use glibc's implementation Arnaldo Carvalho de Melo
2012-01-24 23:07 ` [PATCH 4/9] perf bench: Also allow measuring alternative memcpy implementations Arnaldo Carvalho de Melo
2012-01-24 23:07 ` [PATCH 5/9] perf bench: Also allow measuring memset() Arnaldo Carvalho de Melo
2012-01-24 23:07 ` [PATCH 6/9] perf bench: Allow passing an iteration count to "bench mem mem{cpy,set}" Arnaldo Carvalho de Melo
2012-01-24 23:07 ` [PATCH 7/9] perf tools: Fix broken build by defining _GNU_SOURCE in Makefile Arnaldo Carvalho de Melo
2012-01-24 23:08 ` [PATCH 8/9] perf probe: Usability fixes Arnaldo Carvalho de Melo
2012-01-24 23:08 ` [PATCH 9/9] perf tools: Fix strlen() bug in perf_event__synthesize_event_type() Arnaldo Carvalho de Melo
2012-01-26 11:16 ` [GIT PULL 0/9] perf/core improvements and fixes Ingo Molnar
2012-01-26 12:22   ` Fixing perf top --user shortcoming was: " Arnaldo Carvalho de Melo
2012-01-26 13:09     ` Ingo Molnar
2012-01-26 14:30       ` Arnaldo Carvalho de Melo
2012-01-26 18:32         ` Ingo Molnar
2012-01-26 19:24           ` Arnaldo Carvalho de Melo
2012-09-08 20:36 Arnaldo Carvalho de Melo
2012-09-09  8:40 ` Ingo Molnar
2012-10-26 14:31 Arnaldo Carvalho de Melo
2012-10-26 14:54 ` Ingo Molnar
2012-10-26 15:06   ` David Ahern
2012-10-26 15:31     ` Namhyung Kim
2012-10-26 15:34       ` Borislav Petkov
2012-10-26 16:31         ` Arnaldo Carvalho de Melo
2012-10-26 17:20           ` Borislav Petkov
2012-10-27  9:16             ` Namhyung Kim
2012-10-27 14:29               ` Arnaldo Carvalho de Melo
2012-10-27 17:12       ` stephane eranian
2012-10-26 17:05   ` Arnaldo Carvalho de Melo
2012-10-27 13:19     ` Ingo Molnar
2012-10-30  8:18       ` Ingo Molnar
2012-10-30  8:21         ` Peter Zijlstra
2012-10-30  9:14           ` Ingo Molnar
2014-05-28 13:20 Jiri Olsa
2014-06-03 20:36 Jiri Olsa
2014-06-05  8:45 ` Ingo Molnar
2014-06-19 16:38 Jiri Olsa
2015-08-10 20:56 Arnaldo Carvalho de Melo
2015-08-12 10:18 ` Ingo Molnar
2015-08-21 16:10 Arnaldo Carvalho de Melo
2015-08-22  6:47 ` Ingo Molnar
2015-09-23  1:57 Arnaldo Carvalho de Melo
2015-09-23  7:45 ` Ingo Molnar
2015-12-11 14:22 Arnaldo Carvalho de Melo
2015-12-14  8:32 ` Ingo Molnar
2017-04-01  2:10 Arnaldo Carvalho de Melo
2017-04-01 10:44 ` Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®