So I have been using the ADIOS IO scheduler for months now but with the recent April release of CachyOS, NVME drives now use Kyber by default, so my question is:
Should I change anything in my configuration files? I am using the default persistent ADIOS rules as provided by the CachyOS wiki , should I delete the NVME part of the ADIOS rules file to avoid conflicts with Kyber?
Ugo
April 27, 2026, 4:23pm
2
ADIOS works fine on my laptop, idk if Kyber is better or not, so you can also remove KYBER to use ADIOS instead.
KYBER is now default even if ADIOS was enabled previously : launch kerverin your terminal to check it, or cat /sys/block/nvme0n1/queue/scheduler
To reenable ADIOS, assuming you have already done it following the wiki:
echo adios | sudo tee /sys/block/nvme0n1/queue/scheduler
Then:
sudo udevadm control --reload-rules
sudo udevadm trigger
I don’t want to sound rude but did you read the contents of my post?
Ugo
April 27, 2026, 6:31pm
4
Yes, and what I have written avoids any conflict by setting ADIOS as the default instead of Kyber. But if I am wrong, please correct me!
Dusty
April 27, 2026, 6:38pm
5
i set the sched to Adios after installing CachyOS ages ago
looks to me like Kyber didn’t replace Adios during install
i didn’t touch any conf’s
❯ cat /sys/block/nvme0n1/queue/scheduler
none mq-deadline kyber [adios] bfq
Ugo
May 13, 2026, 2:32pm
6
Hi again!
Kyber still take the default place instead of Adios on my computer.
Changing priority of udev rule to 99 doesn’t change anything. But the systemd service way works, with 15 seconds of delay.
Any user with the same trouble? I will open a new thread or maybe a bug report.
Thanks!
cscs
July 6, 2026, 4:11am
7
Ugo:
Kyber still take the default place instead of Adios on my computer.
Changing priority of udev rule to 99 doesn’t change anything. But the systemd service way works, with 15 seconds of delay.
Any user with the same trouble?
Nope.
using, ex;
/etc/udev/rules.d/66-custom.rules
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="adios"
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="adios"
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
Ugo
July 6, 2026, 10:14am
8
Hi! Thanks for your help.
Sorry, I missed to update this thread: Kyber is forced by tuned-cachy conf. file : /usr/lib/tuned/profiles/cachyos-common/tuned.conf:
ouvert 05:28PM - 13 May 26 UTC
While Kyber is now the new default IO scheduler, it overwrites my ADIOS config. … According to `kerver` command, Kyber is the default now on my computer.
I enabled it following the wiki, using udev rule.
To change the rule to a later priority with 99 instead of 60 doesn't work.
It would also be useful to mention that manually writing the value again to /sys/block/nvme0n1/queue/scheduler works correctly, which shows that the problem is with persistence at boot, not with ADIOS itself. After reboot, the scheduler goes back to Kyber.
I also tested editing /usr/lib/udev/rules.d/60-ioschedulers.rules directly and replacing kyber with adios, but after reboot the NVMe scheduler is still set to kyber. It only switches to adios after I manually reload and trigger udev again with:
```
sudo udevadm control --reload-rules
sudo udevadm trigger
```
I tried a workaround using systemd service : ADIOS is enabled at reboot but after a few minutes Kyber becomes the active scheduler again.
```
[Unit]
Description=Force adios I/O scheduler on nvme0n1
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'sleep 1; echo adios > /sys/block/nvme0n1/queue/scheduler'
[Install]
WantedBy=multi-user.target
```
Other idea : i created another systemd service which launch udev rules reload: it works, but not sure that's a good and proper way...
```
[Unit]
Description=Reapply udev rule for NVMe scheduler
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'sleep 1; udevadm control --reload-rules; udevadm trigger --action=change /sys/block/nvme0n1'
[Install]
WantedBy=multi-user.target
```
cscs
July 6, 2026, 7:52pm
9
Provided by tuned-cachy package.
I do not have either tuned or that package so no such problems here.
But a good note for anyone else who might.