linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/54] perf tools: Bugfix, BPF improvements and overwrite ring buffer support
@ 2016-02-05 14:01 Wang Nan
  2016-02-05 14:01 ` [PATCH 01/54] perf tools: Fix dangling pointers in parse_events__free_terms Wang Nan
                   ` (53 more replies)
  0 siblings, 54 replies; 78+ messages in thread
From: Wang Nan @ 2016-02-05 14:01 UTC (permalink / raw)
  To: Alexei Starovoitov, Arnaldo Carvalho de Melo,
	Arnaldo Carvalho de Melo, Brendan Gregg
  Cc: Adrian Hunter, Cody P Schafer, David S. Miller, He Kuang,
	Jérémie Galarneau, Jiri Olsa, Kirill Smelkov, Li Zefan,
	Masami Hiramatsu, Namhyung Kim, Peter Zijlstra, pi3orama,
	Wang Nan, linux-kernel

Hi Arnaldo,

The following changes since commit 89fee59b504f86925894fcc9ba79d5c933842f93:

  perf tools: handle spaces in file names obtained from /proc/pid/maps (2016-02-05 09:39:56 -0300)

are available in the git repository at:

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

for you to fetch changes up to f9c0effb2643da8f7712936df46444e260b87dc1:

  perf tools: Don't warn about out of order event if write_backward is used (2016-02-05 13:44:29 +0000)

----------------------------------------------------------------
perf improvements:

 - Code clean: based on Arnaldo's suggestion.

 - Remove '-e evt=cycles' symtax. Enforce existing 'cycles/name=evt/'
   syntax.

 - Forbid improper config terms passing to 'perf stat'. i.e. 'perf stat -e cycles/no-inherit/ ...'

Signed-off-by: Wang Nan <wangnan0@huawei.com>

