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!

Comments