Disk I/O performance on a Proliant + SmartArray server
Some time ago, we upgraded a customer’s Debian Lenny Linux server from running a 2.6.26 based kernel to use a 3.2 kernel. It hosts a relatively popular website, and the performance optimisations in the 3.2 kernel (particularly around TCP slow start) have made a big difference to page load times (for more information see this article ).
However, after the upgrade, we noticed I/O service times were very poor – with simple tasks often taking seconds to complete.
The problem – the v3.2 kernel seems to have poor default values for disk read ahead, at least when it’s being used on a Compaq/HP Proliant server with a SmartArray G6 controller. The quick fix was to do :
/sbin/blockdev –setra 65536 /dev/sda
This is the same / equivalent to :
echo 32768 > /sys/block/sda/queue/read_ahead_kb
Additional settings, probably of less use are :
echo deadline > /sys/block/sda/queue/scheduler
echo 512 > /sys/block/sda/queue/nr_requests