Neil hello
I am measuring read performance of two raid5 with 7 sata disks, chunk size 1MB.
when i set the stripe_cache_size to 4096 i get 240 MB/s. IO'ing from
the two raids ended with 270 MB/s.
i have added a code in make_request which passes the raid5 logic in
the case of read.
it looks like this :
static int make_request (request_queue_t *q, struct bio * bi)
{
.....
if ( conf->raid5_bypass_read && bio_data_dir(bi) == READ )
{
new_sector = raid5_compute_sector(bi->bi_sector,
raid_disks,
data_disks,
&dd_idx,
&pd_idx,
conf);
bi->bi_sector = new_sector;
bi->bi_bdev = conf->disks[dd_idx].rdev->bdev;
//
// do some statics
//
disk_stat_inc(mddev->gendisk, ios[rw]);
disk_stat_add(mddev->gendisk, sectors[rw], bio_sectors(bi));
//
// make upper level to the work for me
//
return 1;
}
...
}
it increased the performance to 440 MB/s.
Question :
What is the cost of not walking trough the raid5 code in the
case of READ ?
if i add and error handling code will it be suffice ?
thank you
--
Raz
-
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html