Re: [PATCH v4 1/3] perf: Use monotonic clock as a source for timestamps
From: Pawel Moll <hidden>
Date: 2015-01-21 15:52:41
Also in:
lkml
On Mon, 2015-01-05 at 13:00 +0000, Peter Zijlstra wrote:
On Thu, Nov 06, 2014 at 04:51:56PM +0000, Pawel Moll wrote:quoted
Documentation/kernel-parameters.txt | 9 +++++++++ kernel/events/core.c | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+)quoted
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 4c81a86..8ead8d8 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txtquoted
@@ -2763,6 +2764,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted. allocator. This parameter is primarily for debugging and performance comparison. + perf_use_local_clock + [PERF] + Use local_clock() as a source for perf timestamps + generation. This was be the default behaviour and + this parameter can be used to maintain backward + compatibility or on older hardware with expensive + monotonic clock source. + pf. [PARIDE] See Documentation/blockdev/paride.txt.So I'm always terminally confused on the naming of kernel parameters, sometimes things are modules (even when they're not actually =m capable) and get a module::foo naming or so and sometimes they're not.
I guess you mean module.foo?
So we want to use the module naming thing or not?
Honestly, I don't mind either way. For one thing ftrace doesn't bother and just uses __setup() as well.
quoted
diff --git a/kernel/events/core.c b/kernel/events/core.c index 2b02c9f..5d0aa03 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.cquoted
@@ -322,8 +323,41 @@ extern __weak const char *perf_pmu_name(void) return "pmu"; } +static bool perf_use_local_clock; +static int __init perf_use_local_clock_setup(char *__unused) +{ + perf_use_local_clock = true; + return 1; +} +__setup("perf_use_local_clock", perf_use_local_clock_setup);quoted
static inline u64 perf_clock(void) { + if (likely(!perf_use_local_clock)) + return ktime_get_mono_fast_ns(); + return local_clock(); }Since this all is boot time, should we not use things like static_key and avoid the 'pointless' conditional at runtime?
Right. it's good to learn new stuff - I didn't know there was architecture-agnostic support for jump labels. Definitely worth the effort, will give it a try and spin the patch. Pawel