On 01/09/2015 03:19 PM, Carl Love wrote:
> Arnaldo:
> 
>> I think this should be solved in the same way, i.e. content based keys,
>> that we call build-ids, every mapping, when put in place generates an
>> event, say PERF_RECORD_MMAP3, that comes with a key that can later be
>> used to retrieve the matching ELF file with DWARF info for annotation,
>> symbol resolution, unwinding, etc.
>>
>> Modern distros have this and that is why we store in the perf.data file
>> just the build ids, not the full ELF files at the time of the recording
>> session:
> 
> I have been looking at and trying to code up some JIT support for perf.
> I have written a library to register the callbacks from a Java
> application. That is all fairly easy stuff.
> 
> I have been trying to figure out how to get this library to communicate
> and send an event record to perf so perf can write it into perf.data, as
> you mentioned above.  Specifically we will want to write the load and
> unload records to perf.data.  The library gets loaded into the Java
> application but if you try loading the library in perf, they do not
> share the same data space so you can't pass the data directly.  
> 
> The only solution I see is creating a shared memory space where the
> library can place the event info.  Then perf will have to connect to the
> shared memory space and "watch" for data to show up.  This seems really
> awkward and slower then what we need. We need the notifications to be
> put into the perf.data file as close in time as possible to the event to
> ensure proper mapping of the addresses. It also means only one Java
> program can be using the interface at a time.  
> 
> I have thought about pipes, callbacks, but I don't see any way to get
> these to work between the library loaded in the Java program and perf.
> Just wondering if you had any thoughts on how to do the communication?
> 
>                  Carl Love

Hi Carl,

Too bad there isn't a "sys_perf_event" syscall to allow user-space applications 
to inject like a software event style entries into the kernel's recording of 
perf events. The AMD lightweight profiling mechanism specified the LWPINS 
instruction to insert a software event entry into the data buffer 
(http://support.amd.com/TechDocs/43724.pdf).  Seems like the linux kernel 
should have a similar mechanism to allow user and kernel-space to inject data 
in the perf records.

-Will
--
To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to