≡ Menu

How To: Double Linux disk read performance with readahead parameter

The open source journal has published an interesting hack. It mostly applies to high-end, multiple-disk storage:

Under the right conditions (that is, with certain hardware configurations which I'll identify later) it is possible to literally double your sequential read performance from disk. If you noticed the terrible performance of the 3Ware 9500S RAID controller and cared enough to investigate. It all has to do with a sneaky little block device parameter known as readahead. Without going into too much gory detail, readahead controls how much in advance the operating system reads when, well, reading, as its name implies. By default, some operating systems (in particular, RHEL5 Server) sets this to 256 (512-byte sectors), or about 128 KB. When dealing with large filesystems spanning many disks, this paltry figure can actually nuke your performance.

=> HowTo: Linux: Double your disk read performance in a single command

Tweet itFacebook itGoogle+ itPDF itFound an error/typo on this page?

Comments on this entry are closed.

  • Seb December 18, 2007, 8:44 am

    Very interesting

  • Joe Roadkill May 10, 2010, 8:59 am

    Hey, this blog entry is USELESS because the link is now roadkill on the information super highway. If you had at least included the exact name of the readahead parameter then this page – which comes up right at the top of a google search for “linux readahead” would actually be useful.

  • robert beck August 20, 2010, 1:04 am

    blockdev -setra xxx
    e.g. blockdev -setra 1024 /dev/sda

    Also try /etc/sysctl.conf:
    /sys/bus/scsi/drivers/sd/[DEVICEID]/block/queue/read_ahead_kb

  • Gabriel Ramuglia January 18, 2011, 4:41 am

    What’s reported in robert’s post is useful, but not syntactically accurate, as it’s missing a –

    The command I use is typically:

    blockdev –setra 1024 /dev/sda

    for a 512kb readahead

  • Me February 27, 2012, 3:11 pm

    The link is dead.