From: lkml@pengaru.com
To: Peter Zijlstra <peterz@infradead.org>
Cc: linux-kernel@vger.kernel.org,
Wu Fengguang <fengguang.wu@intel.com>, miklos <miklos@szeredi.hu>
Subject: Re: bdi_min_ratio never shrinks, ultimately preventing valid setting of min_ratio
Date: Thu, 2 Jun 2011 13:32:44 -0500 [thread overview]
Message-ID: <20110602183244.GB5753@shells.gnugeneration.com> (raw)
In-Reply-To: <1307015011.2497.633.camel@laptop>
On Thu, Jun 02, 2011 at 01:43:31PM +0200, Peter Zijlstra wrote:
> It really helps if you CC the relevant people.
>
> On Tue, 2011-05-31 at 19:28 -0500, lkml@pengaru.com wrote:
> > mm/page-writeback.c
> > There is a static global bdi_min_ratio used for policing the setting of
> > per-bdi min_ratio's, to ensure the sum doesn't cross 100.
> >
> > There is no place in this listing where the value is decremented by the
> > respective bdi's min_ratio when a bdi is torn down.
>
> There is, adding a negative number is equal to a subtraction.
>
> min_ratio -= bdi->min_ratio;
> if (bdi_min_ratio + min_ratio < 100) {
> bdi_min_ratio += min_ratio;
> bdi->min_ratio += min_ratio;
> }
>
> is the relevant piece, note that bdi->min_ratio is the current setting,
> this makes min_ratio the difference between the new and old setting, and
> adding this to both bdi_min_ratio (the global sum) and bdi->min_ratio
> dtrt regardless if the new value is larger or smaller than the old
> value.
This accounts for the repeated setting of min_ratio on the same bdi. But
does bdi_set_min_ratio() get entered with a min_ratio of 0 on bdi removal?
If not, we leak the non-zero min_ratio of a removed bdi.
>
> > This looks like a bug
> > to me, and I have a situation where I'm unable to set a min_ratio to 1
> > where the sum of /sys/class/bdi/*/min_ratio does not add up to 100, which
> > is what triggered this investigation.
>
> Which of the two -EINVAL cases is triggered?
It's the bdi_min_ratio + min_ratio >= 100 case.
The system has many usb disks coming and going day to day, with their
respective bdi's having min_ratio set to 1 when inserted. It works for
some time until eventually min_ratio can no longer be set, even when the
active set of bdi's seen in /sys/class/bdi/*/min_ratio doesn't add up to
anywhere near 100.
This then leads to an unrelated starvation problem caused by write-heavy
fuse mounts being used atop the usb disks, a problem the min_ratio
setting at the underlying devices bdi effectively prevents.
Regards,
Vito Caputo
next prev parent reply other threads:[~2011-06-02 18:32 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-01 0:28 bdi_min_ratio never shrinks, ultimately preventing valid setting of min_ratio lkml
2011-06-02 11:43 ` Peter Zijlstra
2011-06-02 18:32 ` lkml [this message]
2011-06-02 21:25 ` Peter Zijlstra
2011-06-08 0:13 ` Andrew Morton
2011-06-08 9:25 ` Peter Zijlstra
2011-06-08 10:45 ` Peter Zijlstra
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=20110602183244.GB5753@shells.gnugeneration.com \
--to=lkml@pengaru.com \
--cc=fengguang.wu@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=peterz@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.