Re: [PATCH 2/2] mm/page_ref: add tracepoint to track down page reference manipulation
From: Steven Rostedt <hidden>
Date: 2015-11-23 14:26:09
Also in:
linux-mm, lkml
From: Steven Rostedt <hidden>
Date: 2015-11-23 14:26:09
Also in:
linux-mm, lkml
On Mon, 23 Nov 2015 17:28:05 +0900 Joonsoo Kim [off-list ref] wrote:
On Fri, Nov 20, 2015 at 11:42:25AM -0500, Steven Rostedt wrote:quoted
On Fri, 20 Nov 2015 15:33:25 +0900 Joonsoo Kim [off-list ref] wrote:quoted
Steven, is it possible to add tracepoint to inlined fucntion such as get_page() in include/linux/mm.h?I highly recommend against it. The tracepoint code adds a bit of bloat, and if you inline it, you add that bloat to every use case. Also, itIs it worse than adding function call to my own stub function into inlined function such as get_page(). I implemented it as following. get_page() { atomic_inc() stub_get_page() } stub_get_page() in foo.c { trace_page_ref_get_page() }
Now you just slowed down the fast path. But what you could do is:
get_page()
{
atomic_inc();
if (trace_page_ref_get_page_enabled())
stub_get_page();
}
Now that "trace_page_ref_get_page_enabled()" will turn into:
if (static_key_false(&__tracepoint_page_ref_get_page.key)) {
which is a jump label (nop when disabled, a jmp when enabled). That's
less bloat but doesn't solve the include problem. You still need to add
the include of that will cause havoc with other tracepoints.
-- Steve