After finishing my Homeserver project I wanted to get the maximum of performance. At the end of my research in the web i have created following script:
# Get Arrays and physical Disks for active Raid5 Volumes
ARRAYS=""
DISKS=""
for field in `cat /proc/mdstat | grep "active raid5"`
do
if [[ "x${field:0:2}x" == "xmdx" ]]
then
ARRAYS="$ARRAYS $field"
elif [[ "x${field:0:2}x" == "xsdx" ]]
then
DISKS="$DISKS ${field:0:3}"
fi
done
# Changes on physical Devices
for disk in $DISKS
do
#Set read-ahead to 16MB
blockdev --setra 16384 /dev/$disk
#Device Queue Tuning
echo 1024 > /sys/block/$disk/queue/read_ahead_kb
echo 256 > /sys/block/$disk/queue/nr_requests
#Disable NCQ
echo 1 > /sys/block/$disk/device/queue_depth
done
# Changes on Raid Arrays
for array in $ARRAYS
do
#Set read-ahead to 64MB
blockdev --setra 64536 /dev/$array
#Increase stripe-cache size
echo 16384 > /sys/block/$array/md/stripe_cache_size
done
This are the optimal and tested settings for my system. The numbers can differ from system to system. You have to test.
IT Enthusiast with focus on linux, vmware, container technologies