perf report: Use timestamp__scnprintf_nsec for time sort key
PATCH 1/2 perf report: Use timestamp__scnprintf_nsec for time sort key
From: Andi Kleen <[email protected]>
Use timestamp__scnprintf_nsec to print nanoseconds for the time sort key, instead of open coding.
--- tools/perf/util/sort.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-)
tools/perf/util/sort.c +2 -8
@@ -668,17 +668,11 @@ sort__time_cmp(struct hist_entry *left, struct hist_entry *right)static int hist_entry__time_snprintf (struct hist_entry *he,char *bf,size_t size,unsigned int width) { -unsigned long secs; -unsigned long long nsecs;char he_time[32 ]; - nsecs = he->time; - secs = nsecs /NSEC_PER_SEC ; - nsecs -= secs *NSEC_PER_SEC ; -if (symbol_conf.nanosecs) -snprintf (he_time,sizeof he_time,"%5lu.%09llu: " , - secs, nsecs); +timestamp__scnprintf_nsec (he->time, he_time, +sizeof (he_time));else timestamp__scnprintf_usec (he->time, he_time,sizeof (he_time));
Signature · 1 line
2.20.1
PATCH 2/2 perf report: Fix --ns time sort key output
From: Andi Kleen <[email protected]>
If the user specified --ns, the column to print the sort time stamp wasn't wide enough to actually print the full nanoseconds.
Widen the time key column width when --ns is specified.
Before:
% perf record -a sleep 1
% perf report --sort time,overhead,symbol --stdio --ns
...
2.39% 187851.10000 [k] smp_call_function_single - -
1.53% 187851.10000 [k] intel_idle - -
0.59% 187851.10000 [.] __wcscmp_ifunc - -
0.33% 187851.10000 [.] 0000000000000000 - -
0.28% 187851.10000 [k] cpuidle_enter_state - -After:
% perf report --sort time,overhead,symbol --stdio --ns
...
2.39% 187851.100000000 [k] smp_call_function_single - -
1.53% 187851.100000000 [k] intel_idle - -
0.59% 187851.100000000 [.] __wcscmp_ifunc - -
0.33% 187851.100000000 [.] 0000000000000000 - -
0.28% 187851.100000000 [k] cpuidle_enter_state - ---- tools/perf/util/hist.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
tools/perf/util/hist.c +4 -1
@@ -193,7 +193,10 @@ void hists__calc_col_len(struct hists *hists, struct hist_entry *h)hists__new_col_len (hists,HISTC_MEM_LVL ,21 +3 );hists__new_col_len (hists,HISTC_LOCAL_WEIGHT ,12 );hists__new_col_len (hists,HISTC_GLOBAL_WEIGHT ,12 ); -hists__new_col_len (hists,HISTC_TIME ,12 ); +if (symbol_conf.nanosecs) +hists__new_col_len (hists,HISTC_TIME ,16 ); +else +hists__new_col_len (hists,HISTC_TIME ,12 );if (h->srcline) { len =MAX (strlen (h->srcline),strlen (sort_srcline.se_header));
Signature · 1 line
2.20.1
[tip: perf/core] perf report: Fix --ns time sort key output
The following commit has been merged into the perf/core branch of tip:
The following commit has been merged into the perf/core branch of tip:
Commit-ID: 3dab6ac080dcd7f71cb9ceb84ad7dafecd6f7c07 Gitweb: https://git.kernel.org/tip/3dab6ac080dcd7f71cb9ceb84ad7dafecd6f7c07 Author: Andi Kleen <[email protected]> AuthorDate: Fri, 23 Aug 2019 14:03:38 -07:00 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitterDate: Mon, 26 Aug 2019 11:58:29 -03:00
perf report: Fix --ns time sort key output
If the user specified --ns, the column to print the sort time stamp wasn't wide enough to actually print the full nanoseconds.
Widen the time key column width when --ns is specified.
Before:
% perf record -a sleep 1
% perf report --sort time,overhead,symbol --stdio --ns
...
2.39% 187851.10000 [k] smp_call_function_single - -
1.53% 187851.10000 [k] intel_idle - -
0.59% 187851.10000 [.] __wcscmp_ifunc - -
0.33% 187851.10000 [.] 0000000000000000 - -
0.28% 187851.10000 [k] cpuidle_enter_state - -After:
% perf report --sort time,overhead,symbol --stdio --ns
...
2.39% 187851.100000000 [k] smp_call_function_single - -
1.53% 187851.100000000 [k] intel_idle - -
0.59% 187851.100000000 [.] __wcscmp_ifunc - -
0.33% 187851.100000000 [.] 0000000000000000 - -
0.28% 187851.100000000 [k] cpuidle_enter_state - ---- tools/perf/util/hist.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
tools/perf/util/hist.c +4 -1
@@ -193,7 +193,10 @@ void hists__calc_col_len(struct hists *hists, struct hist_entry *h)hists__new_col_len (hists,HISTC_MEM_LVL ,21 +3 );hists__new_col_len (hists,HISTC_LOCAL_WEIGHT ,12 );hists__new_col_len (hists,HISTC_GLOBAL_WEIGHT ,12 ); -hists__new_col_len (hists,HISTC_TIME ,12 ); +if (symbol_conf.nanosecs) +hists__new_col_len (hists,HISTC_TIME ,16 ); +else +hists__new_col_len (hists,HISTC_TIME ,12 );if (h->srcline) { len =MAX (strlen (h->srcline),strlen (sort_srcline.se_header));
Em Fri, Aug 23, 2019 at 02:03:37PM -0700, Andi Kleen escreveu:
Quoted 4 lines
From: Andi Kleen <[email protected]>
Use
timestamp__scnprintf_nsecto print nanoseconds for the time sort key, instead of open coding.
Thanks, tested and applied.
- Arnaldo
Quoted 31 lines
Signed-off-by Andi Kleen <[email protected]>--- tools/perf/util/sort.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-)tools/perf/util/sort.c +2
-8@@ -668,17 +668,11 @@ sort__time_cmp(struct hist_entry *left, struct hist_entry *right)static int hist_entry__time_snprintf (struct hist_entry *he,char *bf,size_t size,unsigned int width) { -unsigned long secs; -unsigned long long nsecs;char he_time[32 ]; - nsecs = he->time; - secs = nsecs /NSEC_PER_SEC ; - nsecs -= secs *NSEC_PER_SEC ; -if (symbol_conf.nanosecs) -snprintf (he_time,sizeof he_time,"%5lu.%09llu: " , - secs, nsecs); +timestamp__scnprintf_nsec (he->time, he_time, +sizeof (he_time));else timestamp__scnprintf_usec (he->time, he_time,sizeof (he_time));Signature · 1 line
2.20.1
Signature · 1 line
- Arnaldo
[tip: perf/core] perf report: Use timestamp__scnprintf_nsec() for time sort key
In reply to Andi KleenThe following commit has been merged into the perf/core branch of tip:
The following commit has been merged into the perf/core branch of tip:
Commit-ID: 092804ae092fc6097348f5c09b62cde040717aa1 Gitweb: https://git.kernel.org/tip/092804ae092fc6097348f5c09b62cde040717aa1 Author: Andi Kleen <[email protected]> AuthorDate: Fri, 23 Aug 2019 14:03:37 -07:00 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitterDate: Mon, 26 Aug 2019 11:58:29 -03:00
perf report: Use timestamp__scnprintf_nsec() for time sort key
Use timestamp__scnprintf_nsec() to print nanoseconds for the time sort key, instead of open coding.
--- tools/perf/util/sort.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-)
tools/perf/util/sort.c +2 -8
@@ -670,17 +670,11 @@ sort__time_cmp(struct hist_entry *left, struct hist_entry *right)static int hist_entry__time_snprintf (struct hist_entry *he,char *bf,size_t size,unsigned int width) { -unsigned long secs; -unsigned long long nsecs;char he_time[32 ]; - nsecs = he->time; - secs = nsecs /NSEC_PER_SEC ; - nsecs -= secs *NSEC_PER_SEC ; -if (symbol_conf.nanosecs) -snprintf (he_time,sizeof he_time,"%5lu.%09llu: " , - secs, nsecs); +timestamp__scnprintf_nsec (he->time, he_time, +sizeof (he_time));else timestamp__scnprintf_usec (he->time, he_time,sizeof (he_time));