Skip to contentSkip to conversation

perf top: Display the LBR stats in callchain entry

PATCH In review Jin Yao 3 participants 5 messages Oct 31, 2018 – Nov 6, 2018 perf events

lore
Share & tools
lore

Jin Yao

author
#0 lore raw

PATCH 1/1 perf top: Display the LBR stats in callchain entry

Perf report has supported the displaying of LBR stats (such as cycles, predicted%) in callchain entry.

For example,
perf report --branch-history --stdio

--1.01%--intel_idle mwait.h:29

          intel_idle cpufeature.h:164 (cycles:5)
          intel_idle cpufeature.h:164 (predicted:76.4%)
          intel_idle mwait.h:102 (cycles:41)
          intel_idle current.h:15

While perf top has not supported that.

For example,
perf top -a -b --call-graph branch

- 13.86% 0.23% [kernel] [k] __x86_indirect_thunk_rax
- 13.65% __x86_indirect_thunk_rax
+ 1.69% do_syscall_64
+ 1.68% do_select
+ 1.41% ktime_get
+ 0.70% __schedule
+ 0.62% do_sys_poll
0.58% __x86_indirect_thunk_rax

Actually it's very easy to enable this feature in perf top.

With this patch, the result is:

perf top -a -b --call-graph branch

- 13.58% 0.00% [kernel] [k] __x86_indirect_thunk_rax
- 13.57% __x86_indirect_thunk_rax (predicted:93.9%)
+ 1.78% do_select (cycles:2)
+ 1.68% perf_pmu_disable.part.99 (cycles:1)
+ 1.45% ___sys_recvmsg (cycles:25)
+ 0.81% unix_stream_sendmsg (cycles:18)
+ 0.80% ktime_get (cycles:400)
0.58% pick_next_task_fair (cycles:47)
+ 0.56% i915_request_retire (cycles:2)
+ 0.52% do_sys_poll (cycles:4)

---
 tools/perf/builtin-top.c | 3 +++
 1 file changed, 3 insertions(+)
tools/perf/builtin-top.c +3 -0
index d21d875..7691b21 100644
@@ -1420,6 +1420,9 @@ int cmd_top(int argc, const char **argv)
 		}
 	}
 
+	if (opts->branch_stack && callchain_param.enabled)
+		symbol_conf.show_branchflag_count = true;
+
 	sort__mode = SORT_MODE__TOP;
 	/* display thread wants entries to be collapsed in a different tree */
 	perf_hpp_list.need_collapse = 1;
Signature · 1 line
2.7.4
author
#1 lore raw

Hi,

Any comments for this patch?

Thanks
Jin Yao

Quoted 63 lines · Jin Yao

Perf report has supported the displaying of LBR stats (such as cycles, predicted%) in callchain entry.

For example,
perf report --branch-history --stdio

--1.01%--intel_idle mwait.h:29

           intel_idle cpufeature.h:164 (cycles:5)
           intel_idle cpufeature.h:164 (predicted:76.4%)
           intel_idle mwait.h:102 (cycles:41)
           intel_idle current.h:15

While perf top has not supported that.

For example,
perf top -a -b --call-graph branch

- 13.86% 0.23% [kernel] [k] __x86_indirect_thunk_rax
- 13.65% __x86_indirect_thunk_rax
+ 1.69% do_syscall_64
+ 1.68% do_select
+ 1.41% ktime_get
+ 0.70% __schedule
+ 0.62% do_sys_poll
0.58% __x86_indirect_thunk_rax

Actually it's very easy to enable this feature in perf top.

With this patch, the result is:

perf top -a -b --call-graph branch

- 13.58% 0.00% [kernel] [k] __x86_indirect_thunk_rax
- 13.57% __x86_indirect_thunk_rax (predicted:93.9%)
+ 1.78% do_select (cycles:2)
+ 1.68% perf_pmu_disable.part.99 (cycles:1)
+ 1.45% ___sys_recvmsg (cycles:25)
+ 0.81% unix_stream_sendmsg (cycles:18)
+ 0.80% ktime_get (cycles:400)
0.58% pick_next_task_fair (cycles:47)
+ 0.56% i915_request_retire (cycles:2)
+ 0.52% do_sys_poll (cycles:4)

---
  tools/perf/builtin-top.c | 3 +++
  1 file changed, 3 insertions(+)
tools/perf/builtin-top.c +3 -0
index d21d875..7691b21 100644
@@ -1420,6 +1420,9 @@ int cmd_top(int argc, const char **argv)
  		}
  	}
 
+	if (opts->branch_stack && callchain_param.enabled)
+		symbol_conf.show_branchflag_count = true;
+
  	sort__mode = SORT_MODE__TOP;
  	/* display thread wants entries to be collapsed in a different tree */
  	perf_hpp_list.need_collapse = 1;
#2 lore raw

Em Mon, Nov 05, 2018 at 08:31:59AM +0800, Jin, Yao escreveu:

Quoted 3 lines

Hi,

Any comments for this patch?

I'll check it today, I'm just a bit behind while preparing for plumbers, I'll get to all the patches :-)

- Arnaldo

Quoted 66 lines

Thanks
Jin Yao

Quoted 62 lines · Jin Yao

Perf report has supported the displaying of LBR stats (such as cycles, predicted%) in callchain entry.

For example,
perf report --branch-history --stdio

