Re: [PATCH 1/2] slub: fix leakage
From: Hugh Dickins
Date: Mon Nov 05 2007 - 14:10:51 EST
On Mon, 5 Nov 2007, Christoph Lameter wrote:
> On Sun, 4 Nov 2007, Hugh Dickins wrote:
> > In a low memory situation, when several tasks pile up to allocate
> > the same resource, we'd usually free back all but the first, rather
> > than depleting free memory even more than necessary. That you were
> > doing before, now you take the simpler way out and don't bother.
> Hmmm... But even without the patch: All tasks had to allocate their
> own slabs via the page allocator first. Most of those were then thrown
> away immediately. Now we are flushing the current cpu slab. Which means
> that this is also going back to the page allocator if its empty.
Perfectly possible, but not the likely case.
> It is
> likely that the push back in the situation you mention will put a slab
> with only one object allocated onto the partial lists. This can have two
> beneficial effects:
> 1. We can avoid going back to the page allocator for awhile since we will
> find the almost free slab if the current slab is exhausted.
Well, yes, but we don't usually make that argument for allocating
more than we need - especially not when memory is low ;)
> 2. If the object that was allocated in the flushed slab was a short lived
> use freed then the slab will go back to the page allocator very fast.
> > I've no evidence that this is a significant issue: just mention
> > it in case it gives you second thoughts e.g. was there a concrete
> > scenario, other than instinct, which led you to put in that code
> > originally?
> The intend was to use objects that were cache hot as much as possible. Use
> of the newly allocated slab means we are likely accessing a cache cold
Ah yes. And that's certainly no argument for retaining the code,
I'm sure it's not a case we need to optimize for.
> However, given that it took us pretty long to find that issue I would
> think that this is not that of an important code path. So the removal
> seems to be the right way to go.
Okay, I wanted to make the point, but I've no wish to hold up your fix
(and removing code, particularly code that has given trouble, is always
welcome). Please go ahead - thanks.
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/