Ubuntu – Why does Ubuntu 16.04 set all drive IO schedulers to “deadline”

kernelscheduler

I just installed Xubuntu 16.04-64bit to a second partition on my laptop. I noticed it seemed a bit slow at times, so I checked which IO scheduler it was using for that drive, which turns out to be deadline for all drives. I do have a couple of SSDs and hard drives so I know that "deadline" is best for SSDs and cfq for hard drives.

I booted into 14.04 on another partition and it is using cfq for the rotating drives and deadline for the SSD, as it should. I, also, looked into /etc/udev/rules.d to see if 14.04 was using a rule to configure for the type of drive but it wasn't there, so I assume that the kernel is doing it.

So I'm wondering if this is a bug or are they using "deadline" for everything now?

Update: The comment I wrote about /etc/udev/rules.d was a mistake. In fact I have been using a udev rule to change the scheduler (just as the answer has below) according to rotation type since I started using an SSD, a few years back. I guess I just forgot…getting old. Anyway, one of the references I used was Debian SSD optimization wiki.

Wouldn't it be a good idea if it was included? Just a suggestion!

Best Answer

With the release of 14.04 the default scheduler for the 3.13 kernel was changed from CFQ to Deadline.

There is no longer a separate server kernel and the CFQ sheduler is not suited to many server usage scenarios eg KVM write timeouts. There are even performance regressions on the desktop with USB devices.