Thread (22 messages) flat view 22 messages, 6 authors, 2014-11-03

Re: [PATCH 2/2] perf: Userspace software event and ioctl

From: Ingo Molnar <hidden>
Date: 2014-09-24 07:49:49
Also in: lkml

* Pawel Moll [off-list ref] wrote:
On Thu, 2014-09-18 at 15:34 +0100, Pawel Moll wrote:
quoted
This patch adds a PERF_COUNT_SW_USERSPACE_EVENT type,
which can be generated by user with PERF_EVENT_IOC_ENTRY
ioctl command, which injects an event of said type into
the perf buffer.
It occurred to me last night that currently perf doesn't handle "write"
syscall at all, while this seems like the most natural way of
"injecting" userspace events into perf buffer.

An ioctl would still be needed to set a type of the following events,
something like:

	ioctl(SET_TYPE, 0x42);
	write(perf_fd, binaryblob, size);
	ioctl(SET_TYPE, 0);
	dprintf(perf_fd, "String");

which is fine for use cases when the type doesn't change often, 
but would double the amount of syscalls when every single event 
is of a different type. Perhaps there still should be a 
"generating ioctl" taking both type and data/size in one go?
Absolutely, there should be a single syscall.

I'd even argue it should be a new prctl(): that way we could both 
generate user events for specific perf fds, but also into any 
currently active context (that allows just generation/injection 
of user events). In the latter case we might have no fd to work 
off from.

And that is actually the really exciting usecase of your patches: 
we could generate user events via simple commands, and any 
external profiler/trace would be able to see them.

Thanks,

	Ingo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help