Разделил и добавил в шапку теорию
Проверил на ядре 4.14.20-pf10 :
sudo cat /sys/block/sda/queue/scheduler
bfq по дефолту без udev правила и scsi_mod.use_blk_mq=1 (https://unix.stackexchange.com/questions/375600/how-to-enable-and-use-the-bfq-scheduler)
Т.е. получается 001-kernel-bfq*.pfs не нужен
Ну и по любому удобнее через параметры ядра (добавить scsi_mod.use_blk_mq=1) включать. Тем более в китайском ядре (http://forum.puppyrus.org/index.php?topic=20508.msg141876#msg141876) через udev не работает
будет работать mq-deadline
Это сильно на чем-то отразится?
uname -a
Linux pra-roll 4.15.4-pf #1 SMP PREEMPT Tue Mar 13 14:51:06 MSK 2018 x86_64 GNU/Linux
По умолчанию:
cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none
Может будет интересна статья с тестами:
blk-mq и планировщики ввода-вывода (https://sohabr.net/habr/post/346844/)
Говоря в общих чертах: если приложение использует ioprio для приоритизации конкретных процессов,
то выбор планировщика в сторону CFQ/BFQ будет оправдан.
Но всегда стоит исходить из типа нагрузки и состава всей дисковой подсистемы.
Для некоторых решений разработчики дают вполне конкретные рекомендации: например,
для clickhouse рекомендуют использовать CFQ для HDD и noop для SSD дисков.
Если же от дисков требуется большая пропускная способность,
возможность выполнять больше операций ввода-вывода и средняя задержка не важна,
тогда стоит смотреть в сторону BFQ/CFQ, а для ssd-дисков также noop и none.
Если же необходимо снижение задержки и каждая операция в отдельности,
а в особенности — операция чтения, должна выполняться максимально быстро,
то, помимо использования ssd, стоит использовать специально предназначенный для этого планировщик deadline,
или один из новых — mq-deadline, kyber.
У меня сложилось впечатление что для PRA ближе kyber чем BFQ (имхо).
По умолчанию:
live@pra-roll:~$ cat /sys/module/scsi_mod/parameters/use_blk_mq
Y
001-kernel-bfq*.pfs НУЖЕН
Да. Все что я писал выше - проверялось на виртуалке
На желазе без udev bfq# sudo cat /sys/block/sda/queue/scheduler
mq-deadline kyber [bfq] none
получить не удалось
Почему бы не добавить этот udev в 089? Какие-то побочные эффекты возможны?
Поставил ядро 000-kernel-4.16.2-pf2_64 (https://mirror.yandex.ru/puppyrus/puppyrus-a64/kernel/4.16.2-pf2/)
По старой памяти скачал и 001-kernel4.12-bfq.
cat /sys/block/sda/queue/scheduler
mq-deadline kyber [bfq] none
Но оказалось 001-kernel4.12-bfq больше не нужен.
В 001-prar-c-180101-sf06 уже включен bfq.
001-prar-c-180101-sf06.pfs/usr/lib/udev/rules.d$cat 60-bfq.rules
# enable BFQ in kernel 4.12
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="bfq"
В сети попалась такая конструкция
cat /lib/udev/rules.d/60-scheduler.rules
# установка планировщика для SSD
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="kyber"
# установка планировщика bfq для HDD
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"
# установка планировщика для flash-накопителей
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{removable}=="1", ATTR{queue/scheduler}="mq-deadline"
Как это работает у меня:
live@pra-roll:~$ inxi -D
Drives: ID-1: /dev/sda model: Hitachi_HTS54321 size: 120.0GB
ID-2: USB /dev/sdb model: USB_Flash_Drive size: 7.9GB
live@pra-roll:~$ cat /sys/block/sd[a-z]/queue/scheduler
mq-deadline kyber [bfq] none
[mq-deadline] kyber bfq none
Есть ли резон в таком использовании планировщиков, не знаю.
Еще в 2018 обратил внимание на включение ядерного планировщика PDS-mq в pf-kernel (http://forum.puppyrus.org/index.php?topic=14803.msg150401#msg150401). А тут и тесты (https://www.linux.org.ru/forum/games/15871334?lastmod=1600248202067) подоспели.
1.У меня, с ядром от Pro
$ uname -r
4.20.15-pf7
dmesg | grep -i scheduler
[ 0.201199] pds: PDS-mq CPU Scheduler 0.99m by Alfred Chen.
[ 0.201256] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[ 2.429686] io scheduler noop registered
[ 2.429709] io scheduler cfq registered
[ 2.429710] io scheduler mq-deadline registered
[ 2.429711] io scheduler kyber registered
[ 2.429731] io scheduler bfq registered (default)
2. prar2008-x86_64-03, стандартное ядро (MANJARO), первое DE
(скрин)
p.s. Оговорюсь, выводы никакие не делаю.
5.12.0-pf6-lf
5.11.0-pf2-1-pra
Доподключить/склеить 001-kernel-schedulers.pfs (https://mirror.yandex.ru/puppyrus/puppyrus-a64/kernel/0ld-02/4.20.15-pf7_64/001-kernel-schedulers.pfs). Иначе зачем использовать патченное ядро, если различные 'финтифлюшки' просто не включены.
live@roll2103 ~ % cat /sys/block/sda/queue/scheduler
mq-deadline kyber [bfq] none
live@roll2103 ~ % dmesg | grep -i scheduler
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[ 0.590134] io scheduler mq-deadline registered
[ 0.590136] io scheduler kyber registered
[ 0.590170] io scheduler bfq registered