[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160923083224.GF4478@dhcp22.suse.cz>
Date: Fri, 23 Sep 2016 10:32:25 +0200
From: Michal Hocko <mhocko@...nel.org>
To: Hillf Danton <hillf.zj@...baba-inc.com>
Cc: linux-mm@...ck.org, 'Andrew Morton' <akpm@...ux-foundation.org>,
'Johannes Weiner' <hannes@...xchg.org>,
'Mel Gorman' <mgorman@...e.de>,
'Tetsuo Handa' <penguin-kernel@...ove.SAKURA.ne.jp>,
'LKML' <linux-kernel@...r.kernel.org>
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
Powered by blists - more mailing lists