Improve performance Zorin OS 18.1 with correct I/O scheduler

(First post as a new user)
Recently I stumbled on an article about I/O scheduler and started to investigate what my settings in Zorin 18.1 where.

Using Bash

cat /sys/block/sdb/queue/scheduler

I could see it was set to: none [mq-deadline]

Gemini advised to switch it to none since that was better for SSD's. And I'm using two SSD's in my laptop (my old workhorse: Dell M6800).

I did that with:

bash

sudo gedit /etc/udev/rules.d/60-ssd-scheduler.rules

and adding this line

ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"

So, non rotational disks will be set to none.

Save and activate with:

Bash

sudo udevadm trigger --action=change

The result was a big improvement on all stuff related to reading or saving data. Everything was much faster.

This brings me to my question: why was it set to mq-deadline while SSD's are much faster with none?

Is this something Zorin missed or is there more to it than I know?

I just saw your message and decided to give it a try myself. It'll be interesting to see if I notice the difference in response on my Zorin 16 installation.

Possible downsides:

(Found using search)
If you are using an NVMe drive: Sticking with none is standard practice and technically superior for most use cases, as it minimizes CPU cycles for I/O management.
If you are using a standard SATA SSD: If you feel the system is responsive, none is fine. If you notice stuttering during heavy background tasks, consider switching back to mq-deadline.

Update: I definitely notice the improved response. :slight_smile:

hmm i dont have that in my current kernel but im not using the 6.17 kernel i have the liquorix kernel installed so that file in udev seems to be removed

I don't believe the kernel is involved, or at least I don't think it matters which kernel you are running.

And if your /rules.d folder file really is missing from /udev, you can create it and the system will look for it.

Then create the scheduler config file:

sudo nano /etc/udev/rules.d/60-ssd-scheduler.rules

Paste this line:
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"

Write, save and exit with a Ctrl-o, Enter, and Ctrl-x

To trigger it, run:
sudo udevadm trigger --action=change

The change will remain persistent across reboots.