On Mon, Sep 13, 2010 at 5:08 PM, Peter Zijlstra <pet...@infradead.org> wrote: > On Mon, 2010-09-13 at 16:55 +0200, Stephane Eranian wrote: >> The DS, BTS, and PEBS memory regions were allocated using kzalloc(), i.e., >> requesting contiguous physical memory. There is no such restriction on >> DS, PEBS and BTS buffers. Using kzalloc() could lead to error in case >> no contiguous physical memory is available. BTS is requesting 64KB, >> thus it can cause issues. PEBS is currently only requesting one page. >> Both PEBS and BTS are static buffers allocated for each CPU at the >> first user. When the last user exists, the buffers are released. >> >> All buffers are only accessed on the CPU they are attached to. >> kzalloc() does not take into account NUMA, thus all allocations >> are taking place on the NUMA node where the perf_event_open() is >> made. > > I guess that should have been a alloc_pages_node() indeed. > >> This patch switches allocation to vmalloc_node() to use non-contiguous >> physical memory and to allocate on the NUMA node corresponding to each >> CPU. We switched DS and PEBS although they do not cause problems today, >> to, at least, make the allocation on the correct NUMA node. In the future, >> the PEBS buffer size may increase. DS may also grow bigger than a page. >> This patch eliminates the memory allocation imbalance. > > I'm not really a fan of vmalloc, have you actually observed allocation > failures for these 64k (order-4) allocations? > I did with small amount of memory in containers, after stressing the system with perf for instance.
> > ------------------------------------------------------------------------------ Start uncovering the many advantages of virtual appliances and start using them to simplify application deployment and accelerate your shift to cloud computing http://p.sf.net/sfu/novell-sfdev2dev _______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel