diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-10-16 07:25:22 +0200 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2009-10-16 07:25:22 +0200 |
commit | 417b8d4ac868cf58d6c68f52d72f7648413e0edc (patch) | |
tree | 6eefb8b381fdad5235d2b29fc0054bcf537efbcc /drivers/md/multipath.c | |
parent | md: drivers/md/unroll.pl replaced with awk analog (diff) | |
download | linux-417b8d4ac868cf58d6c68f52d72f7648413e0edc.tar.xz linux-417b8d4ac868cf58d6c68f52d72f7648413e0edc.zip |
md/raid456: downlevel multicore operations to raid_run_ops
The percpu conversion allowed a straightforward handoff of stripe
processing to the async subsytem that initially showed some modest gains
(+4%). However, this model is too simplistic and leads to stripes
bouncing between raid5d and the async thread pool for every invocation
of handle_stripe(). As reported by Holger this can fall into a
pathological situation severely impacting throughput (6x performance
loss).
By downleveling the parallelism to raid_run_ops the pathological
stripe_head bouncing is eliminated. This version still exhibits an
average 11% throughput loss for:
mdadm --create /dev/md0 /dev/sd[b-q] -n 16 -l 6
echo 1024 > /sys/block/md0/md/stripe_cache_size
dd if=/dev/zero of=/dev/md0 bs=1024k count=2048
...but the results are at least stable and can be used as a base for
further multicore experimentation.
Reported-by: Holger Kiehl <Holger.Kiehl@dwd.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/multipath.c')
0 files changed, 0 insertions, 0 deletions