From: Andrew Morton <akpm@linux-foundation.org>
To: Joanne Koong <joannelkoong@gmail.com>
Cc: jack@suse.cz, hch@infradead.org, hannes@cmpxchg.org,
willy@infradead.org, linux-mm@kvack.org,
linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH v2 1/1] mm: reinstate unconditional writeback start in balance_dirty_pages()
Date: Thu, 26 Mar 2026 17:54:33 -0700 [thread overview]
Message-ID: <20260326175433.5cddde03a0eb201042a1ed55@linux-foundation.org> (raw)
In-Reply-To: <20260326215127.3857682-2-joannelkoong@gmail.com>
On Thu, 26 Mar 2026 14:51:27 -0700 Joanne Koong <joannelkoong@gmail.com> wrote:
> Commit 64dd89ae01f2 ("mm/block/fs: remove laptop_mode") removed this
> unconditional writeback start from balance_dirty_pages():
>
> if (unlikely(!writeback_in_progress(wb)))
> wb_start_background_writeback(wb);
>
> This logic needs to be reinstated to prevent performance regressions for
> strictlimited BDIs and memcg setups. The problem occurs because:
>
> a) For strictlimited BDIs, throttling is calculated using per-wb
> thresholds. The per-wb threshold can be exceeded even when the global
> dirty threshold was not exceeded (nr_dirty < gdtc->bg_thresh)
>
> b) For memcg-based throttling, memcg uses its own dirty count /
> thresholds and can trigger throttling even when the global threshold
> isn't exceeded
>
> Without the unconditional writeback start, IO is throttled as it waits
> for dirty pages to be written back but there is no writeback running.
> This leads to severe stalls. On fuse, buffered write performance
> dropped from 1400 MiB/s to 2000 KiB/s.
>
> Reinstate the unconditional writeback start so that writeback is
> guaranteed to be running whenever IO needs to be throttled.
Thanks, I queued this in mm.git's mm-hotfixes-unstable branch for test
and review. This starts it on the track to mainline before the 7.0
release.
I assume we want to be prompt with this because the fuse regression
sounds pretty horrid.
next prev parent reply other threads:[~2026-03-27 0:54 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-26 21:51 [PATCH v2 0/1] mm: reinstate unconditional writeback start in balance_dirty_pages() Joanne Koong
2026-03-26 21:51 ` [PATCH v2 1/1] " Joanne Koong
2026-03-27 0:54 ` Andrew Morton [this message]
2026-03-27 6:11 ` Christoph Hellwig
2026-03-27 16:04 ` Jan Kara
2026-03-27 16:24 ` Johannes Weiner
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=20260326175433.5cddde03a0eb201042a1ed55@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=hch@infradead.org \
--cc=jack@suse.cz \
--cc=joannelkoong@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--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 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.