On Tue, 14 Mar 2017 20:36:51 +0530 Ravi Bangoria <ravi.bango...@linux.vnet.ibm.com> wrote:
> All events from 'perf list', except SDT events, can be directly recorded > with 'perf record'. But, the flow is little different for SDT events. > Probe point for SDT event needs to be created using 'perf probe' before > recording it using 'perf record'. > > As suggested by Ingo[1], it's better to make this process simple by > creating probe point automatically with 'perf record' for SDT events. > > Features: > - Allow both 'perf probe' and 'perf record' on sdt events without > changing current functionality. > > - Event starting with 'sdt_' or '%' will be considered as SDT event. > > - Always prioritize events from uprobe_events by first checking if > event exists with exact name. If not found and user has used > pattern, again try to find pattern matching entries from > uprobe_events. If found use them. If not, lookup into probe-cache. > If events found from probe-cache, again check if any event exists > in uprobe_events by matching filepath+address, as it might exists > in uprobe_events but with different name. Reuse those events which > exists in uprobe_events and create new entries for missing one. > Also maintain list for new entries being created and at the end > of the session, delete them. > > - Show various warnings/hints to help user understand _which_ events > are being recorded and _why_. For ex, > > When multiple events of same name found and all are being recorded: > > $ sudo ./perf record -a -e sdt_libpthread:mutex_entry > Warning: Recording on 2 occurrences of sdt_libpthread:mutex_entry > > Events being reused from uprobe_events is listed as 'name addr@file' > followed by hint on how to delete them: > > $ sudo ./perf record -a -e sdt_libpthread:mutex_entry > Matching event(s) from uprobe_events: > sdt_libpthread:mutex_entry 0x9ddb@/usr/lib64/libpthread-2.24.so > Use 'perf probe -d <event>' to delete event(s). > > If number of events found from cache is not equal to number of events > being recorded: > > $ sudo ./perf record -a -e sdt_libpthread:mutex_entry > Warning: Found 2 events from probe-cache with name > 'sdt_libpthread:mutex_entry'. > Since 1 probe point already exists, recording only it. > Hint: Please use 'perf probe -d sdt_libpthread:mutex_entry' to allow > record on all events. > > - If all events found from probe-cache are not present in uprobe_events, > and user has used pattern to specify event, perf will record only > those events which are present in uprobe_events. This is to make perf > semantics consistent across normal and SDT events. And If user has > not used pattern, perf will record all events found from probe-cache > by reusing name for existing one and adding entries for missing one. > For ex, > > $ sudo ./perf probe sdt_libpthread:mutex_release > Added new events: > sdt_libpthread:mutex_release (on %mutex_release in > /usr/lib64/libpthread-2.24.so) > sdt_libpthread:mutex_release_1 (on %mutex_release in > /usr/lib64/libpthread-2.24.so) > sdt_libpthread:mutex_release_2 (on %mutex_release in > /usr/lib64/libpthread-2.24.so) > sdt_libpthread:mutex_release_3 (on %mutex_release in > /usr/lib64/libpthread-2.24.so) > $ sudo ./perf probe -d sdt_libpthread:mutex_release > $ sudo ./perf probe -d sdt_libpthread:mutex_release_2 > > $ sudo ./perf record -a -e sdt_libpthread:mutex_release* > Warning: Recording on 2 occurrences of sdt_libpthread:mutex_release* > > $ sudo ./perf record -a -e sdt_libpthread:mutex_release > Warning: Recording on 4 occurrences of sdt_libpthread:mutex_release > > Changes in v5: > - Patch 2/7 is new. New option introduced in this patch helps to pass > custome data from builtin-*.c to libperf. > > - All direct callbacks from libelf to builtin-record.c is removed. > > - Merged 2nd and 4th patch of v4 into patch 2 of v5. > > - Moved all functions from util/probe-file.c to util/probe-event.c > which operates on perf_probe_event. > > - Made free_sdt_list() static as it's only used inside util/probe-event.c. > > - Couple of other changes as Masami has suggested in v4 review. Hi Ravi, Could you also describe which patches are updated? It seems 1/7 is not modified, correct? Thank you, -- Masami Hiramatsu <mhira...@kernel.org>