[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.1.10.0901230948400.8605@gandalf.stny.rr.com>
Date: Fri, 23 Jan 2009 09:53:59 -0500 (EST)
From: Steven Rostedt <rostedt@...dmis.org>
To: Ingo Molnar <mingo@...e.hu>
cc: Frédéric Weisbecker <fweisbec@...il.com>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 1/2 v2] tracing/function-graph-tracer: various fixes and
features
On Fri, 23 Jan 2009, Ingo Molnar wrote:
>
> * Fr?d?ric Weisbecker <fweisbec@...il.com> wrote:
>
> > > Still needs a solution - if we do cross-CPU traces we want to have a
> > > global trace clock with 'seemless' transition between CPUs.
> >
> > So it doesn't only need a monotonic clock. It needs a global consistent
> > clock like ktime for example? Unfortunately this one uses seq_locks and
> > would add some drawbacks like verifying if the traced function doesn't
> > hold the write seq_lock and it will bring some more ftrace recursion...
>
> using ktime_get() is indeed out of question - GTOD callpaths are too
> complex (and also too slow).
>
> I'd not change anything in the current logic, but i was thinking of a new
> trace_option, which can be set optionally. If that trace option is set
> then this bit of ring_buffer_time_stamp():
>
> time = sched_clock() << DEBUG_SHIFT;
>
> gets turned into:
>
> time = cpu_clock(cpu) << DEBUG_SHIFT;
>
> This way we default to sched_clock(), but also gain some 'global'
> properties if the trace_option is set.
I would like to keep the ring buffer agnostic to ftrace, or any other
user. What we could do is add an interface to the ring buffer that will
allow the time keeping interface to be set by the buffer.
typedef u64 (*ring_buffer_time_stamp_func)(int cpu);
typedef void(*ring_buffer_normalize_func)(int cpu, u64 *ts);
void ring_buffer_add_time_source(ring_buffer_time_stamp_func *tsfunc,
ring_buffer_normalize_func *norfunc);
Then the ftrace tracer could pass in its own function to keep time.
This way we could also make several different tracers that use different
timesources to test them out and compare, without needing to reboot.
-- Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists