From: Duncan <1i5t5.duncan@cox.net>
To: linux-btrfs@vger.kernel.org
Subject: Re: btrfs raid multiple devices IO utilisation
Date: Fri, 13 Dec 2013 09:13:14 +0000 (UTC) [thread overview]
Message-ID: <pan$46d7a$8ee1d67e$83395712$322d43d@cox.net> (raw)
In-Reply-To: l8ce99$31i$1@ger.gmane.org
Martin posted on Thu, 12 Dec 2013 13:39:00 +0000 as excerpted:
> Some time back, I noticed that with a two HDD btrfs raid1, some tasks
> suffered ALL the IO getting choked onto just one HDD!
>
> That turned out to be a feature of the btrfs code whereby a device is
> chosen depending on the process ID. For some cases such as in a bash
> loop, the PID increments by two for each iteration and so only one HDD
> ever gets hit...
Unfortunately, yes...
> So... Running with a 3-disk btrfs raid1 and... I still see the same
> problem for such as compile tasks where only one of the three disks is
> maxed out for periods with the other two disks left nearly idle.
It's worth noting that unfortunately, btrfs raid1 mode isn't "real" raid1
at this point, at least not in the N-way-mirrored sense. It's only two-
way-mirrored, regardless of the number of devices you throw at it, tho N-
way mirroring is roadmapped for introduction after raid5/6 functionality
is fully implemented. (The current raid5/6 implementation is missing
some bits and is not considered production usable, as it doesn't handle
rebuilds and scrubs well yet.)
So I'm guessing your 3-device btrfs raid1 is still stuck on the same even/
odd PID problem as before.
> Perhaps?...
>
> Is there an easy fix in the code to allocate IO according to the
> following search order:
>
> Last used disk with an IO queue < 2 items;
>
> Any disk with an IO queue < 2 items;
>
> Whichever disk with least queued items.
That does sound reasonable here.
FWIW, however, based on previous discussion here, the devs are aware of
the alternating PID problem, and I /believe/ someone's already working on
an alternate implementation using something else. I think the current
PID-based selector code was simply a first implementation to get
something out there; not really intended to be a final working solution.
IDR whether anything I've read discussed what algorithm they're working
on, but given the sense your idea seems to make, at least at first glance
at my sysadmin level of understanding, I wouldn't be surprised if the new
solution does look something like it. Of course that's if the queue
length is reasonably accessible to btrfs, as you already asked in the bit
I snipped as out of my knowledgeable reply range.
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
next prev parent reply other threads:[~2013-12-13 9:13 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-12 13:39 btrfs raid multiple devices IO utilisation Martin
2013-12-13 9:13 ` Duncan [this message]
2013-12-13 11:08 ` Martin
2013-12-13 17:24 ` Chris Murphy
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='pan$46d7a$8ee1d67e$83395712$322d43d@cox.net' \
--to=1i5t5.duncan@cox.net \
--cc=linux-btrfs@vger.kernel.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).