linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 --]

      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).