Re: [PATCH v2 4/4] clock: add perf_clock posix clock

Stephane Eranian
2015-02-18T18:11:01Z

On Wed, Feb 18, 2015 at 1:00 PM, John Stultz <john.stultz@linaro.org> wrote:
> On Wed, Feb 18, 2015 at 9:21 AM, Stephane Eranian <eranian@google.com> wrote:
>> This patch is a re-packaging of David's Ahern
>> posix perf clock available here:
>>
>> https://github.com/dsahern/linux/blob/perf-full-monty/README.ahern
>>
>> The patch itself is based on Pawel Moll's original post:
>>
>> https://lkml.org/lkml/2013/3/14/523
>>
>> The new clock is call PERF_CLOCK. To use it
>>
>> #include <time.h>
>> #include <linux/time.h>
>>
>> struct timespec ts;
>>
>> clock_gettime(PERF_CLOCK, &ts);
>
> I'd still strongly recommend against exposing the perf clock to
> userspace this way. The time domain isn't clearly different from
> something like CLOCK_MONOTONIC_RAW and doesn't really have well
> defined behavior. We're just exporting "whatever the kernel does
> internally" to userspace, and in the past similar internal use clocks
> like the sched_clock have changed their behavior, so I'm not confident
> the perf clock is really baked enough (including cross architectures)
> to make it part of the ABI.
>
> Pawel and others have continued to work on other approaches that allow
> for perf events to be interpolated to, or use CLOCK_MONOTONIC itself,
> which I don't object to, so you might want to follow up on those?
>
Personally, I don't have a preference. I want something that is EASY to
correlate to the perf_events timestamp and that is PORTABLE across
architectures. Where is the patch that uses CLOCK_MONOTONIC?
I assume it changes the clock used by perf_events and I further assume
this clock can be read from NMI context (without requiring locking).