Re: iwlagn: order 2 page allocation failures

Mel Gorman
2009-09-10T12:58:37Z

On Thu, Sep 10, 2009 at 03:39:36PM +0300, Pekka Enberg wrote:
> Hi Mel,
>
> On Thu, 2009-09-10 at 13:34 +0100, Mel Gorman wrote:
> > > That's because it's a large allocation that's passed directly to the
> > > page allocator. See kmalloc_large_node(), for example.
> >
> > Pants. Is there any chance that could be fixed so that allocation
> > failures within SLUB get consistently reported?
>
> Did you have something specific in mind? I am not sure it's worth it,
> really.
>
> The kmalloc_large() function is a static inline in
> include/linux/slub_def.h that gets inlined nicely to a get_order() +
> __get_free_pages() pair in the caller for production configs. I'm not
> sure what we should print either. There's no known "object size" or
> "buffer size" nor do we any of the variable order things or backing
> struct kmem_cache_nodes.
>

All I had in mind really was to grab the size of the buffer that was
passed into kmalloc such as here;

void *__kmalloc(size_t size, gfp_t flags)
{
struct kmem_cache *s;
void *ret;

if (unlikely(size > SLUB_MAX_SIZE))
return kmalloc_large(size, flags);

and to have consistent reporting of slub-allocation failures but if you
reckon it's not worth it, I wouldn't push strongly on it.

--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab