On Wed, 30 Jul 2014 20:24:30 +0000 Markus Stockhausen <stockhausen@xxxxxxxxxxx> 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:
signature.asc
Description: PGP signature