Commit 0012693a authored by Frederic Weisbecker's avatar Frederic Weisbecker Committed by Ingo Molnar

tracing/function-graph-tracer: use the more lightweight local clock

Impact: decrease hangs risks with the graph tracer on slow systems

Since the function graph tracer can spend too much time on timer
interrupts, it's better now to use the more lightweight local
clock. Anyway, the function graph traces are more reliable on a
per cpu trace.
Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Peter Zijlstra <peterz@infradead.org>
LKML-Reference: <49af243d.06e9300a.53ad.ffff840c@mx.google.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent c4ef144a
...@@ -436,7 +436,7 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr) ...@@ -436,7 +436,7 @@ void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr)
return; return;
} }
calltime = cpu_clock(raw_smp_processor_id()); calltime = trace_clock_local();
if (ftrace_push_return_trace(old, calltime, if (ftrace_push_return_trace(old, calltime,
self_addr, &trace.depth) == -EBUSY) { self_addr, &trace.depth) == -EBUSY) {
......
#ifndef _LINUX_FTRACE_H #ifndef _LINUX_FTRACE_H
#define _LINUX_FTRACE_H #define _LINUX_FTRACE_H
#include <linux/linkage.h> #include <linux/trace_clock.h>
#include <linux/fs.h>
#include <linux/ktime.h>
#include <linux/init.h>
#include <linux/types.h>
#include <linux/module.h>
#include <linux/kallsyms.h> #include <linux/kallsyms.h>
#include <linux/linkage.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/module.h>
#include <linux/ktime.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/types.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <asm/ftrace.h> #include <asm/ftrace.h>
......
...@@ -112,7 +112,7 @@ unsigned long ftrace_return_to_handler(void) ...@@ -112,7 +112,7 @@ unsigned long ftrace_return_to_handler(void)
unsigned long ret; unsigned long ret;
ftrace_pop_return_trace(&trace, &ret); ftrace_pop_return_trace(&trace, &ret);
trace.rettime = cpu_clock(raw_smp_processor_id()); trace.rettime = trace_clock_local();
ftrace_graph_return(&trace); ftrace_graph_return(&trace);
if (unlikely(!ret)) { if (unlikely(!ret)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment