On Fri, Jan 02, 2015 at 10:09:10AM -0700, David Ahern wrote:
On 1/2/15 10:02 AM, Shaohua Li wrote:
On Fri, Jan 02, 2015 at 08:31:33AM -0700, David Ahern wrote:
On 1/1/15 7:59 PM, Shaohua Li wrote:
I'm wondering how we could use the perf to implament a clock_gettime.
reading the perf fd or using ioctl is slow so reading the mmap
ringbuffer is the only option. But as far as I know the ringbuffer has
data only when an event is generated. Between two events, there is
nothing we can read from the ringbuffer. Then how can application get
time info in the interval?
Are you wanting to read perf_clock from userspace?
Yep, in some sort of form. Basically I want to read the time a task
runs. Peter suggests we can read the activation time of a perf event.
But I don't want to use any system call, as it's slow and likes
clock_gettime.
Since we cannot get the capability committed upstream a number of
folks are using this method:
https://github.com/dsahern/linux/blob/perf-full-monty/README.ahern
ie., a KLM exports perf_clock and apps can use:
#define CLOCK_PERF 14
if (clock_gettime(CLOCK_PERF, &ts) != 0) {
}
No vdso acceleration, but works with an unmodified kernel.
no, that's not what I want. as I said, we don't want any syscall (unless
it's vdso based).