Hi Steven, Have you checked this serias yet? :)

On Tue, Jan 01, 2019 at 11:46:09PM +0800, Changbin Du wrote:
> Happy new year!
> 
> This series make some improments for the kernel latency tracers, especilly
> for the wakeup tracers. The latency tracers will show us more useful
> information. With this series, the wakeup tracers look like this
> when display-graph is enabled:
> 
> # tracer: wakeup
> #
> # wakeup latency trace v1.1.5 on 4.20.0+
> # --------------------------------------------------------------------
> # latency: 593 us, #674/674, CPU#0 | (M:desktop VP:0, KP:0, SP:0 HP:0 #P:4)
> #    -----------------
> #    | task: kworker/0:1H-339 (uid:0 nice:-20 policy:0 rt_prio:0)
> #    -----------------
> #
> #                                       _-----=> irqs-off        
> #                                      / _----=> need-resched    
> #                                     | / _---=> hardirq/softirq 
> #                                     || / _--=> preempt-depth   
> #                                     ||| /                      
> #   REL TIME      CPU  TASK/PID       ||||     DURATION                  
> FUNCTION CALLS
> #      |          |     |    |        ||||      |   |                     |   
> |   |   |
>         0 us |   0)    <idle>-0    |  dNs. |               |  /*      0:120:R 
>   + [000]   339:100:R kworker/0:1H */
>         3 us |   0)    <idle>-0    |  dNs. |   0.000 us    |            
> (null)();
>   <idle>-0       0dNs.   66us : <stack trace>
>  => try_to_wake_up
>  => __queue_work
>  => queue_work_on
>  => call_timer_fn
>  => run_timer_softirq
>  => __do_softirq
>  => irq_exit
>  => smp_apic_timer_interrupt
>  => apic_timer_interrupt
>  => native_safe_halt
>  => default_idle
>  => default_idle_call
>  => do_idle
>  => cpu_startup_entry
>  => start_kernel
>  => secondary_startup_64
>        67 us |   0)    <idle>-0    |  dNs. |   0.721 us    |  ttwu_stat();
>        69 us |   0)    <idle>-0    |  dNs. |   0.607 us    |  
> _raw_spin_unlock_irqrestore();
>        71 us |   0)    <idle>-0    |  .Ns. |   0.598 us    |  
> _raw_spin_lock_irq();
>        72 us |   0)    <idle>-0    |  .Ns. |   0.584 us    |  
> _raw_spin_lock_irq();
>        73 us |   0)    <idle>-0    |  dNs. |   1.125 us    |  
> __next_timer_interrupt();
>        75 us |   0)    <idle>-0    |  dNs. |               |  call_timer_fn() 
> {
>        76 us |   0)    <idle>-0    |  dNs. |               |    
> delayed_work_timer_fn() {
>       [...]
>       564 us |   0)   kworker-13   |  d... |               |      
> set_next_entity() {
>       565 us |   0)   kworker-13   |  d... |   0.524 us    |        
> __update_load_avg_se();
>       566 us |   0)   kworker-13   |  d... |   0.562 us    |        
> __update_load_avg_cfs_rq();
>       567 us |   0)   kworker-13   |  d... |   2.765 us    |      }
>       568 us |   0)   kworker-13   |  d... | + 10.077 us   |    }
>       569 us |   0)   kworker-13   |  d... |   0.000 us    |  __schedule();
> kworker/-13      0d...  593us : <stack trace>
>  => schedule
>  => worker_thread
>  => kthread
>  => ret_from_fork
>       593 us |   0)   kworker-13   |  d... |               |  /*     13:120:I 
> ==> [000]   339:100:R kworker/0:1H */
> 
> Changbin Du (5):
>   function_graph: Support displaying relative timestamp
>   sched/tracing: Show more info for funcgraph wakeup tracers
>   sched/tracing: Put a margin between flags and duration for wakeup
>     tracers
>   sched/tracing: Show stacktrace for wakeup tracers
>   trace/doc: Add latency tracer funcgraph example
> 
>  Documentation/trace/ftrace.rst       | 51 ++++++++++++++++++++++++++++
>  kernel/trace/trace.h                 |  9 ++---
>  kernel/trace/trace_functions_graph.c | 30 ++++++++++++++--
>  kernel/trace/trace_irqsoff.c         |  2 +-
>  kernel/trace/trace_sched_wakeup.c    | 11 ++++--
>  5 files changed, 94 insertions(+), 9 deletions(-)
> 
> -- 
> 2.17.1
> 

-- 
Cheers,
Changbin Du

Reply via email to