----------------------------------------------------------------
Wang Nan (54):
      perf tools: Fix dangling pointers in parse_events__free_terms
      perf tools: Fix symbols searching for offline module in buildid-cache
      perf tools: Record text offset in dso to calculate objdump address
      perf tools: Adjust symbol for shared objects
      perf data: Fix releasing event_class
      perf tools: Add API to config maps in bpf object
      perf tools: Enable BPF object configure syntax
      perf record: Apply config to BPF objects before recording
      perf tools: Enable passing event to BPF object
      perf stat: Forbid user passing improper config terms
      perf tools: Rename and move pmu_event_name to get_config_name
      perf tools: Enable config raw and numeric events
      perf tools: Enable config and setting names for legacy cache events
      perf tools: Support setting different slots in a BPF map separately
      perf tools: Enable indices setting syntax for BPF maps
      perf tools: Pass tracepoint options to BPF script
      perf tools: Introduce bpf-output event
      perf data: Support converting data from bpf_perf_event_output()
      perf core: Introduce new ioctl options to pause and resume ring buffer
      perf core: Set event's default overflow_handler
      perf core: Prepare writing into ring buffer from end
      perf core: Add backward attribute to perf event
      perf core: Reduce perf event output overhead by new overflow handler
      perf tools: Only validate is_pos for tracking evsels
      perf tools: Print write_backward value in perf_event_attr__fprintf
      perf tools: Make ordered_events reusable
      perf record: Extract synthesize code to record__synthesize()
      perf tools: Add perf_data_file__switch() helper
      perf record: Turns auxtrace_snapshot_enable into 3 states
      perf record: Introduce record__finish_output() to finish a perf.data
      perf record: Add '--timestamp-filename' option to append timestamp to output filename
      perf record: Split output into multiple files via '--switch-output'
      perf record: Force enable --timestamp-filename when --switch-output is provided
      perf record: Disable buildid cache options by default in switch output mode
      perf record: Re-synthesize tracking events after output switching
      perf record: Generate tracking events for process forked by perf
      perf record: Ensure return non-zero rc when mmap fail
      perf record: Prevent reading invalid data in record__mmap_read
      perf tools: Add evlist channel helpers
      perf tools: Automatically add new channel according to evlist
      perf tools: Operate multiple channels
      perf tools: Squash overwrite setting into channel
      perf record: Don't read from and poll overwrite channel
      perf record: Don't poll on overwrite channel
      perf tools: Detect avalibility of write_backward
      perf tools: Enable overwrite settings
      perf tools: Set write_backward attribut bit for overwrite events
      perf tools: Record fd into perf_mmap
      perf tools: Add API to pause a channel
      perf record: Toggle overwrite ring buffer for reading
      perf record: Rename variable to make code clear
      perf record: Read from backward ring buffer
      perf record: Allow generate tracking events at the end of output
      perf tools: Don't warn about out of order event if write_backward is used

 include/linux/perf_event.h        |  22 +-
 include/uapi/linux/perf_event.h   |   4 +-
 kernel/events/core.c              |  73 +++-
 kernel/events/internal.h          |  11 +
 kernel/events/ring_buffer.c       |  63 +++-
 tools/perf/builtin-record.c       | 598 ++++++++++++++++++++++++++-----
 tools/perf/builtin-stat.c         |   1 +
 tools/perf/perf.h                 |   2 +
 tools/perf/tests/bpf.c            |   2 +-
 tools/perf/util/bpf-loader.c      | 719 ++++++++++++++++++++++++++++++++++++++
 tools/perf/util/bpf-loader.h      |  59 ++++
 tools/perf/util/build-id.c        |  44 +++
 tools/perf/util/build-id.h        |   1 +
 tools/perf/util/data-convert-bt.c | 130 ++++++-
 tools/perf/util/data.c            |  36 ++
 tools/perf/util/data.h            |  11 +-
 tools/perf/util/dso.h             |   1 +
 tools/perf/util/evlist.c          | 355 ++++++++++++++++---
 tools/perf/util/evlist.h          |  70 +++-
 tools/perf/util/evsel.c           |  23 ++
 tools/perf/util/evsel.h           |  11 +
 tools/perf/util/map.c             |  14 +
 tools/perf/util/ordered-events.c  |   5 +
 tools/perf/util/parse-events.c    | 267 ++++++++++++--
 tools/perf/util/parse-events.h    |  28 +-
 tools/perf/util/parse-events.l    |  18 +-
 tools/perf/util/parse-events.y    | 134 ++++++-
 tools/perf/util/record.c          |  11 +
 tools/perf/util/session.c         |  22 +-
 tools/perf/util/symbol-elf.c      |  25 +-
 tools/perf/util/symbol.c          |   4 +
 31 files changed, 2532 insertions(+), 232 deletions(-)

-- 
1.8.3.4

