Re: [RFC/PATCHSET 0/6] perf kmem: Implement page allocation analysis (v1)

From: Ingo Molnar
Date: Mon Mar 16 2015 - 04:43:38 EST



* Namhyung Kim <namhyung@xxxxxxxxxx> wrote:

> Hi Ingo,
>
> On Mon, Mar 16, 2015 at 5:26 PM, Ingo Molnar <mingo@xxxxxxxxxx> wrote:
> >
> > * Namhyung Kim <namhyung@xxxxxxxxxx> wrote:
> >
> >> On Thu, Mar 12, 2015 at 11:58:37PM +0900, Namhyung Kim wrote:
> >> > On Thu, Mar 12, 2015 at 11:41:19AM +0100, Ingo Molnar wrote:
> >> > > So there's one thing that would be useful: to track pages allocated on
> >> > > one node, but freed on another. Those kinds of allocation/free
> >> > > patterns are especially expensive and might make sense to visualize.
> >> >
> >> > I think it can be done easily as slab analysis already contains the info.
> >>
> >> Hmm.. it seems slab events provide the node info but page events
> >> don't. Without it, I don't know which node a page is in so
> >> cannot determine such cross-node alloc+free patterns.
> >
> > Well, but we know the CPU that the allocation occured on, and can
> > map the CPU to the node.
>
> Does it gaurantee that the page always belongs to a same node
> allocating cpu is in? I can simply map the page with an node using
> cpu info but was not sure whether that's always correct.

There's no such guarantee :-(

We try to (and generally we succeed in) allocating on the same node,
but tooling really needs to know about the memory pressure and other
corner cases as well to be dependable.

I suspect we need a new trace_mm_page_alloc tracepoint, and a
CONFIG_DEBUG_MM_TRACE_PAGE_COMPAT setting to phase out the old
tracepoint on new distros?

Then we'd also have to track page migration to be able to track the
full lifetime of a node in tooling: I think most of the tracepoints
are in place, but it has to be checked whether coverage is
comprehensive.

Thanks,

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/