[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <544768C6.6090105@linux.vnet.ibm.com>
Date: Wed, 22 Oct 2014 13:50:22 +0530
From: Hemant Kumar <hemant@...ux.vnet.ibm.com>
To: Masami Hiramatsu <masami.hiramatsu.pt@...achi.com>
CC: linux-kernel@...r.kernel.org, srikar@...ux.vnet.ibm.com,
peterz@...radead.org, oleg@...hat.com,
hegdevasant@...ux.vnet.ibm.com, mingo@...hat.com, anton@...hat.com,
systemtap@...rceware.org, namhyung@...nel.org,
aravinda@...ux.vnet.ibm.com, penberg@....fi
Subject: Re: [PATCH v3 5/5] perf/sdt: Add support to perf record to trace
SDT events
Hi Masami,
On 10/22/2014 12:15 PM, Masami Hiramatsu wrote:
> Hi Hemant,
>
> (2014/10/10 19:59), Hemant Kumar wrote:
>> The SDT events are already stored in a cache file
>> (/var/cache/perf/perf-sdt-file.cache).
> Please describe what this patch does at first.
>
Sure, will do that.
>> Although the file_hash table helps in addition or deletion of SDT events from the
>> cache, its not of much use when it comes to probing the actual SDT event,
>> because the key to this hash list is a file name and not the SDT event name
>> (which is given as an argument to perf record). So, we won't be able to hash
>> into it.
>>
>> To avoid this problem, we can create another hash list "event_hash" list which
>> will be maintained along with the file_hash list.
>> Whenever a user invokes 'perf record -e %provider:event, perf should initialize
>> the event_hash list and the file_hash list.
>> The key to event_hash list is calculated from the event name and its
>> provider name.
>>
>> event_hash sdt_note
>> |---------| ----------------
>> | | | file_ptr |==> container file_sdt_ent
>> key = 129 =>| hlist ==|===|=> event_list=|==> to sdt notes hashed to
>> | | | name | same entry
>> |---------| | provider |
>> | | | note_list==|==> to other notes in the
>> key = 130 =>| hlist | --------------- same file
>> |---------|
>>
>> The entry at that key in event_hash contains a list of SDT notes hashed to the
>> same entry. It compares the name and provider to see if that is the SDT note we
>> are looking for. If yes, find out the file that contains this SDT note. There is
>> a file_ptr pointer embedded in this note which points to the struct file_sdt_ent
>> contained in the file_hash. From "file_sdt_ent" we will find out the file name.
>> Convert this sdt note into a perf event and then write this into uprobe_events
>> file to be able to record the event.
>> Then, corresponding entries are added to uprobe_events file for
>> the SDT events.
>> After recording is done, these events are silently deleted from uprobe_events
>> file. The uprobe_events file is present in debugfs/tracing directory.
>>
>> To support the addition and deletion of SDT events to/from uprobe_events
>> file, a record_sdt struct is maintained which has the event data.
> OK, I have some comments on this.
>
>> An example usage:
>>
>> # ./perf record -e %user_app:fun_start -aR /home/user_app
> At first, I'd like to add SDT support for adding probes too, like below;
>
> ./perf probe -a '%user_app:fun_start $vars'
But I think, previously we discussed that we won't be having "perf
probe" for SDT events.
We list them and probe/trace them using "perf record" directly.
> So, maybe we don't need to remove the SDT-based events silently, nor
> hide it from users. I think you just need to add new sdt events and
> verify it if there is.
>
> BTW, for silently adding event, I'll introduce --quite(-q) option for
> perf probe. So you'll just need to set silent flag with that.
>
>
> Thank you,
>
>
--
Thanks,
Hemant Kumar
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists