SSD scheduler

hello :slight_smile:
does make sense to change the I/O scheduler?
the default is kyber, but none scheduler seems better performing for NVME

none should be the default for nvme SSD’s, but in my experience, mq-deadline is better, even on nvme. I always had some interface “lags” when using none and doing stuff on the filesystem like copying - that does not happen on deadline for me.
cat /etc/udev/rules.d/60-schedulers.rules

# set deadline scheduler for non-rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
# set bfq scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
# set mq-deadline scheduler for non-rotating nvme-disks
ACTION=="add|change", KERNEL=="nvme[0-9]n1", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
1 Like

thanks
I was reading this

why do you think that mq-deadline is better?

because it is simple without much overhead, compared to bfq and kyber.

1 Like

Absolutely, be it improving performance or reducing interface lags, as it is the case on some systems like @BS86.

Personally i do that:

# IO scheduler
# Algorithm to manage disk IO requests and balance it with other CPU loads.

# HDD
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="mq-deadline"

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

# NVMe SSD
ACTION=="add|change", KERNEL=="nvme0n[0-9]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="none"
1 Like

but none scheduler seems recommended
do not know which one to choose :slight_smile:

1 Like