linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Martin <m_btrfs@ml1.co.uk>
To: linux-btrfs@vger.kernel.org
Subject: btrfs raid multiple devices IO utilisation
Date: Thu, 12 Dec 2013 13:39:00 +0000	[thread overview]
Message-ID: <l8ce99$31i$1@ger.gmane.org> (raw)

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...

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.


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.


The intention there is to repeat sequential IO to the current disk, but
allow a second disk to interleave data requests for a same one file if
data is requested faster than what the one disk can support.

Other aspects are that the IO queue length checks hopefully will
proportionately balance the requests across disks that offer different
speeds. Hence a faster disk will get used to advantage if paired with a
slower device.


There looks to be two points in the code where a device gets selected.
Not having delved into filesystems before... Is there easy/safe reading
available for the IO queues for a device?

Or rather: All easily done?

(Or is the btrfs code at too high a level to be able to see/access the
device IO queues?)


Regards,
Martin


             reply	other threads:[~2013-12-12 13:39 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-12 13:39 Martin [this message]
2013-12-13  9:13 ` btrfs raid multiple devices IO utilisation Duncan
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='l8ce99$31i$1@ger.gmane.org' \
    --to=m_btrfs@ml1.co.uk \
    --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).