Messages in this thread | | | Date | Fri, 23 Sep 2016 10:32:25 +0200 | From | Michal Hocko <> | Subject | Re: [PATCH] mm: warn about allocations which stall for too long |
| |
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
| |