Dedicated server disc I/O performance tuning

Follow the I/O path from the OS, down to the volume level, down to the individual disc, for a world of adventure...

  • Optimise the web application!
    • Reduce the amount of logging done
    • Use indexes to access data blocks rather than bulk scans (i.e fewer read requests)
    • Cluster hot data blocks together (i.e fewer disc head seeks)
  • Add RAM:
    • Avoids disc reads by caching more web pages;
    • Increases the percentage used for dirty buffers so it helps conglomerate writes as well;
    • Reduces the amount of virtual memory swapping performed.
  • See Server file system performance tuning;

  • Play with the OS I/O scheduler

  • Use a battery backed write cache for:
    • Applications that perform an intensive number of writes to a single location. This will reduce the number of writes that physically hit the disc.
    • Transaction processing on an ACID database. This will hide the write latency.
  • Split the work load over different physical volumes. For example, have separate volumes for small database, log files, user data, etc.
    • Or put the FS journal on another disc
  • Try increasing the number of spindles:
    • RAID 0 will have the best read/write performance (BUT NO DATA SAFETY);

    • RAID 10 is the next best;
    • RAID 1 characteristics:
      • Write performance is slightly less than a single disc;
      • Linear read performance only good with good OS readahead;
      • Read performance otherwise can scale as requests split over drives;
    • RAID 5 characteristics:
      • Decent read performance;
      • Write performance is only good when writing entire strides (i.e. bulk data writes);
      • Database performance will suck;
      • RAID 5 when degraded will totally suck
    • RAID 6 great when reliability is everything.
  • Ensure that you have sufficient bus bandwidth to the discs:
    • PCI-E or PCI-X
    • Point to Point (SAS, SATA) will be better than a shared bus (SCSI LVD, IDE)
    • Two IDE devices on the same cable will suck
  • Increase the individual disc speed
    • Higher the RPM the better
  • If data safety does not matter:

    • Turn on the disc write-back caches