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?

4 Answers 4


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.

  • 6
    Anonymous' answer is good for changing the default across all disks on a system. By contrast, Eliah Kagan's answer sets the default for specific disks. For a laptop with a single drive, either works fine. For systems with multiple disks -- most notably, disks with both SSDs and rotating drives), Eliah Kagan's answer provides finer-grained control. May 29, 2014 at 7:15
  • 5
    The elevator= kernel argument was removed in kernel v5.4, which is used since Ubuntu 20.04 LTS focal. github.com/torvalds/linux/commit/… Apr 24, 2020 at 8:58

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.

  • root@titan:/home/kessaras# for f in /sys/block/sd?/queue/rotational; do printf "$f is "; cat $f; done /sys/block/sda/queue/rotational is 0 /sys/block/sdb/queue/rotational is 0 /sys/block/sdc/queue/rotational is 1 /sys/block/sdd/queue/rotational is 1 root@titan:/home/kessaras# cat /sys/block/sd*/queue/scheduler [mq-deadline] none [mq-deadline] none [mq-deadline] none [mq-deadline] none Something is very wrong here. It changes all the hard disks to deadline Aug 14, 2019 at 16:57
  • The command doesn't change anything - it simply reports whether a disk is "rotational" (HDD). Rotational = 0 means it's an SSD or other non-spinning drive. Aug 14, 2019 at 17:05
  • what do you mean it doesnt change anything ? And the udev rule written there what does it do ? It is inside a yellow box too. You mean that im blind or i can't read ? Aug 15, 2019 at 13:07
  • 1
    My mistake. It seems in latest kernel they removed the schedulers... ??? for f in /sys/block/sd?/queue/scheduler; do printf "$f is "; cat $f; done /sys/block/sda/queue/scheduler is [mq-deadline] none /sys/block/sdb/queue/scheduler is [mq-deadline] none /sys/block/sdc/queue/scheduler is [mq-deadline] none /sys/block/sdd/queue/scheduler is [mq-deadline] none The article and everything you wrote is fine. It's just that there is only deadline and nothing else to choose from. Aug 15, 2019 at 13:24
vi /etc/rc.local

Add line

for f in /sys/block/sd?/queue/scheduler; do echo "noop" > $f; cat $f; done

Then run the command

chmod +x /etc/rc.local

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.