SSD performance tips for RHEL6 and Fedora

    Solid State drives provide a pretty substantial performance boost over traditional hard drive technology, but they have some limitations that require some additional planning. There are basically two big things to do, enable discard/trim support in the filesystem, and limit write operations to the SSD. You want to enable discard to deal with underlying drive specific performance degradation that will happen over time. You want to limit writes to the disk to forestall the impending cell death that awaits any SSD device.  Without further ado, lets get to the tuning tips.

1. Enable discard: in /etc/fstab, append 'discard' as a mount option.
(NOTE: Make sure your disk supports trim. The following command should return a result telling you trim is supported: hdparm -I /dev/yourdisk | grep -i trim)
    sample fstab entry:  /dev/sda2        /      ext4     defaults,discard     1 1

 2. Move /tmp to ram.  This depends on how much ram you have and how much /tmp space you use, but it really helps to limit writes to the SSD
sample fstab entry:  none       /tmp      tmpfs        defaults      0 0

3. Change the mount options for your ext4 filesystem. Again, we're looking to limit writes here. These options are very helpful, but assume that you're using some form of battery backup (UPS, laptop usage, etc). Specifically we're looking at noatime, data, and commit options.
  • change data from the default of ordered to writeback. This reduces the journal data to meta-data only, thus limiting writes.
  • change the commit value from the default of 5 seconds to 10, or 15. This gets you a 2 to 3x write savings, though you risk losing a bit more data if you lose power.
  • If you don't need access time records (mtime and ctime should be enough for most folks) disabling atime will also limit write operations. 
sample fstab entry:  /dev/sda2        /      ext4     defaults,discard,data=writeback,noatime,commit=15     1 1
 4. Lastly, you might want to consider changing the scheduler to noop, since SSD performance will change the system dynamic. You'll likely want to benchmark this to see if it makes a difference for you. To do this, simply add 'elevator=noop' as a kernel option in /etc/grub.conf

This setup will provide a decent base for a laptop or workstation using SSD storage drives. Enjoy!

3 comments:

range said...

The problem with "TRIM" being is that it is not supported through the dm stack. So you cannot use trim as a mount option for LVM or even LUKS containers on RHEL or Fedora.

Jim Perrin said...

It can't be used with software raid or LUKS, but it is supported in LVM these days. RH explicitly lists it in their documentation on SSD tuning ->

http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/newmds-ssdtuning.html

Luigi Rosa said...

Thank you for the tips! I am going to buy a new home server and it will have SSD disk for root file system

Post a Comment

Copyright © Bit Integrity