linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: NeilBrown <neilb@suse.de>
To: Markus Stockhausen <stockhausen@collogia.de>
Cc: "linux-raid@vger.kernel.org" <linux-raid@vger.kernel.org>
Subject: Re: RAID6 - RMW logic
Date: Thu, 31 Jul 2014 07:30:07 +1000	[thread overview]
Message-ID: <20140731073007.3fe4817a@notabene.brown> (raw)
In-Reply-To: <12EF8D94C6F8734FB2FF37B9FBEDD17358639B87@EXCHANGE.collogia.de>

[-- Attachment #1: Type: text/plain, Size: 2114 bytes --]

On Wed, 30 Jul 2014 20:24:30 +0000 Markus Stockhausen
<stockhausen@collogia.de> wrote:

> Hi,
> 
> the last days I tried to understand the RAID6 logic when recalculating
> P/Q parity (or syndrome) if only parts of a stripe are updated. As far
> as I get the current implementation right it will always read the whole
> stripe and build parities from scratch. E.g. updating a single chunk
> on a 10 disk RAID6 will read the other 7 data blocks to write the block
> plus 2 P/Q parities afterwards. Compared to the best case 3 read plus
> 3 write operations this can be quite a heavy impact. RAID5 at least
> has a shortcut for that.
> 
> Being no specialist at all - but having some ideas - I would like to
> get some feedback about the following way to improve the scenario.
> 
> 1) Write a modified gen_syndrome function (call it xor_syndrome)
> like in lib/raid6/xxx.c that allows to XOR an existing P/Q parity
> without overwriting it. The cost of that function would be the same
> as it only changes a few assembler commands.
> 
> 2) Enhance the ops_run_prexor to call this xor_syndrome function
> for an RAID6. Fill the not relevant pages (R5_wantdrain) with an
> empty page or NULL. So the gen_syndrome will only find zeroes.
> With this call P/Q will have a pre-xored version.
> 
> 3) Enhance ops_run_reconstruct6 to allow processing of changed
> blocks only. We will call xor_snydrome from there too, to XOR
> the prexored P/Q once again.
> 
> 4) Enhance handle_stripe_dirtying so it will allow calculation of
> RCW versus RMW costs for the RAID6 case.
> 
> Did I miss something? And if not: Will the doubled CPU consumption 
> for P/Q calculation justify that way of implementation? At least
> we can avoid IOs on slow disks.
> 
> Maybe it has been discussed before but I did not find it on the
> mailing list.
> 
> Thanks in advance.
> 
> Markus

Please see
  http://comments.gmane.org/gmane.linux.raid/42559

Yes, this is something we probably want.
The previous effort stalled somehow.  Maybe it just needs someone to start
pushing again.

NeilBrown

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

  reply	other threads:[~2014-07-30 21:30 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-30 20:24 RAID6 - RMW logic Markus Stockhausen
2014-07-30 21:30 ` NeilBrown [this message]
2014-07-30 21:55   ` Ethan Wilson
2014-07-31  6:43   ` AW: " Markus Stockhausen
2014-08-04  1:22     ` NeilBrown
2014-08-10 17:49       ` AW: " Markus Stockhausen
2014-08-12  7:14         ` NeilBrown

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=20140731073007.3fe4817a@notabene.brown \
    --to=neilb@suse.de \
    --cc=linux-raid@vger.kernel.org \
    --cc=stockhausen@collogia.de \
    /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).