mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	tracing: add average time in function to function profiler
Show the average time in the function (Time / Hit) Function Hit Time Avg -------- --- ---- --- mwait_idle 51 140326.6 us 2751.503 us smp_apic_timer_interrupt 47 3517.735 us 74.845 us schedule 10 2738.754 us 273.875 us __schedule 10 2732.857 us 273.285 us hrtimer_interrupt 47 1896.104 us 40.342 us irq_exit 56 1711.833 us 30.568 us __run_hrtimer 47 1315.589 us 27.991 us tick_sched_timer 47 1138.690 us 24.227 us do_softirq 56 1116.829 us 19.943 us __do_softirq 56 1066.932 us 19.052 us do_IRQ 9 926.153 us 102.905 us Signed-off-by: Steven Rostedt <srostedt@redhat.com>
This commit is contained in:
		
							parent
							
								
									318e0a73c9
								
							
						
					
					
						commit
						34886c8bc5
					
				
					 1 changed files with 14 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -347,8 +347,10 @@ static int function_stat_cmp(void *p1, void *p2)
 | 
			
		|||
static int function_stat_headers(struct seq_file *m)
 | 
			
		||||
{
 | 
			
		||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
 | 
			
		||||
	seq_printf(m, "  Function                               Hit    Time\n"
 | 
			
		||||
		      "  --------                               ---    ----\n");
 | 
			
		||||
	seq_printf(m, "  Function                               "
 | 
			
		||||
		   "Hit    Time            Avg\n"
 | 
			
		||||
		      "  --------                               "
 | 
			
		||||
		   "---    ----            ---\n");
 | 
			
		||||
#else
 | 
			
		||||
	seq_printf(m, "  Function                               Hit\n"
 | 
			
		||||
		      "  --------                               ---\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -361,12 +363,9 @@ static int function_stat_show(struct seq_file *m, void *v)
 | 
			
		|||
	struct ftrace_profile *rec = v;
 | 
			
		||||
	char str[KSYM_SYMBOL_LEN];
 | 
			
		||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
 | 
			
		||||
	static struct trace_seq s;
 | 
			
		||||
	static DEFINE_MUTEX(mutex);
 | 
			
		||||
 | 
			
		||||
	mutex_lock(&mutex);
 | 
			
		||||
	trace_seq_init(&s);
 | 
			
		||||
	trace_print_graph_duration(rec->time, &s);
 | 
			
		||||
	static struct trace_seq s;
 | 
			
		||||
	unsigned long long avg;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	kallsyms_lookup(rec->ip, NULL, NULL, NULL, str);
 | 
			
		||||
| 
						 | 
				
			
			@ -374,6 +373,14 @@ static int function_stat_show(struct seq_file *m, void *v)
 | 
			
		|||
 | 
			
		||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
 | 
			
		||||
	seq_printf(m, "    ");
 | 
			
		||||
	avg = rec->time;
 | 
			
		||||
	do_div(avg, rec->counter);
 | 
			
		||||
 | 
			
		||||
	mutex_lock(&mutex);
 | 
			
		||||
	trace_seq_init(&s);
 | 
			
		||||
	trace_print_graph_duration(rec->time, &s);
 | 
			
		||||
	trace_seq_puts(&s, "    ");
 | 
			
		||||
	trace_print_graph_duration(avg, &s);
 | 
			
		||||
	trace_print_seq(m, &s);
 | 
			
		||||
	mutex_unlock(&mutex);
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue