mdadm - RAID6 Tweaks
Apr 24, 2016
After reconfiguring a server to use RAID6 with LUKS instead of RAID10 I noticed the sequential performance was abysmal. This is mostly due to the fact that the strip_cache_size is set to 512
by default.
md0 is the RAID array with 4 disks.
# Read ahead
blockdev --setra 65536 /dev/md0
# Stripe cache
echo 32768 > /sys/block/md0/md/stripe_cache_size
# Disable NCQ
echo 1 > /sys/block/sda/device/queue_depth
echo 1 > /sys/block/sdb/device/queue_depth
echo 1 > /sys/block/sdc/device/queue_depth
echo 1 > /sys/block/sdd/device/queue_depth
# Deadline scheduler can help with multi-threaded work loads
echo 'deadline' > /sys/block/sda/queue/scheduler
echo 'deadline' > /sys/block/sdb/queue/scheduler
echo 'deadline' > /sys/block/sdc/queue/scheduler
echo 'deadline' > /sys/block/sdd/queue/scheduler
Before: 79 MB/s writes After: 179 MB/s writes
That’s a big improvement!