[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: low memory problem - pool calls vmem calls uvm calls pool etc.
On 04/12/13 01:07, Lars Heidieker wrote:
The recursion happened due to freeing to the wrong arena. Take a look
at the pool_allocator_meta and how vmem recurses. It's one vmem arena
(kmem_va_arena) using quantum caches and one (actually two
kmem_meta_arena(s) stacked on top of kmem_meta_arena) for meta
allocations eg pool_allocator_meta those arenas are stacked up on one
arena without quatum caching (kmem_arena). So "normal" allocations
utilized this cache, but no pool_caches are involved for "meta"
allocations. So it might recurse once while switching to allocate via
the kmem_meta_arena and from there on no pool_caches are involved.
Allocations via vmem_alloc must be freed via vmem_free and vmem_xalloc
via vmem_xfree mixing them, at least with quantum caches involved,
will lead to inconsistencies.
It occurs to me that disabling the quantum cache on the meta arenas may
be specifically to avoid this problem. But this problem could also, I
think, be resolved by ensuring that quantum caching is inhibited in
vmem_free's in, and only in, ENOMEM paths. Then quantum caching could
be used for meta arenas too.
Is it worth going to that effort? Would it be much of a win?
Main Index |
Thread Index |