[DRBD-user] Metadata on software RAID1 load slowlyness problem

Lars Ellenberg Lars.Ellenberg at linbit.com
Mon Dec 11 10:29:46 CET 2006

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


/ 2006-12-08 13:58:33 -0200
\ Daniel van Ham Colchete:
> Hi Yall,
> 
> I'm building my very first DRBD RAID. I've been sucessfull and
> everything is working great.
> 
> My current config is:
> SERVER1:
> sda 400GB + sdb 400GB = md Software RAID1
> sdc 250GB
> 
> SERVER2:
> sda 250GB + sdb 250GB = md Software RAID1
> sdc 400GB
> 
> My problem is, when the DRBD`s metadata is allocated to a md partition
> (internal or /dev/md5[0]) the load time is greater than 4 minutes.
> What I mean by load is "drbdadm up drbd0". I had to recompile drbdadm
> changing it's timeout value from 120 to 600 seconds because of that,
> otherwise my distro wouldn't init the both drbd devices.
> 
> Them, on the server that the metadata is being stored at the plain sdc
> disk, the load time is less than 2 seconds. Important: I'm using
> exactly the same hardware to each size, all the 400GB sized
> harddrivers are exectly the same.
> 
> So, I tried changing both metadata storage place to plain sata drives
> and everything loaded in less than 2 secs.
> 
> I also tried storing the metadata in internal and exlusive MD
> partitions but the load time were the same: 4-5 minutes to the 340GB
> partition and 2' 5'' to the 194GB partition.
> 
> Looking through DRBD's source I found that the delay is probably
> happening that the _drbd_md_sync_page_io of the drbd_actlog.c file.
> Probabily at the wait_for_completion(&event); line.
> 
> I'm using the kernel 2.6.18 with DRBD 0.7.22. My kernel has the
> BIO_RW_SYNC defined.

I think the md raid code strips off the BIO_RW_SYNC flag...
that way you suffer from the additional induced latency
with every meta data update.

this is just a suggestion for raid1, similar patch for the other raid levels...
should apply with small offsets to other kernel versions, too.

it may well be that the _re_assignment of the bi_rw is actually
the real bug: bio_clone has already set it, and even set some other
flags there as well, which probably should not be stripped off either.
feel free to forward this to lkml.

diff -u drivers/md/raid1.c*
--- /mnt/kernel-src/linux-2.6.19/drivers/md/raid1.c.orig	2006-12-11 10:06:17.661776243 +0100
+++ /mnt/kernel-src/linux-2.6.19/drivers/md/raid1.c	2006-12-11 10:11:42.189647127 +0100
@@ -776,6 +776,7 @@
 	struct page **behind_pages = NULL;
 	const int rw = bio_data_dir(bio);
 	int do_barriers;
+	int do_sync;
 
 	/*
 	 * Register the new request and wait if the reconstruction
@@ -891,6 +892,7 @@
 	atomic_set(&r1_bio->behind_remaining, 0);
 
 	do_barriers = bio_barrier(bio);
+	do_sync = bio_sync(bio);
 	if (do_barriers)
 		set_bit(R1BIO_Barrier, &r1_bio->state);
 
@@ -906,7 +908,7 @@
 		mbio->bi_sector	= r1_bio->sector + conf->mirrors[i].rdev->data_offset;
 		mbio->bi_bdev = conf->mirrors[i].rdev->bdev;
 		mbio->bi_end_io	= raid1_end_write_request;
-		mbio->bi_rw = WRITE | do_barriers;
+		mbio->bi_rw = WRITE | do_barriers | do_sync;
 		mbio->bi_private = r1_bio;
 
 		if (behind_pages) {


-- 
: Lars Ellenberg                            Tel +43-1-8178292-0  :
: LINBIT Information Technologies GmbH      Fax +43-1-8178292-82 :
: Vivenotgasse 48, A-1120 Vienna/Europe    http://www.linbit.com :
__
please use the "List-Reply" function of your email client.



More information about the drbd-user mailing list