From: Mel Gorman <mgorman@techsingularity.net>
To: Dave Chinner <david@fromorbit.com>
Cc: NeilBrown <neilb@suse.de>, Linux-MM <linux-mm@kvack.org>,
Theodore Ts'o <tytso@mit.edu>,
Andreas Dilger <adilger.kernel@dilger.ca>,
"Darrick J . Wong" <djwong@kernel.org>,
Matthew Wilcox <willy@infradead.org>,
Michal Hocko <mhocko@suse.com>, Rik van Riel <riel@surriel.com>,
Vlastimil Babka <vbabka@suse.cz>,
Johannes Weiner <hannes@cmpxchg.org>,
Jonathan Corbet <corbet@lwn.net>,
Linux-fsdevel <linux-fsdevel@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 1/5] mm/vmscan: Throttle reclaim until some writeback completes if congested
Date: Wed, 22 Sep 2021 09:03:51 +0100 [thread overview]
Message-ID: <20210922080351.GU3959@techsingularity.net> (raw)
In-Reply-To: <20210922060447.GA2361455@dread.disaster.area>
On Wed, Sep 22, 2021 at 04:04:47PM +1000, Dave Chinner wrote:
> On Tue, Sep 21, 2021 at 11:58:31AM +0100, Mel Gorman wrote:
> > On Tue, Sep 21, 2021 at 10:13:17AM +1000, NeilBrown wrote:
> > > On Mon, 20 Sep 2021, Mel Gorman wrote:
> > > > -long wait_iff_congested(int sync, long timeout)
> > > > -{
> > > > - long ret;
> > > > - unsigned long start = jiffies;
> > > > - DEFINE_WAIT(wait);
> > > > - wait_queue_head_t *wqh = &congestion_wqh[sync];
> > > > -
> > > > - /*
> > > > - * If there is no congestion, yield if necessary instead
> > > > - * of sleeping on the congestion queue
> > > > - */
> > > > - if (atomic_read(&nr_wb_congested[sync]) == 0) {
> > > > - cond_resched();
> > > > -
> > > > - /* In case we scheduled, work out time remaining */
> > > > - ret = timeout - (jiffies - start);
> > > > - if (ret < 0)
> > > > - ret = 0;
> > > > -
> > > > - goto out;
> > > > - }
> > > > -
> > > > - /* Sleep until uncongested or a write happens */
> > > > - prepare_to_wait(wqh, &wait, TASK_UNINTERRUPTIBLE);
> > >
> > > Uninterruptible wait.
> > >
> > > ....
> > > > +static void
> > > > +reclaim_throttle(pg_data_t *pgdat, enum vmscan_throttle_state reason,
> > > > + long timeout)
> > > > +{
> > > > + wait_queue_head_t *wqh = &pgdat->reclaim_wait;
> > > > + unsigned long start = jiffies;
> > > > + long ret;
> > > > + DEFINE_WAIT(wait);
> > > > +
> > > > + atomic_inc(&pgdat->nr_reclaim_throttled);
> > > > + WRITE_ONCE(pgdat->nr_reclaim_start,
> > > > + node_page_state(pgdat, NR_THROTTLED_WRITTEN));
> > > > +
> > > > + prepare_to_wait(wqh, &wait, TASK_INTERRUPTIBLE);
> > >
> > > Interruptible wait.
> > >
> > > Why the change? I think these waits really need to be TASK_UNINTERRUPTIBLE.
> > >
> >
> > Because from mm/ context, I saw no reason why the task *should* be
> > uninterruptible. It's waiting on other tasks to complete IO and it is not
> > protecting device state, filesystem state or anything else. If it gets
> > a signal, it's safe to wake up, particularly if that signal is KILL and
> > the context is a direct reclaimer.
>
> I disagree. whether the sleep should be interruptable or
> not is entirely dependent on whether the caller can handle failure
> or not. If this is GFP_NOFAIL, allocation must not fail no matter
> what the context is, so signals and the like are irrelevant.
>
> For a context that can handle allocation failure, then it makes
> sense to wake on events that will result in the allocation failing
> immediately. But if all this does is make the allocation code go
> around another retry loop sooner, then an interruptible sleep still
> doesn't make any sense at all here...
>
Ok, between this and Neil's mail on the same topic, I'm convinced.
--
Mel Gorman
SUSE Labs
next prev parent reply other threads:[~2021-09-22 8:03 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-20 8:54 [RFC PATCH 0/5] Remove dependency on congestion_wait in mm/ Mel Gorman
2021-09-20 8:54 ` [PATCH 1/5] mm/vmscan: Throttle reclaim until some writeback completes if congested Mel Gorman
2021-09-20 23:19 ` NeilBrown
2021-09-21 11:12 ` Mel Gorman
2021-09-21 21:27 ` NeilBrown
2021-09-21 0:13 ` NeilBrown
2021-09-21 10:58 ` Mel Gorman
2021-09-21 21:40 ` NeilBrown
2021-09-22 6:04 ` Dave Chinner
2021-09-22 8:03 ` Mel Gorman [this message]
2021-09-22 12:16 ` Hillf Danton
2021-09-22 14:13 ` Mel Gorman
2021-09-20 8:54 ` [PATCH 2/5] mm/vmscan: Throttle reclaim and compaction when too may pages are isolated Mel Gorman
2021-09-20 23:27 ` NeilBrown
2021-09-21 11:03 ` Mel Gorman
2021-09-21 18:45 ` Yang Shi
2021-09-22 8:11 ` Mel Gorman
2021-09-20 8:54 ` [PATCH 3/5] mm/vmscan: Throttle reclaim when no progress is being made Mel Gorman
2021-09-20 23:31 ` NeilBrown
2021-09-21 11:16 ` Mel Gorman
2021-09-21 21:46 ` NeilBrown
2021-09-22 9:21 ` Mel Gorman
2021-09-20 8:54 ` [PATCH 4/5] mm/writeback: Throttle based on page writeback instead of congestion Mel Gorman
2021-09-20 8:54 ` [PATCH 5/5] mm/page_alloc: Remove the throttling logic from the page allocator Mel Gorman
2021-09-20 11:42 ` [RFC PATCH 0/5] Remove dependency on congestion_wait in mm/ Matthew Wilcox
2021-09-20 12:50 ` Mel Gorman
2021-09-20 14:11 ` David Sterba
2021-09-21 11:18 ` Mel Gorman
2021-09-20 19:51 ` Mel Gorman
2021-09-21 20:46 ` Dave Chinner
2021-09-22 17:52 ` Mel Gorman
2021-09-29 10:09 [PATCH 0/5] Remove dependency on congestion_wait in mm/ v2 Mel Gorman
2021-09-29 10:09 ` [PATCH 1/5] mm/vmscan: Throttle reclaim until some writeback completes if congested Mel Gorman
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=20210922080351.GU3959@techsingularity.net \
--to=mgorman@techsingularity.net \
--cc=adilger.kernel@dilger.ca \
--cc=corbet@lwn.net \
--cc=david@fromorbit.com \
--cc=djwong@kernel.org \
--cc=hannes@cmpxchg.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=neilb@suse.de \
--cc=riel@surriel.com \
--cc=tytso@mit.edu \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).