Changbin Du
9acd8de69d
function_graph: Support displaying relative timestamp
When function_graph is used for latency tracers, relative timestamp
is more straightforward than absolute timestamp as function trace
does. This change adds relative timestamp support to function_graph
and applies to latency tracers (wakeup and irqsoff).
Instead of:
# tracer: irqsoff
#
# irqsoff latency trace v1.1.5 on 5.0.0-rc1-test
# --------------------------------------------------------------------
# latency: 521 us, #1125/1125, CPU#2 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:8)
# -----------------
# | task: swapper/2-0 (uid:0 nice:0 policy:0 rt_prio:0)
# -----------------
# => started at: __schedule
# => ended at: _raw_spin_unlock_irq
#
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| /
# TIME CPU TASK/PID |||| DURATION FUNCTION CALLS
# | | | | |||| | | | | | |
124.974306 | 2) systemd-693 | d..1 0.000 us | __schedule();
124.974307 | 2) systemd-693 | d..1 | rcu_note_context_switch() {
124.974308 | 2) systemd-693 | d..1 0.487 us | rcu_preempt_deferred_qs();
124.974309 | 2) systemd-693 | d..1 0.451 us | rcu_qs();
124.974310 | 2) systemd-693 | d..1 2.301 us | }
[..]
124.974826 | 2) <idle>-0 | d..2 | finish_task_switch() {
124.974826 | 2) <idle>-0 | d..2 | _raw_spin_unlock_irq() {
124.974827 | 2) <idle>-0 | d..2 0.000 us | _raw_spin_unlock_irq();
124.974828 | 2) <idle>-0 | d..2 0.000 us | tracer_hardirqs_on();
<idle>-0 2d..2 552us : <stack trace>
=> __schedule
=> schedule_idle
=> do_idle
=> cpu_startup_entry
=> start_secondary
=> secondary_startup_64
Show:
# tracer: irqsoff
#
# irqsoff latency trace v1.1.5 on 5.0.0-rc1-test+
# --------------------------------------------------------------------
# latency: 511 us, #1053/1053, CPU#7 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:8)
# -----------------
# | task: swapper/7-0 (uid:0 nice:0 policy:0 rt_prio:0)
# -----------------
# => started at: __schedule
# => ended at: _raw_spin_unlock_irq
#
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| /
# REL TIME CPU TASK/PID |||| DURATION FUNCTION CALLS
# | | | | |||| | | | | | |
0 us | 7) sshd-1704 | d..1 0.000 us | __schedule();
1 us | 7) sshd-1704 | d..1 | rcu_note_context_switch() {
1 us | 7) sshd-1704 | d..1 0.611 us | rcu_preempt_deferred_qs();
2 us | 7) sshd-1704 | d..1 0.484 us | rcu_qs();
3 us | 7) sshd-1704 | d..1 2.599 us | }
[..]
509 us | 7) <idle>-0 | d..2 | finish_task_switch() {
510 us | 7) <idle>-0 | d..2 | _raw_spin_unlock_irq() {
510 us | 7) <idle>-0 | d..2 0.000 us | _raw_spin_unlock_irq();
512 us | 7) <idle>-0 | d..2 0.000 us | tracer_hardirqs_on();
<idle>-0 7d..2 543us : <stack trace>
=> __schedule
=> schedule_idle
=> do_idle
=> cpu_startup_entry
=> start_secondary
=> secondary_startup_64
Link: http://lkml.kernel.org/r/20190101154614.8887-2-changbin.du@gmail.com
Signed-off-by: Changbin Du <changbin.du@gmail.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
2019-02-06 11:56:18 -05:00
..
2019-01-18 15:19:56 -08:00
2018-12-29 10:57:20 -08:00
2018-10-24 20:55:56 -04:00
2018-12-30 08:31:52 +00:00
2019-01-16 09:59:17 -05:00
2019-01-18 11:10:38 -03:00
2019-01-18 00:43:09 +01:00
2018-12-01 12:38:50 -08:00
2019-01-21 11:15:39 +01:00
2018-12-28 12:11:47 -08:00
2019-01-03 18:57:57 -08:00
2018-12-01 12:45:42 -08:00
2019-02-03 09:02:03 -08:00
2019-01-15 16:34:37 +01:00
2019-02-06 11:56:18 -05:00
2018-11-26 18:40:00 -05:00
2018-11-26 18:40:00 -05:00
2018-11-26 18:40:00 -05:00
2018-12-14 12:09:30 -05:00
2018-11-26 18:41:21 -05:00
2018-11-26 18:41:21 -05:00
2018-10-31 08:54:14 -07:00
2019-01-04 12:56:09 -08:00
2019-01-30 19:27:00 +01:00
2018-08-22 10:52:47 -07:00
2018-12-19 13:52:44 -05:00
2018-10-26 16:26:32 -07:00
2019-02-01 15:46:23 -08:00
2018-10-31 08:54:12 -07:00
2019-01-08 18:58:29 -08:00
2018-08-06 12:35:20 +02:00
2019-01-21 11:15:38 +01:00
2019-01-04 13:13:45 -08:00
2019-01-06 09:46:51 +09:00
2018-09-10 22:54:33 +09:00
2018-12-15 17:44:35 +09:00
2019-01-04 13:13:47 -08:00
2018-12-28 12:11:47 -08:00
2018-12-06 14:38:50 +00:00
2018-07-16 12:31:57 -07:00
2018-12-26 14:45:18 -08:00
2018-08-13 11:25:07 -07:00
2019-01-06 09:46:51 +09:00
2018-12-28 12:11:52 -08:00
2018-11-07 14:41:41 +01:00
2019-01-06 09:46:51 +09:00
2018-11-16 14:11:04 +08:00
2019-01-04 13:13:47 -08:00
2018-09-16 16:08:25 +02:00
2018-12-28 12:42:30 -08:00
2018-10-31 08:54:16 -07:00
2019-01-03 18:57:57 -08:00
2018-09-11 16:13:24 +01:00
2018-12-28 12:11:49 -08:00
2019-01-03 18:57:57 -08:00
2019-01-15 09:43:12 -08:00
2019-01-03 18:57:57 -08:00
2019-01-30 19:27:00 +01:00
2018-07-03 09:20:44 +02:00
2018-10-25 11:43:47 -07:00
2018-12-05 19:31:44 -08:00
2018-08-13 11:25:07 -07:00
2018-12-18 16:13:04 +01:00
2019-01-14 10:38:03 +12:00
2019-01-04 13:13:47 -08:00
2019-01-04 13:13:47 -08:00
2018-12-01 12:45:35 -08:00
2018-11-27 09:21:41 -08:00
2019-01-11 18:05:40 -08:00
2018-10-09 16:51:11 +02:00
2018-11-07 23:51:16 -06:00
2018-08-22 10:52:47 -07:00
2018-08-11 02:05:53 -05:00
2018-08-30 12:56:40 +02:00
2018-08-30 12:56:40 +02:00
2019-02-01 15:46:23 -08:00
2019-02-01 15:46:23 -08:00