From: NeilBrown <neilb@suse.de>
To: majianpeng <majianpeng@gmail.com>
Cc: linux-raid <linux-raid@vger.kernel.org>
Subject: Re: [PATCH] md:Add blk_plug in sync_thread.
Date: Wed, 27 Jun 2012 12:30:36 +1000 [thread overview]
Message-ID: <20120627123036.53871345@notabene.brown> (raw)
In-Reply-To: <201206111716521256611@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2975 bytes --]
On Mon, 11 Jun 2012 17:16:55 +0800 majianpeng <majianpeng@gmail.com> wrote:
> 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>
> ---
> drivers/md/md.c | 5 ++++-
> 1 files changed, 4 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/md/md.c b/drivers/md/md.c
> index 1c2f904..90bdc37 100644
> --- a/drivers/md/md.c
> +++ b/drivers/md/md.c
> @@ -7298,6 +7298,7 @@ void md_do_sync(struct mddev *mddev)
> int skipped = 0;
> struct md_rdev *rdev;
> char *desc;
> + struct blk_plug plug;
>
> /* just incase thread restarts... */
> if (test_bit(MD_RECOVERY_DONE, &mddev->recovery))
> @@ -7446,7 +7447,8 @@ void md_do_sync(struct mddev *mddev)
> mddev->curr_resync = j;
> }
> mddev->curr_resync_completed = j;
> -
> +
> + blk_start_plug(&plug);
> while (j < max_sectors) {
> sector_t sectors;
>
> @@ -7586,6 +7588,7 @@ void md_do_sync(struct mddev *mddev)
> }
> skip:
> set_bit(MD_CHANGE_DEVS, &mddev->flags);
> + blk_finish_plug(&plug);
>
> if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) {
> /* We completed so min/max setting can be forgotten if used. */
Thanks again.
I've moved the call to "blk_finish_plug" up a bit to just after the
out:
label, as it is possible to "goto skip" before calling blk_start_plug.
Thanks a lot,
NeilBrown
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
prev parent reply other threads:[~2012-06-27 2:30 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-11 9:16 [PATCH] md:Add blk_plug in sync_thread majianpeng
2012-06-11 9:32 ` Nagilum
2012-06-11 10:11 ` majianpeng
2012-06-11 10:30 ` Nagilum
2012-06-27 2:30 ` NeilBrown [this message]
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=20120627123036.53871345@notabene.brown \
--to=neilb@suse.de \
--cc=linux-raid@vger.kernel.org \
--cc=majianpeng@gmail.com \
/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).