All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rik van Riel <riel@redhat.com>
To: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Mel Gorman <mgorman@suse.de>, Vlastimil Babka <vbabka@suse.cz>,
	Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
	linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org>,
	Michal Hocko <mhocko@suse.com>
Subject: Re: [PATCH] mm, vmscan: do not loop on too_many_isolated for ever
Date: Thu, 09 Mar 2017 17:18:00 -0500	[thread overview]
Message-ID: <1489097880.1906.16.camel@redhat.com> (raw)
In-Reply-To: <20170309180540.GA8678@cmpxchg.org>

[-- Attachment #1: Type: text/plain, Size: 2423 bytes --]

On Thu, 2017-03-09 at 13:05 -0500, Johannes Weiner wrote:
> On Tue, Mar 07, 2017 at 02:52:36PM -0500, Rik van Riel wrote:
> > 
> > It only does this to some extent.  If reclaim made
> > no progress, for example due to immediately bailing
> > out because the number of already isolated pages is
> > too high (due to many parallel reclaimers), the code
> > could hit the "no_progress_loops > MAX_RECLAIM_RETRIES"
> > test without ever looking at the number of reclaimable
> > pages.
> Hm, there is no early return there, actually. We bump the loop
> counter
> every time it happens, but then *do* look at the reclaimable pages.

Am I looking at an old tree?  I see this code
before we look at the reclaimable pages.

        /*
         * Make sure we converge to OOM if we cannot make any progress
         * several times in the row.
         */
        if (*no_progress_loops > MAX_RECLAIM_RETRIES) {
                /* Before OOM, exhaust highatomic_reserve */
                return unreserve_highatomic_pageblock(ac, true);
        }

> > Could that create problems if we have many concurrent
> > reclaimers?
> With increased concurrency, the likelihood of OOM will go up if we
> remove the unlimited wait for isolated pages, that much is true.
> 
> I'm not sure that's a bad thing, however, because we want the OOM
> killer to be predictable and timely. So a reasonable wait time in
> between 0 and forever before an allocating thread gives up under
> extreme concurrency makes sense to me.

That is a fair point, a faster OOM kill is preferable
to a system that is livelocked.

> Unless I'm mistaken, there doesn't seem to be a whole lot of urgency
> behind this patch. Can we think about a general model to deal with
> allocation concurrency? Unlimited parallel direct reclaim is kinda
> bonkers in the first place. How about checking for excessive
> isolation
> counts from the page allocator and putting allocations on a
> waitqueue?

The (limited) number of reclaimers can still do a
relatively fast OOM kill, if none of them manage
to make progress.

That should avoid the potential issue you and I
both pointed out, and, as a bonus, it might actually
be faster than letting all the tasks in the system
into the direct reclaim code simultaneously.

-- 
All rights reversed

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

  reply	other threads:[~2017-03-09 22:18 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-07 13:30 [PATCH] mm, vmscan: do not loop on too_many_isolated for ever Michal Hocko
2017-03-07 13:30 ` Michal Hocko
2017-03-07 19:52 ` Rik van Riel
2017-03-08  9:21   ` Michal Hocko
2017-03-08  9:21     ` Michal Hocko
2017-03-08 15:54     ` Rik van Riel
2017-03-08 15:54       ` Rik van Riel
2017-03-09  9:12       ` Michal Hocko
2017-03-09  9:12         ` Michal Hocko
2017-03-09 14:16         ` Rik van Riel
2017-03-09 14:59           ` Michal Hocko
2017-03-09 14:59             ` Michal Hocko
2017-03-09 18:05   ` Johannes Weiner
2017-03-09 18:05     ` Johannes Weiner
2017-03-09 22:18     ` Rik van Riel [this message]
2017-03-10 10:27       ` Michal Hocko
2017-03-10 10:27         ` Michal Hocko
2017-03-10 10:20     ` Michal Hocko
2017-03-10 10:20       ` Michal Hocko
2017-03-10 11:44       ` Tetsuo Handa
2017-03-10 11:44         ` Tetsuo Handa
2017-03-21 10:37         ` Tetsuo Handa
2017-03-21 10:37           ` Tetsuo Handa
2017-04-23 10:24         ` Tetsuo Handa
2017-04-23 10:24           ` Tetsuo Handa
2017-04-24 12:39           ` Stanislaw Gruszka
2017-04-24 12:39             ` Stanislaw Gruszka
2017-04-24 13:06             ` Tetsuo Handa
2017-04-24 13:06               ` Tetsuo Handa
2017-04-25  6:33               ` Stanislaw Gruszka
2017-04-25  6:33                 ` Stanislaw Gruszka
2017-06-30  0:14         ` Tetsuo Handa
2017-06-30  0:14           ` Tetsuo Handa
2017-06-30 13:32           ` Michal Hocko
2017-06-30 13:32             ` Michal Hocko
2017-06-30 15:59             ` Tetsuo Handa
2017-06-30 15:59               ` Tetsuo Handa
2017-06-30 16:19               ` Michal Hocko
2017-06-30 16:19                 ` Michal Hocko
2017-07-01 11:43                 ` Tetsuo Handa
2017-07-01 11:43                   ` Tetsuo Handa
2017-07-05  8:19                   ` Michal Hocko
2017-07-05  8:19                     ` Michal Hocko
2017-07-05  8:20                   ` Michal Hocko
2017-07-05  8:20                     ` Michal Hocko
2017-07-06 10:48                     ` Tetsuo Handa
2017-07-06 10:48                       ` Tetsuo Handa
2017-03-09 14:31 ` Mel Gorman
2017-03-09 14:31   ` Mel Gorman
  -- strict thread matches above, loose matches on Subject: below --
2017-07-10  7:48 Michal Hocko
2017-07-10  7:48 ` Michal Hocko
2017-07-10 13:16 ` Vlastimil Babka
2017-07-10 13:16   ` Vlastimil Babka
2017-07-10 13:58 ` Rik van Riel
2017-07-10 13:58   ` Rik van Riel
2017-07-10 16:58   ` Johannes Weiner
2017-07-10 16:58     ` Johannes Weiner
2017-07-10 17:09     ` Michal Hocko
2017-07-10 17:09       ` Michal Hocko
2017-07-19 22:20 ` Andrew Morton
2017-07-19 22:20   ` Andrew Morton
2017-07-20  6:56   ` Michal Hocko
2017-07-20  6:56     ` Michal Hocko
2017-07-21 23:01     ` Andrew Morton
2017-07-21 23:01       ` Andrew Morton
2017-07-24  6:50       ` Michal Hocko
2017-07-24  6:50         ` Michal Hocko
2017-07-20  1:54 ` Hugh Dickins
2017-07-20  1:54   ` Hugh Dickins
2017-07-20 10:44   ` Tetsuo Handa
2017-07-20 10:44     ` Tetsuo Handa
2017-07-24  7:01     ` Hugh Dickins
2017-07-24  7:01       ` Hugh Dickins
2017-07-24 11:12       ` Tetsuo Handa
2017-07-24 11:12         ` Tetsuo Handa
2017-07-20 13:22   ` Michal Hocko
2017-07-20 13:22     ` Michal Hocko
2017-07-24  7:03     ` Hugh Dickins
2017-07-24  7:03       ` Hugh Dickins

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1489097880.1906.16.camel@redhat.com \
    --to=riel@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=mhocko@kernel.org \
    --cc=mhocko@suse.com \
    --cc=penguin-kernel@I-love.SAKURA.ne.jp \
    --cc=vbabka@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.