md:Add blk_plug in sync_thread.
Add blk_plug in sync_thread will increase the performance of sync. Because sync_thread did not blk_plug,so when raid sync, the bio merge not well. Testing environment: SATA controller: Intel Corporation 82801JI (ICH10 Family) SATA AHCI Controller. OS:Linux xxx 3.5.0-rc2+ #340 SMP Tue Jun 12 09:00:25 CST 2012 x86_64 x86_64 x86_64 GNU/Linux. RAID5: four ST31000524NS disk. Without blk_plug:recovery speed about 63M/Sec; Add blk_plug:recovery speed about 120M/Sec. Using blktrace: blktrace -d /dev/sdb -w 60 -o -|blkparse -i - without blk_plug: Total (8,16): Reads Queued: 309811, 1239MiB Writes Queued: 0, 0KiB Read Dispatches: 283583, 1189MiB Write Dispatches: 0, 0KiB Reads Requeued: 0 Writes Requeued: 0 Reads Completed: 273351, 1149MiB Writes Completed: 0, 0KiB Read Merges: 23533, 94132KiB Write Merges: 0, 0KiB IO unplugs: 0 Timer unplugs: 0 add blk_plug: Total (8,16): Reads Queued: 428697, 1714MiB Writes Queued: 0, 0KiB Read Dispatches: 3954, 1714MiB Write Dispatches: 0, 0KiB Reads Requeued: 0 Writes Requeued: 0 Reads Completed: 3956, 1715MiB Writes Completed: 0, 0KiB Read Merges: 424743, 1698MiB Write Merges: 0, 0KiB IO unplugs: 0 Timer unplugs: 3384 The ratio of merge will be markedly increased. Signed-off-by: majianpeng <majianpeng@gmail.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
1850753d2e
commit
7c2c57c9a9
|
@ -7298,6 +7298,7 @@ void md_do_sync(struct mddev *mddev)
|
||||||
int skipped = 0;
|
int skipped = 0;
|
||||||
struct md_rdev *rdev;
|
struct md_rdev *rdev;
|
||||||
char *desc;
|
char *desc;
|
||||||
|
struct blk_plug plug;
|
||||||
|
|
||||||
/* just incase thread restarts... */
|
/* just incase thread restarts... */
|
||||||
if (test_bit(MD_RECOVERY_DONE, &mddev->recovery))
|
if (test_bit(MD_RECOVERY_DONE, &mddev->recovery))
|
||||||
|
@ -7447,6 +7448,7 @@ void md_do_sync(struct mddev *mddev)
|
||||||
}
|
}
|
||||||
mddev->curr_resync_completed = j;
|
mddev->curr_resync_completed = j;
|
||||||
|
|
||||||
|
blk_start_plug(&plug);
|
||||||
while (j < max_sectors) {
|
while (j < max_sectors) {
|
||||||
sector_t sectors;
|
sector_t sectors;
|
||||||
|
|
||||||
|
@ -7552,6 +7554,7 @@ void md_do_sync(struct mddev *mddev)
|
||||||
* this also signals 'finished resyncing' to md_stop
|
* this also signals 'finished resyncing' to md_stop
|
||||||
*/
|
*/
|
||||||
out:
|
out:
|
||||||
|
blk_finish_plug(&plug);
|
||||||
wait_event(mddev->recovery_wait, !atomic_read(&mddev->recovery_active));
|
wait_event(mddev->recovery_wait, !atomic_read(&mddev->recovery_active));
|
||||||
|
|
||||||
/* tell personality that we are finished */
|
/* tell personality that we are finished */
|
||||||
|
|
Loading…
Reference in New Issue