How do I change to the noop scheduler?
I have an SSD in my laptop and I've been told that switching to the "noop" scheduler is preferred.
How do I change to the noop scheduler, and where do I make the change so that it is persistent across reboots?
Suppose your hard disk is /dev/sda
. Then you could check to see what scheduler is currently in use for it:
cat /sys/block/sda/queue/scheduler
(The scheduler currently in use will be surrounded by [
]
brackets.)
And you could make it use the noop scheduler:
echo noop > /sys/block/sda/queue/scheduler
See this article for slightly more information.
To make the change persist, you can put the command in /etc/rc.local
.
Edit /etc/default/grub, such as gksudo gedit /etc/default/grub
, here you need to add elevator=noop.
Change GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
to GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"
.
Then run sudo update-grub2
and restart.
This Debian reference shows how to dynamically detect SSDs and change the scheduler accordingly:
In systems with different drive types you can adjust settings with a udev rule (create /etc/udev/rules.d/60-ssd-scheduler.rules):
# Set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0",ATTR{queue/scheduler}="deadline"
To make sure that your kernel can detect rotational status:
$ for f in /sys/block/sd?/queue/rotational; do printf "$f is "; cat $f; done
/sys/block/sda/queue/rotational is 1
/sys/block/sdb/queue/rotational is 1
/sys/block/sdc/queue/rotational is 0 <=== Only this is SSD!
All of the above is quoted directly from the Debian reference, which has many other elements of interest to first-time SSD users.