Re: [PATCH v5 0/7] perf/sdt: Directly record SDT events with 'perf record'
From: Masami Hiramatsu
Date: Thu Mar 16 2017 - 05:52:03 EST
On Tue, 14 Mar 2017 20:36:51 +0530
Ravi Bangoria <ravi.bangoria@xxxxxxxxxxxxxxxxxx> 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 <mhiramat@xxxxxxxxxx>