--1.01%--intel_idle mwait.h:29

           intel_idle cpufeature.h:164 (cycles:5)
           intel_idle cpufeature.h:164 (predicted:76.4%)
           intel_idle mwait.h:102 (cycles:41)
           intel_idle current.h:15

While perf top has not supported that.

For example,
perf top -a -b --call-graph branch

- 13.86% 0.23% [kernel] [k] __x86_indirect_thunk_rax
- 13.65% __x86_indirect_thunk_rax
+ 1.69% do_syscall_64
+ 1.68% do_select
+ 1.41% ktime_get
+ 0.70% __schedule
+ 0.62% do_sys_poll
0.58% __x86_indirect_thunk_rax

Actually it's very easy to enable this feature in perf top.

With this patch, the result is:

perf top -a -b --call-graph branch

- 13.58% 0.00% [kernel] [k] __x86_indirect_thunk_rax
- 13.57% __x86_indirect_thunk_rax (predicted:93.9%)
+ 1.78% do_select (cycles:2)
+ 1.68% perf_pmu_disable.part.99 (cycles:1)
+ 1.45% ___sys_recvmsg (cycles:25)
+ 0.81% unix_stream_sendmsg (cycles:18)
+ 0.80% ktime_get (cycles:400)
0.58% pick_next_task_fair (cycles:47)
+ 0.56% i915_request_retire (cycles:2)
+ 0.52% do_sys_poll (cycles:4)

---
  tools/perf/builtin-top.c | 3 +++
  1 file changed, 3 insertions(+)
tools/perf/builtin-top.c +3 -0
index d21d875..7691b21 100644
@@ -1420,6 +1420,9 @@ int cmd_top(int argc, const char **argv)
  		}
  	}
+	if (opts->branch_stack && callchain_param.enabled)
+		symbol_conf.show_branchflag_count = true;
+
  	sort__mode = SORT_MODE__TOP;
  	/* display thread wants entries to be collapsed in a different tree */
  	perf_hpp_list.need_collapse = 1;
 
#3 lore raw

Em Mon, Nov 05, 2018 at 10:10:27AM -0300, Arnaldo Carvalho de Melo escreveu:

Quoted 7 lines

Em Mon, Nov 05, 2018 at 08:31:59AM +0800, Jin, Yao escreveu:

Quoted 3 lines

Hi,

Any comments for this patch?

I'll check it today, I'm just a bit behind while preparing for plumbers, I'll get to all the patches :-)

Thanks, tested, applied.

- Arnaldo

#4 lore raw
In reply to Jin Yao
perf top: Display the LBR stats in callchain entry
Commit-ID:  590ac60d8aa929bd21e35cd95a7d8720d00eb4f3
Gitweb:     https://git.kernel.org/tip/590ac60d8aa929bd21e35cd95a7d8720d00eb4f3
Author:     Jin Yao <[email protected]>
AuthorDate: Wed, 31 Oct 2018 19:06:35 +0800
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Mon, 5 Nov 2018 14:37:11 -0300

perf top: Display the LBR stats in callchain entry

'perf report' has supported the displaying of LBR stats (such as cycles, predicted%) in callchain entry.

For example:

  $ perf report --branch-history --stdio

--1.01%--intel_idle mwait.h:29

            intel_idle cpufeature.h:164 (cycles:5)
            intel_idle cpufeature.h:164 (predicted:76.4%)
            intel_idle mwait.h:102 (cycles:41)
            intel_idle current.h:15

While 'perf top' doesn't support that.

For example:

  $ perf top -a -b --call-graph branch

- 13.86% 0.23% [kernel] [k] __x86_indirect_thunk_rax
- 13.65% __x86_indirect_thunk_rax
+ 1.69% do_syscall_64
+ 1.68% do_select
+ 1.41% ktime_get
+ 0.70% __schedule
+ 0.62% do_sys_poll
0.58% __x86_indirect_thunk_rax

Actually it's very easy to enable this feature in 'perf top'.

With this patch, the result is:

  $ perf top -a -b --call-graph branch
  $ -   13.58%     0.00%  [kernel]		[k] __x86_indirect_thunk_rax
     $ - 13.57% __x86_indirect_thunk_rax (predicted:93.9%)
        $ + 1.78% do_select (cycles:2)
        $ + 1.68% perf_pmu_disable.part.99 (cycles:1)
        $ + 1.45% ___sys_recvmsg (cycles:25)
        $ + 0.81% unix_stream_sendmsg (cycles:18)
        $ + 0.80% ktime_get (cycles:400)
          $ 0.58% pick_next_task_fair (cycles:47)
        $ + 0.56% i915_request_retire (cycles:2)
        $ + 0.52% do_sys_poll (cycles:4)
---
 tools/perf/builtin-top.c | 3 +++
 1 file changed, 3 insertions(+)
tools/perf/builtin-top.c +3 -0
index b2838de13de0..aa0c73e57924 100644
@@ -1429,6 +1429,9 @@ int cmd_top(int argc, const char **argv)
 		}
 	}
 
+	if (opts->branch_stack && callchain_param.enabled)
+		symbol_conf.show_branchflag_count = true;
+
 	sort__mode = SORT_MODE__TOP;
 	/* display thread wants entries to be collapsed in a different tree */
 	perf_hpp_list.need_collapse = 1;