^ permalink raw reply	[flat|nested] 78+ messages in thread
* Re: [PATCH 06/54] perf tools: Add API to config maps in bpf object
@ 2016-02-19 13:53 Arnaldo Carvalho de Melo
  2016-02-22  4:05 ` Wangnan (F)
  0 siblings, 1 reply; 78+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-19 13:53 UTC (permalink / raw)
  To: Wang Nan
  Cc: Alexei Starovoitov, Brendan Gregg, Adrian Hunter, Cody P Schafer,
	David S. Miller, He Kuang, Jérémie Galarneau, Jiri Olsa,
	Kirill Smelkov, Li Zefan, Masami Hiramatsu, Namhyung Kim,
	Peter Zijlstra, pi3orama, linux-kernel

Sorry for the top post, but the message below didn't made it thru due to
local problems as I recently switched notebooks, my postfix setup barfed
this one :-\

This is what I have in my tmp.perf/bpf_map:

https://git.kernel.org/cgit/linux/kernel/git/acme/linux.git/commit/?h=tmp.perf/bpf_map&id=5c78fe3c5a944ba7f9a85f59548295211f3d252c

Please take a look and see if you're ok with it,

I'm going thru the other patches in this week's patchkit, thanks
for keeping up with this work,

Regards,

- Arnaldo

Em Fri, Feb 05, 2016 at 02:01:31PM +0000, Wang Nan escreveu:
> bpf__config_obj() is introduced as a core API to config BPF object
> after loading. One configuration option of maps is introduced. After
> this patch BPF object can accept configuration like:
> 
>  maps:my_map.value=1234

Ok, tested this, works great, trace_printk gets what I pass via the
event definition, etc.

One suggestion, tho. I think "maps", plural, is strange, we're referring
to one map, not multiple ones when we write: "map:my_map.value=1234", so
I have this on a separate branch, tmp.perf/bpf_map, do you agree?
Shorter, one character less to type :-)

I also changed some error reports and the commit log, hope that improved
it, please also take a look.

I'm now working on the patch right after this, all will be on the
tmp.perf/bpf_map shortly.

- Arnaldo

diff --git a/tools/perf/util/bpf-loader.c b/tools/perf/util/bpf-loader.c
index e24d5b7a9fec..fdb23c785ced 100644
--- a/tools/perf/util/bpf-loader.c
+++ b/tools/perf/util/bpf-loader.c
@@ -921,8 +921,8 @@ bpf__obj_config_map(struct bpf_object *obj,
 		    struct perf_evlist *evlist,
 		    int *key_scan_pos)
 {
-	/* key is "maps:<mapname>.<config opt>" */
-	char *map_name = strdup(term->config + sizeof("maps:") - 1);
+	/* key is "map:<mapname>.<config opt>" */
+	char *map_name = strdup(term->config + sizeof("map:") - 1);
 	struct bpf_map *map;
 	int err = -BPF_LOADER_ERRNO__OBJCONF_OPT;
 	char *map_opt;
@@ -961,8 +961,7 @@ bpf__obj_config_map(struct bpf_object *obj,
 		}
 	}
 
-	pr_debug("ERROR: Invalid config option '%s' for maps\n",
-		 map_opt);
+	pr_debug("ERROR: Invalid map config option '%s'\n", map_opt);
 	err = -BPF_LOADER_ERRNO__OBJCONF_MAP_OPT;
 out:
 	free(map_name);
@@ -982,8 +981,8 @@ int bpf__config_obj(struct bpf_object *obj,
 	if (!obj || !term || !term->config)
 		return -EINVAL;
 
-	if (!prefixcmp(term->config, "maps:")) {
-		key_scan_pos = sizeof("maps:") - 1;
+	if (!prefixcmp(term->config, "map:")) {
+		key_scan_pos = sizeof("map:") - 1;
 		err = bpf__obj_config_map(obj, term, evlist, &key_scan_pos);
 		goto out;
 	}
@@ -1011,7 +1010,7 @@ static const char *bpf_loader_strerror_table[NR_ERRNO] = {
 	[ERRCODE_OFFSET(PROLOGUEOOB)]	= "Offset out of bound for prologue",
 	[ERRCODE_OFFSET(OBJCONF_OPT)]	= "Invalid object config option",
 	[ERRCODE_OFFSET(OBJCONF_CONF)]	= "Config value not set (missing '=')",
-	[ERRCODE_OFFSET(OBJCONF_MAP_OPT)]	= "Invalid object maps config option",
+	[ERRCODE_OFFSET(OBJCONF_MAP_OPT)]	= "Invalid object map config option",
 	[ERRCODE_OFFSET(OBJCONF_MAP_NOTEXIST)]	= "Target map doesn't exist",
 	[ERRCODE_OFFSET(OBJCONF_MAP_VALUE)]	= "Incorrect value type for map",
 	[ERRCODE_OFFSET(OBJCONF_MAP_TYPE)]	= "Incorrect map type",

----- End forwarded message -----

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

end of thread, other threads:[~2016-02-22 15:17 UTC | newest]

Thread overview: 78+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-05 14:01 [PATCH 00/54] perf tools: Bugfix, BPF improvements and overwrite ring buffer support Wang Nan
2016-02-05 14:01 ` [PATCH 01/54] perf tools: Fix dangling pointers in parse_events__free_terms Wang Nan
2016-02-16  7:53   ` [tip:perf/core] perf tools: Unlink entries from terms list tip-bot for Wang Nan
2016-02-16  7:54   ` [tip:perf/core] perf tools: Free the terms list_head in parse_events__free_terms() tip-bot for Wang Nan
2016-02-05 14:01 ` [PATCH 02/54] perf tools: Fix symbols searching for offline module in buildid-cache Wang Nan
2016-02-16  7:52   ` [tip:perf/core] perf symbols: Fix symbols searching for " tip-bot for Wang Nan
2016-02-05 14:01 ` [PATCH 03/54] perf tools: Record text offset in dso to calculate objdump address Wang Nan
2016-02-05 14:01 ` [PATCH 04/54] perf tools: Adjust symbol for shared objects Wang Nan
2016-02-05 14:01 ` [PATCH 05/54] perf data: Fix releasing event_class Wang Nan
     [not found]   ` <20160211220413.GF32168@kernel.org>
