On Wed, 27 Jul 2016 10:20:28 -0700 Dave Hansen <dave.han...@intel.com> wrote:
> On 07/27/2016 08:23 AM, Steven Rostedt wrote: > >> > + > >> > + trace_mm_slowpath_end(page); > >> > + > > I'm thinking you only need one tracepoint, and use function_graph > > tracer for the length of the function call. > > > > # cd /sys/kernel/debug/tracing > > # echo __alloc_pages_nodemask > set_ftrace_filter > > # echo function_graph > current_tracer > > # echo 1 > events/kmem/trace_mm_slowpath/enable > > I hesitate to endorse using the function_graph tracer for this kind of > stuff. Tracepoints offer some level of stability in naming, and the > compiler won't ever make them go away. While __alloc_pages_nodemask is > probably more stable than most things, there's no guarantee that it will > be there. Well, then you are also advocating in a userspace ABI interface that will have to be maintained forever. Just be warned. > > BTW, what's the overhead of the function graph tracer if the filter is > set up to be really restrictive like above? Is the overhead really just > limited to that one function? Yes, if DYNAMIC_FTRACE is defined. Which it should be, because static ftrace has a huge overhead without enabling the tracer. It will enable only that function to be traced. I've recommend before that if one wants to have a good idea of how long a function lasts, they should filter to a single function. Anything else will include overhead of the tracer itself. -- Steve