From: Frederic Weisbecker <fweisbec@gmail.com>
To: Zhaolei <zhaolei@cn.fujitsu.com>
Cc: Steven Rostedt <rostedt@goodmis.org>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Ingo Molnar <mingo@elte.hu>, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH] Add timer-source of walltime for ftrace
Date: Mon, 17 Aug 2009 18:49:11 +0200 [thread overview]
Message-ID: <20090817164909.GB4953@nowhere> (raw)
In-Reply-To: <4A89213C.5090109@cn.fujitsu.com>
On Mon, Aug 17, 2009 at 05:22:04PM +0800, Zhaolei wrote:
> We can add a timer-source for ftrace to support wall-time display.
> It is based on Steven Rostedt <rostedt@goodmis.org>'s suggestion in:
> http://lkml.org/lkml/2009/7/24/103
>
> It needs to be applied on my patch of:
> [PATCH v4 1/2] Add function to convert between calendar time and broken-down time for universal use
> and
> [PATCH v2 2/2] ftrace: Unify effect of writing to trace_options and option/*
>
> We can get following output:
> # cd /mnt/debugfs/tracing/
> # ls options/*clock
> options/global-clock options/local-clock options/walltime-clock
> # echo sched_switch > current_tracer
> # cat trace
> # tracer: sched_switch
> #
> # TASK-PID CPU# TIMESTAMP FUNCTION
> # | | | | |
> bash-3560 [000] 694.242386: 3560:120:S + [000] 3560:120:S bash
> bash-3560 [000] 694.242476: 3560:120:S + [000] 3560:120:S bash
> bash-3560 [000] 694.242865: 3560:120:R + [000] 5:115:S events/0
> bash-3560 [000] 694.242912: 3560:120:R ==> [000] 5:115:R events/0
> events/0-5 [000] 694.243015: 5:115:R + [000] 3558:120:S sshd
> events/0-5 [000] 694.243040: 5:115:S ==> [000] 3560:120:R bash
> bash-3560 [000] 694.243312: 3560:120:S + [000] 3560:120:S bash
> bash-3560 [000] 694.243374: 3560:120:S ==> [000] 3558:120:R sshd
> ...
> # echo 1 > options/walltime-clock
> # echo > trace
> # cat trace
> # tracer: sched_switch
> #
> # TASK-PID CPU# TIMESTAMP FUNCTION
> # | | | | |
> bash-3560 [000] 2009-08-17 23:58:22 3560:120:S + [000] 3560:120:S bash
> bash-3560 [000] 2009-08-17 23:58:22 3560:120:R + [000] 5:115:S events/0
> bash-3560 [000] 2009-08-17 23:58:22 3560:120:R ==> [000] 5:115:R events/0
> events/0-5 [000] 2009-08-17 23:58:22 5:115:R + [000] 3558:120:S sshd
> events/0-5 [000] 2009-08-17 23:58:22 5:115:S ==> [000] 3558:120:R sshd
> sshd-3558 [000] 2009-08-17 23:58:22 3558:120:S ==> [000] 3560:120:R bash
> bash-3560 [000] 2009-08-17 23:58:22 3560:120:S + [000] 3560:120:S bash
> bash-3560 [000] 2009-08-17 23:58:22 3560:120:S + [000] 3560:120:S bash
> ...
>
> Note:
> It is only a prototype patch to for demostrate what is result looks like.
> There still have many works to do(bug to fix) before apply.
> For example, we need to add a hook(tracepoint) of xtime change event,
> so we can update walltime's clock base then.
> And maybe we need clear all events when changing clock-source, because old
> clock value can't displayed correctly in new clock's format.
>
> Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
> ---
> include/linux/trace_clock.h | 1 +
> kernel/trace/trace.c | 55 ++++++++++++++++++++++++++++++------------
> kernel/trace/trace.h | 6 +++-
> kernel/trace/trace_clock.c | 47 ++++++++++++++++++++++++++++++++++++
> kernel/trace/trace_output.c | 20 ++++++++++++---
> 5 files changed, 107 insertions(+), 22 deletions(-)
>
> diff --git a/include/linux/trace_clock.h b/include/linux/trace_clock.h
> index 7a81303..322707e 100644
> --- a/include/linux/trace_clock.h
> +++ b/include/linux/trace_clock.h
> @@ -15,5 +15,6 @@
> extern u64 notrace trace_clock_local(void);
> extern u64 notrace trace_clock(void);
> extern u64 notrace trace_clock_global(void);
> +extern u64 notrace trace_clock_walltime(void);
>
> #endif /* _LINUX_TRACE_CLOCK_H */
> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index b7d873b..4474f7d 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -263,8 +263,8 @@ static DECLARE_WAIT_QUEUE_HEAD(trace_wait);
>
> /* trace_flags holds trace_options default values */
> unsigned long trace_flags = TRACE_ITER_PRINT_PARENT | TRACE_ITER_PRINTK |
> - TRACE_ITER_ANNOTATE | TRACE_ITER_CONTEXT_INFO | TRACE_ITER_SLEEP_TIME |
> - TRACE_ITER_GRAPH_TIME;
> + TRACE_ITER_ANNOTATE | TRACE_ITER_CONTEXT_INFO | TRACE_ITER_LOCAL_CLK |
> + TRACE_ITER_SLEEP_TIME | TRACE_ITER_GRAPH_TIME;
>
> /**
> * trace_wake_up - wake up tasks waiting for trace input
> @@ -324,6 +324,8 @@ static const char *trace_options[] = {
> "context-info",
> "latency-format",
> "global-clock",
> + "local-clock",
> + "walltime-clock",
> "sleep-time",
> "graph-time",
> NULL
> @@ -1423,8 +1425,17 @@ static void print_lat_help_header(struct seq_file *m)
>
> static void print_func_help_header(struct seq_file *m)
> {
> - seq_puts(m, "# TASK-PID CPU# TIMESTAMP FUNCTION\n");
> - seq_puts(m, "# | | | | |\n");
> + if (trace_flags & TRACE_ITER_WALLTIME_CLK) {
> + seq_puts(m, "# TASK-PID CPU# "
> + " TIMESTAMP FUNCTION\n");
> + seq_puts(m, "# | | | "
> + " | |\n");
> + } else {
> + seq_puts(m, "# TASK-PID CPU# "
> + " TIMESTAMP FUNCTION\n");
> + seq_puts(m, "# | | | "
> + " | |\n");
> + }
> }
>
>
> @@ -2151,30 +2162,42 @@ static int set_tracer_option(struct tracer *trace, char *cmp, int neg)
>
> static void set_tracer_flags(unsigned int mask, int enabled)
> {
> + u64 (*clkfunc)(void) = NULL;
> +
> /* do nothing if flag is already set */
> if (!!(trace_flags & mask) == !!enabled)
> return;
>
> - if (enabled)
> - trace_flags |= mask;
> - else
> - trace_flags &= ~mask;
> + if (mask == TRACE_ITER_GLOBAL_CLK)
> + clkfunc = trace_clock_global;
> + if (mask == TRACE_ITER_LOCAL_CLK)
> + clkfunc = trace_clock_local;
> + if (mask == TRACE_ITER_WALLTIME_CLK)
> + clkfunc = trace_clock_walltime;
>
> - if (mask == TRACE_ITER_GLOBAL_CLK) {
> - u64 (*func)(void);
> + if (clkfunc) {
> + if (!enabled)
> + return;
If the user set a clock option file to 0, then it means he
was expecting something, probably reset the default clock
which is clock_local.
But what if the user set 0 to the local_clock...hmm..
next prev parent reply other threads:[~2009-08-17 16:49 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-24 10:40 [PATCH 0/3] Add walltime support for ring-buffer Zhaolei
2009-07-24 10:42 ` [PATCH] " Zhaolei
2009-07-24 10:47 ` Zhaolei
2009-07-24 10:43 ` [RFC PATCH 1/3] " Zhaolei
2009-07-24 10:43 ` [RFC PATCH 2/3] Apply walltime-supporting functions to trace system Zhaolei
2009-07-24 10:44 ` [RFC PATCH 3/3] Make ftrace display walltime in output Zhaolei
2009-07-24 13:05 ` [PATCH 0/3] Add walltime support for ring-buffer Steven Rostedt
2009-07-28 1:43 ` KOSAKI Motohiro
2009-07-28 1:53 ` Frederic Weisbecker
2009-07-28 2:19 ` Steven Rostedt
2009-08-17 9:22 ` [RFC PATCH] Add timer-source of walltime for ftrace Zhaolei
2009-08-17 16:49 ` Frederic Weisbecker [this message]
2009-08-18 2:09 ` Zhaolei
2009-08-18 18:52 ` Steven Rostedt
2009-08-18 15:57 ` KOSAKI Motohiro
2009-08-18 18:58 ` Steven Rostedt
2009-08-19 9:16 ` Zhaolei
2009-08-25 8:12 ` [PATCH 0/3] ftrace: " Zhaolei
2009-08-25 8:12 ` [PATCH 1/3] ftrace: Move setting of clock-source out of options Zhaolei
2009-08-26 2:35 ` Steven Rostedt
2009-08-26 7:23 ` [tip:tracing/core] " tip-bot for Zhaolei
2009-08-25 8:14 ` [PATCH 2/3] ftrace: add tracepoint for xtime Zhaolei
2009-08-26 2:39 ` Steven Rostedt
2009-09-01 8:03 ` Zhaolei
2009-09-16 19:56 ` john stultz
2009-09-16 19:58 ` john stultz
2009-09-16 20:32 ` Steven Rostedt
2009-09-16 20:49 ` john stultz
2009-09-17 6:34 ` Zhaolei
2009-08-25 8:15 ` [PATCH 3/3] ftrace: Add timer-source of walltime for ftrace Zhaolei
2009-08-26 2:52 ` Steven Rostedt
2009-09-16 5:25 ` [PATCH v2 0/2] " Zhaolei
2009-09-16 5:27 ` [PATCH v2 1/2] ftrace: add tracepoint for xtime Zhaolei
2009-09-16 19:33 ` Steven Rostedt
2009-09-16 5:29 ` [PATCH v2 2/2] ftrace: Add timer-source of walltime for ftrace Zhaolei
2009-09-16 5:59 ` Frederic Weisbecker
2009-09-16 6:40 ` Zhaolei
2009-09-16 19:37 ` Steven Rostedt
2009-09-17 7:10 ` Zhaolei
2009-11-04 9:39 ` [PATCH v3] ftrace: Add timer-source of walltime Zhaolei
2009-11-04 9:39 ` Zhaolei
2009-11-04 9:41 ` Zhaolei
2009-07-28 2:23 ` [PATCH 0/3] Add walltime support for ring-buffer KOSAKI Motohiro
2009-08-03 7:22 ` Ingo Molnar
2009-08-03 9:32 ` KOSAKI Motohiro
2009-08-04 14:38 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090817164909.GB4953@nowhere \
--to=fweisbec@gmail.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rostedt@goodmis.org \
--cc=zhaolei@cn.fujitsu.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.