2016-02-12 12:19     ` Jiri Olsa
2016-02-12 15:42       ` Arnaldo Carvalho de Melo
2016-02-16  7:55   ` [tip:perf/core] " tip-bot for Wang Nan
2016-02-05 14:01 ` [PATCH 06/54] perf tools: Add API to config maps in bpf object Wang Nan
2016-02-05 14:01 ` [PATCH 07/54] perf tools: Enable BPF object configure syntax Wang Nan
2016-02-12 14:09   ` Jiri Olsa
2016-02-18  6:17     ` Wangnan (F)
2016-02-05 14:01 ` [PATCH 08/54] perf record: Apply config to BPF objects before recording Wang Nan
2016-02-12 20:55   ` Arnaldo Carvalho de Melo
2016-02-05 14:01 ` [PATCH 09/54] perf tools: Enable passing event to BPF object Wang Nan
2016-02-12 14:05   ` Jiri Olsa
2016-02-05 14:01 ` [PATCH 10/54] perf stat: Forbid user passing improper config terms Wang Nan
2016-02-12 13:49   ` Jiri Olsa
2016-02-12 15:45     ` Arnaldo Carvalho de Melo
2016-02-12 15:50       ` Jiri Olsa
2016-02-05 14:01 ` [PATCH 11/54] perf tools: Rename and move pmu_event_name to get_config_name Wang Nan
2016-02-05 14:01 ` [PATCH 12/54] perf tools: Enable config raw and numeric events Wang Nan
2016-02-12 13:52   ` Jiri Olsa
2016-02-12 13:56     ` pi3orama
2016-02-12 13:56     ` Jiri Olsa
2016-02-12 14:10   ` Jiri Olsa
2016-02-12 14:12   ` Jiri Olsa
2016-02-05 14:01 ` [PATCH 13/54] perf tools: Enable config and setting names for legacy cache events Wang Nan
2016-02-05 14:01 ` [PATCH 14/54] perf tools: Support setting different slots in a BPF map separately Wang Nan
2016-02-12 14:23   ` Jiri Olsa
2016-02-12 14:34     ` pi3orama
2016-02-05 14:01 ` [PATCH 15/54] perf tools: Enable indices setting syntax for BPF maps Wang Nan
2016-02-05 14:01 ` [PATCH 16/54] perf tools: Pass tracepoint options to BPF script Wang Nan
2016-02-05 14:01 ` [PATCH 17/54] perf tools: Introduce bpf-output event Wang Nan
2016-02-05 14:01 ` [PATCH 18/54] perf data: Support converting data from bpf_perf_event_output() Wang Nan
2016-02-05 14:01 ` [PATCH 19/54] perf core: Introduce new ioctl options to pause and resume ring buffer Wang Nan
2016-02-05 14:01 ` [PATCH 20/54] perf core: Set event's default overflow_handler Wang Nan
2016-02-05 14:01 ` [PATCH 21/54] perf core: Prepare writing into ring buffer from end Wang Nan
2016-02-05 14:01 ` [PATCH 22/54] perf core: Add backward attribute to perf event Wang Nan
2016-02-05 14:01 ` [PATCH 23/54] perf core: Reduce perf event output overhead by new overflow handler Wang Nan
2016-02-05 14:01 ` [PATCH 24/54] perf tools: Only validate is_pos for tracking evsels Wang Nan
2016-02-05 14:01 ` [PATCH 25/54] perf tools: Print write_backward value in perf_event_attr__fprintf Wang Nan
2016-02-05 14:01 ` [PATCH 26/54] perf tools: Make ordered_events reusable Wang Nan
2016-02-05 14:01 ` [PATCH 27/54] perf record: Extract synthesize code to record__synthesize() Wang Nan
2016-02-05 14:01 ` [PATCH 28/54] perf tools: Add perf_data_file__switch() helper Wang Nan
2016-02-05 14:01 ` [PATCH 29/54] perf record: Turns auxtrace_snapshot_enable into 3 states Wang Nan
2016-02-05 14:01 ` [PATCH 30/54] perf record: Introduce record__finish_output() to finish a perf.data Wang Nan
2016-02-05 14:01 ` [PATCH 31/54] perf record: Add '--timestamp-filename' option to append timestamp to output filename Wang Nan
2016-02-05 14:01 ` [PATCH 32/54] perf record: Split output into multiple files via '--switch-output' Wang Nan
2016-02-05 14:01 ` [PATCH 33/54] perf record: Force enable --timestamp-filename when --switch-output is provided Wang Nan
2016-02-05 14:01 ` [PATCH 34/54] perf record: Disable buildid cache options by default in switch output mode Wang Nan
2016-02-05 14:02 ` [PATCH 35/54] perf record: Re-synthesize tracking events after output switching Wang Nan
2016-02-05 14:02 ` [PATCH 36/54] perf record: Generate tracking events for process forked by perf Wang Nan
2016-02-05 14:02 ` [PATCH 37/54] perf record: Ensure return non-zero rc when mmap fail Wang Nan
2016-02-05 14:02 ` [PATCH 38/54] perf record: Prevent reading invalid data in record__mmap_read Wang Nan
2016-02-05 14:02 ` [PATCH 39/54] perf tools: Add evlist channel helpers Wang Nan
2016-02-05 14:02 ` [PATCH 40/54] perf tools: Automatically add new channel according to evlist Wang Nan
2016-02-05 14:02 ` [PATCH 41/54] perf tools: Operate multiple channels Wang Nan
2016-02-05 14:02 ` [PATCH 42/54] perf tools: Squash overwrite setting into channel Wang Nan
2016-02-05 14:02 ` [PATCH 43/54] perf record: Don't read from and poll overwrite channel Wang Nan
2016-02-05 14:02 ` [PATCH 44/54] perf record: Don't poll on " Wang Nan
2016-02-05 14:02 ` [PATCH 45/54] perf tools: Detect avalibility of write_backward Wang Nan
2016-02-05 14:02 ` [PATCH 46/54] perf tools: Enable overwrite settings Wang Nan
2016-02-05 14:02 ` [PATCH 47/54] perf tools: Set write_backward attribut bit for overwrite events Wang Nan
2016-02-05 14:02 ` [PATCH 48/54] perf tools: Record fd into perf_mmap Wang Nan
2016-02-05 14:02 ` [PATCH 49/54] perf tools: Add API to pause a channel Wang Nan
2016-02-05 14:02 ` [PATCH 50/54] perf record: Toggle overwrite ring buffer for reading Wang Nan
2016-02-05 14:02 ` [PATCH 51/54] perf record: Rename variable to make code clear Wang Nan
2016-02-05 14:02 ` [PATCH 52/54] perf record: Read from backward ring buffer Wang Nan
2016-02-05 14:02 ` [PATCH 53/54] perf record: Allow generate tracking events at the end of output Wang Nan
2016-02-05 14:02 ` [PATCH 54/54] perf tools: Don't warn about out of order event if write_backward is used Wang Nan
  -- strict thread matches above, loose matches on Subject: below --
2016-02-19 13:53 [PATCH 06/54] perf tools: Add API to config maps in bpf object Arnaldo Carvalho de Melo
2016-02-22  4:05 ` Wangnan (F)
2016-02-22 15:17   ` Arnaldo Carvalho de Melo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).