The I/O scheduler in Linux doesn't favour SSD disks so this little trick should keep a more fluent feeling on the desktop.
This hack can be utilized as either a grub setting or through a rc.local script.
**__Pre Grub 2:__**
To set the scheduler in grub append this to the kernel parameters. Find the line looking like this:
linux /vmlinuz-2.6.31-14-generic root=/dev/mapper/myhostname-root ro quiet splash
and append this:
linux /vmlinuz-2.6.31-14-generic root=/dev/mapper/myhostname-root ro quiet splash elevator=deadline
**__Grub 2:__**
Edit the file /etc/default/grub and find this line:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
change it to this:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=deadline"
and run:
# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.31-14-generic
Found initrd image: /boot/initrd.img-2.6.31-14-generic
Found memtest86+ image: /memtest86+.bin
Done
You can also make the changes in the rc.local script:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
echo deadline > /sys/block/sda/queue/scheduler
echo deadline > /sys/block/sdb/queue/scheduler
echo deadline > /sys/block/sdc/queue/scheduler
echo 1 > /sys/block/sda/queue/iosched/fifo_batch
echo 1 > /sys/block/sdb/queue/iosched/fifo_batch
echo 1 > /sys/block/sdc/queue/iosched/fifo_batch
exit 0
The scheduler is per disk, that's why there is a statement per device (/dev/sdX).