raid5: speedup sync_request processing
authorEivind Sarto <eivindsarto@gmail.com>
Tue, 10 Jun 2014 00:06:19 +0000 (17:06 -0700)
committerNeilBrown <neilb@suse.de>
Tue, 10 Jun 2014 01:02:01 +0000 (11:02 +1000)
commit053f5b6525ae32da397e6c47721961f800d2c924
tree2846e90e25ae2b5f998bffd2d22119695d139f23
parent2844dc32ea67044b345221067207ce67ffe8da76
raid5: speedup sync_request processing

The raid5 sync_request() processing calls handle_stripe() within the context of
the resync-thread.  The resync-thread issues the first set of read requests
and this adds execution latency and slows down the scheduling of the next
sync_request().
The current rebuild/resync speed of raid5 is not much faster than what
rotational HDDs can sustain.
Testing the following patch on a 6-drive array, I can increase the rebuild
speed from 100 MB/s to 175 MB/s.
The sync_request() now just sets STRIPE_HANDLE and releases the stripe.  This
creates some more parallelism between the resync-thread and raid5 kernel daemon.

Signed-off-by: Eivind Sarto <esarto@fusionio.com>
Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/raid5.c