On Fri 23-09-16 16:29:36, Hillf Danton wrote:
[...]
> > @@ -3659,6 +3661,15 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int 
> > order,
> >     else
> >             no_progress_loops++;
> > 
> > +   /* Make sure we know about allocations which stall for too long */
> > +   if (!(gfp_mask & __GFP_NOWARN) && time_after(jiffies, alloc_start + 
> > stall_timeout)) {
> > +           pr_warn("%s: page alloction stalls for %ums: order:%u 
> > mode:%#x(%pGg)\n",
> > +                           current->comm, 
> > jiffies_to_msecs(jiffies-alloc_start),
> 
> Better if pid is also printed.

I've tried to be consistent with warn_alloc_failed and that doesn't
print pid either. Maybe both of them should. Dunno

> > +                           order, gfp_mask, &gfp_mask);
> > +           stall_timeout += 10 * HZ;
> 
> Alternatively  alloc_start = jiffies;

Then we would lose the cumulative time in the output which is imho
helpful because you cannot tell whether the new warning is a new request
or the old one still looping.

> > +           dump_stack();
> > +   }
> > +
> >     if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags,
> >                              did_some_progress > 0, no_progress_loops))
> >             goto retry;
> > --
> > 2.9.3
> > 
> thanks
> Hillf
> 

-- 
Michal Hocko
SUSE Labs

Reply via email to