From: Joonwoo Park <joonwoop@codeaurora.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>,
Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, Namhyung Kim <namhyung@kernel.org>,
David Ahern <dsahern@gmail.com>, Jiri Olsa <jolsa@kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: Re: [PATCH 08/15] perf tools: Introduce timestamp_in_usec()
Date: Thu, 27 Oct 2016 16:14:55 -0700 [thread overview]
Message-ID: <41a9c8e5-044e-d42d-0e42-058b974d4f00@codeaurora.org> (raw)
In-Reply-To: <1477600855-27580-9-git-send-email-acme@kernel.org>
On 10/27/2016 01:40 PM, Arnaldo Carvalho de Melo wrote:
> From: Namhyung Kim <namhyung@kernel.org>
>
> Joonwoo reported that there's a mismatch between timestamps in script
> and sched commands. This was because of difference in printing the
> timestamp. Factor out the code and share it so that they can be in
> sync. Also I found that sched map has similar problem, fix it too.
>
> Reported-and-Acked-by: Joonwoo Park <joonwoop@codeaurora.org>
Hmm.. I didn't ACK this patch because of bug I commented at
https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1256724.html
s/work_list->max_lat/work_list->max_lat_at/
Do we have fix for this?
Thanks,
Joonwoo
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> Cc: David Ahern <dsahern@gmail.com>
> Cc: Jiri Olsa <jolsa@kernel.org>
> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Link: http://lkml.kernel.org/r/20161024020246.14928-3-namhyung@kernel.org
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> ---
> tools/perf/builtin-sched.c | 9 ++++++---
> tools/perf/builtin-script.c | 9 ++++++---
> tools/perf/util/util.c | 9 +++++++++
> tools/perf/util/util.h | 3 +++
> 4 files changed, 24 insertions(+), 6 deletions(-)
>
> diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
> index 1f33d15314a5..f0ab715b4923 100644
> --- a/tools/perf/builtin-sched.c
> +++ b/tools/perf/builtin-sched.c
> @@ -1191,6 +1191,7 @@ static void output_lat_thread(struct perf_sched *sched, struct work_atoms *work_
> int i;
> int ret;
> u64 avg;
> + char buf[32];
>
> if (!work_list->nb_atoms)
> return;
> @@ -1213,11 +1214,11 @@ static void output_lat_thread(struct perf_sched *sched, struct work_atoms *work_
>
> avg = work_list->total_lat / work_list->nb_atoms;
>
> - printf("|%11.3f ms |%9" PRIu64 " | avg:%9.3f ms | max:%9.3f ms | max at: %13.6f s\n",
> + printf("|%11.3f ms |%9" PRIu64 " | avg:%9.3f ms | max:%9.3f ms | max at: %13s s\n",
> (double)work_list->total_runtime / NSEC_PER_MSEC,
> work_list->nb_atoms, (double)avg / NSEC_PER_MSEC,
> (double)work_list->max_lat / NSEC_PER_MSEC,
> - (double)work_list->max_lat_at / NSEC_PER_SEC);
> + timestamp_in_usec(buf, sizeof(buf), work_list->max_lat));
> }
>
> static int pid_cmp(struct work_atoms *l, struct work_atoms *r)
> @@ -1402,6 +1403,7 @@ static int map_switch_event(struct perf_sched *sched, struct perf_evsel *evsel,
> int cpus_nr;
> bool new_cpu = false;
> const char *color = PERF_COLOR_NORMAL;
> + char buf[32];
>
> BUG_ON(this_cpu >= MAX_CPUS || this_cpu < 0);
>
> @@ -1492,7 +1494,8 @@ static int map_switch_event(struct perf_sched *sched, struct perf_evsel *evsel,
> if (sched->map.cpus && !cpu_map__has(sched->map.cpus, this_cpu))
> goto out;
>
> - color_fprintf(stdout, color, " %12.6f secs ", (double)timestamp / NSEC_PER_SEC);
> + color_fprintf(stdout, color, " %12s secs ",
> + timestamp_in_usec(buf, sizeof(buf), timestamp));
> if (new_shortname || (verbose && sched_in->tid)) {
> const char *pid_color = color;
>
> diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
> index 412fb6e65ac0..dae4d1013c33 100644
> --- a/tools/perf/builtin-script.c
> +++ b/tools/perf/builtin-script.c
> @@ -441,7 +441,6 @@ static void print_sample_start(struct perf_sample *sample,
> {
> struct perf_event_attr *attr = &evsel->attr;
> unsigned long secs;
> - unsigned long usecs;
> unsigned long long nsecs;
>
> if (PRINT_FIELD(COMM)) {
> @@ -468,14 +467,18 @@ static void print_sample_start(struct perf_sample *sample,
> }
>
> if (PRINT_FIELD(TIME)) {
> + char buf[32];
> + size_t sz = sizeof(buf);
> +
> nsecs = sample->time;
> secs = nsecs / NSEC_PER_SEC;
> nsecs -= secs * NSEC_PER_SEC;
> - usecs = nsecs / NSEC_PER_USEC;
> +
> if (nanosecs)
> printf("%5lu.%09llu: ", secs, nsecs);
> else
> - printf("%5lu.%06lu: ", secs, usecs);
> + printf("%12s: ", timestamp_in_usec(buf, sz,
> + sample->time));
> }
> }
>
> diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c
> index 85c56800f17a..aa3e778989ce 100644
> --- a/tools/perf/util/util.c
> +++ b/tools/perf/util/util.c
> @@ -433,6 +433,15 @@ int parse_nsec_time(const char *str, u64 *ptime)
> return 0;
> }
>
> +char *timestamp_in_usec(char *buf, size_t sz, u64 timestamp)
> +{
> + u64 sec = timestamp / NSEC_PER_SEC;
> + u64 usec = (timestamp % NSEC_PER_SEC) / NSEC_PER_USEC;
> +
> + scnprintf(buf, sz, "%"PRIu64".%06"PRIu64, sec, usec);
> + return buf;
> +}
> +
> unsigned long parse_tag_value(const char *str, struct parse_tag *tags)
> {
> struct parse_tag *i = tags;
> diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
> index 71b6992f1d98..ece974f1c538 100644
> --- a/tools/perf/util/util.h
> +++ b/tools/perf/util/util.h
> @@ -362,4 +362,7 @@ extern int sched_getcpu(void);
> #endif
>
> int is_printable_array(char *p, unsigned int len);
> +
> +char *timestamp_in_usec(char *buf, size_t sz, u64 timestamp);
> +
> #endif /* GIT_COMPAT_UTIL_H */
>
next prev parent reply other threads:[~2016-10-27 23:15 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-27 20:40 [GIT PULL 00/15] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 01/15] perf bench futex: Avoid worker cacheline bouncing Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 02/15] perf bench futex: Sanitize numeric parameters Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 03/15] perf hist browser: Fix hierarchy column counts Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 04/15] tools lib subcmd: Suppport cascading options Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 05/15] perf sched: Make common options cascading Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 06/15] perf sched map: Apply cpu color when there's an activity Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 07/15] perf sched map: Always show task comm with -v Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 08/15] perf tools: Introduce timestamp_in_usec() Arnaldo Carvalho de Melo
2016-10-27 23:14 ` Joonwoo Park [this message]
2016-10-28 12:53 ` Arnaldo Carvalho de Melo
2016-10-28 13:30 ` Arnaldo Carvalho de Melo
2016-10-28 14:42 ` [GIT PULL] " Arnaldo Carvalho de Melo
2016-10-28 17:39 ` Ingo Molnar
2016-10-28 17:46 ` Joonwoo Park
2016-10-27 20:40 ` [PATCH 09/15] perf list: Support matching by topic Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 10/15] perf bench mem: Ignore export.h related changes to mem{cpy,set}.S Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 11/15] tools: Update asm-generic/mman-common.h copy from the kernel Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 12/15] perf tools: Update x86's syscall_64.tbl, adding pkey_(alloc,free,mprotect) Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 13/15] perf scripting: Avoid leaking the scripting_context variable Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 14/15] perf scripting: Don't die if scripting can't be setup, disable it Arnaldo Carvalho de Melo
2016-10-27 20:40 ` [PATCH 15/15] perf tools: Add missing object file to the python binding linkage list Arnaldo Carvalho de Melo
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=41a9c8e5-044e-d42d-0e42-058b974d4f00@codeaurora.org \
--to=joonwoop@codeaurora.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=acme@redhat.com \
--cc=dsahern@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®