Форум проекта PuppyRus Linux

Дистрибутивы проекта PuppyRus Linux => PuppyRus-A [PRA] => Тема начата: sfs от 01 Август 2017, 09:07:31

Название: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 01 Август 2017, 09:07:31
https://habrahabr.ru/post/337102/
https://unix.stackexchange.com/questions/375600/how-to-enable-and-use-the-bfq-scheduler
Для включения Bfq пока что надо использовать дополнительный модуль 001 с правилом udev.
https://xakep.ru/2014/05/11/input-out-linux-planning/
Есть впечатления по итогу использования?
Правило - отдельным модулем - для возможности сравнить?
Я правильно понял - в https://pf.natalenko.name/ bfq и так было, а теперь и в обычном ядре?
Название: Re: Re: Ядро и зависимые программы
Отправлено: Pro от 01 Август 2017, 09:10:29
Правило - отдельным модулем - для возможности сравнить?
нет. просто в будущем будет нормально через конфиг ядра включаться, а пока только так.

Я правильно понял - в https://pf.natalenko.name/ bfq и так было, а теперь и в обычном ядре?
да.
Название: Re: Re: Ядро и зависимые программы
Отправлено: sfs от 01 Август 2017, 09:18:33
в будущем будет нормально через конфиг ядра включаться, а пока только так.
А почему бы не поместить правило удев в модуль.pfs ядра?
Название: Re: Re: Ядро и зависимые программы
Отправлено: Pro от 01 Август 2017, 09:23:40
А почему бы не поместить правило удев в модуль.pfs ядра?
потому что для этого надо перепаковывать модуль с драйверами ядра. Мера временная и менять скрипты генерирующие ядро смысла нет.

А почему бы не объединить все эти 001 070 и т.п. в один модуль? Встречный такой вопросец.
Название: Re: Re: Ядро и зависимые программы
Отправлено: sfs от 01 Август 2017, 10:00:31
Я спрашивал в плане - понять: лень или глубокий замысел :)
почему бы не объединить все эти 001 070 и т.п. в один модуль?
В ретро объединил
070 используется в разных дистрах и там много всего. Перепутается, а в пфс нет функционала разборки моставных модулей на составные
В ролл начал процесс опакечивания своих скриптов
Может и объединю...
Название: Re: Re: Ядро и зависимые программы
Отправлено: Pro от 01 Август 2017, 10:02:53
Я спрашивал в плане - понять: лень или глубокий замысел :)
глубокий лень конечно
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 12 Март 2018, 17:25:28
Разделил и добавил в шапку теорию
Проверил на ядре 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 не работает
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 26 Март 2018, 09:28:37
001-kernel-bfq*.pfs не нужен
Pro - ты его по прежнему выкладываешь.... Я сделал неправильные выводы в этой теме?
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: Pro от 26 Март 2018, 09:33:22
Pro - ты его по прежнему выкладываешь.... Я сделал неправильные выводы в этой теме?
для x64 может быть, а на х32 я щас проверил - 001-kernel-bfq*.pfs НУЖЕН
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 26 Март 2018, 09:38:21
Давайте как-то определимся
для x64 может быть
Перепроверьте кто-нибудь. Выше вся инфа есть
на х32 я щас проверил - 001-kernel-bfq*.pfs НУЖЕН
Т.е. через параметр ядра не включается?
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: Pro от 26 Март 2018, 09:40:12
x64 тоже у меня требует 001-kernel-bfq*.pfs чтобы заработало.

Если что-то другое в системе менялось, то надо не ссылку кидать а написать в каком месте еще делать этот выбор. короче мне 001-kernel-bfq*.pfs НУЖЕН
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 26 Март 2018, 09:41:44
через параметр ядра не включается?
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: Pro от 26 Март 2018, 09:43:12
оно перестало включаться, когда переделали там чего-то
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 26 Март 2018, 09:47:45
Загадочно. У меня совершенно другие результаты. Правда, я тестил на 415 своей компиляции
Но конфиг-то использовал тот же
Прошу еще кого-нибудь проверить. Не может же быть связано с разным железом...
Я правильно понимаю - если bfq не включится - будет работать чуть медленнее и больше никаких побочек?
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: Pro от 26 Март 2018, 10:39:56
будет работать чуть медленнее и больше никаких побочек?
будет работать mq-deadline (в наших ядрах) или то что выставлено в конфиге ядра в качестве дефолтного
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 26 Март 2018, 10:46:24
будет работать mq-deadline
Это сильно на чем-то отразится?
то что выставлено в конфиге ядра в качестве дефолтного
А что у тебя выставлено и в каком параметре?
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: Pro от 26 Март 2018, 10:57:50
Это сильно на чем-то отразится?
хз


А что у тебя выставлено и в каком параметре?
CONFIG_DEFAULT_IOSHED="cfq" например, но у меня без параметров на mq-deadline  скидывает, cfq в списке scheduler вобще нету
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 26 Март 2018, 11:15:45
Наверное IOSCED (https://www.centos.org/forums/viewtopic.php?t=36009)
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: krasnyh от 29 Март 2018, 18:31:33
    будет работать 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 (имхо).




Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 30 Март 2018, 09:19:55
удобнее через параметры ядра (добавить scsi_mod.use_blk_mq=1)
А так?
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: krasnyh от 30 Март 2018, 21:44:30
По умолчанию:
Код
live@pra-roll:~$ cat /sys/module/scsi_mod/parameters/use_blk_mq
Y
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 31 Март 2018, 09:31:37
001-kernel-bfq*.pfs НУЖЕН
Да. Все что я писал выше - проверялось на виртуалке
На желазе без udev bfq
Код
# sudo cat /sys/block/sda/queue/scheduler
mq-deadline kyber [bfq] none
получить не удалось
Почему бы не добавить этот udev в 089? Какие-то побочные эффекты возможны?
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: krasnyh от 26 Апрель 2018, 16:51:04
 Поставил ядро 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"
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: krasnyh от 26 Апрель 2018, 17:30:36
 В сети попалась такая  конструкция
Код
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
Есть ли резон в таком использовании планировщиков, не знаю.
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 26 Апрель 2018, 17:58:24
Есть ли резон в таком использовании планировщиков
Раз люди заморачивались - наверное есть, но скорее всего на глаз незаметно
Нужны тесты
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 27 Апрель 2018, 09:23:07
хорошее правило, мне нра
Нравится теоретически или пробовал и есть впечатления? Если так - в исо?
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: Pro от 27 Апрель 2018, 09:41:52
я не умею тестировать планировщики
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 27 Апрель 2018, 09:45:06
Чем тогда понравилось правило?
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: krasnyh от 16 Сентябрь 2020, 13:49:40
Еще в 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. Оговорюсь, выводы никакие не делаю.
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 16 Сентябрь 2020, 14:08:50
По ощущениям есть ускорение? Не глядя на цифры "в попугаях?"
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: krasnyh от 10 Июль 2021, 23:36:06
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
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 12 Июль 2021, 10:13:33
001-kernel-schedulers.pfs.
В арчвики немного другой рецепт (https://wiki.archlinux.org/title/Improving_performance#Input/output_schedulers) и это есть в 089*.pfs в lfa2008. Лучше переместить в модуль 000
Разместить правило лучше в /etc/usev/rules.d - тогда и в срарых дебианах будет работать
Есть другие идеи?
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 12 Июль 2021, 18:01:05
Еще не забыть включить планировщик дефолтно на этих ядрах. А не повесить этот процесс на пользователя. ) Всяко добавится производительности.
Тогда добавлять в 089 LFD10. В LFA уже есть.
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: krasnyh от 12 Июль 2021, 18:16:12
В LFA уже есть.
Да? А то я проверял, но в вирте. И проверочная команда конечно была cat /sys/block/sr0/queue/scheduler, а это нигде похоже не прописывается и не учитывается для включения. Но видел, что был выхлоп при dmesg | grep -i scheduler.
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: krasnyh от 12 Июль 2021, 19:43:03
Доподключить/склеить 001-kernel-schedulers.pfs.
Интересно, как я проверял в prar2103, если планировщик заработал только с этим модулем. А сейчас я его убираю и перезагружаюсь, и bfq все равно включен, хотя сохраненка у меня модулем и не перезаписывается. Чудеса.

Наверно смотрел по выхлопу dmesg | grep -i scheduler, а он почему-то пропадает при длительной работе компа.
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: krasnyh от 12 Июль 2021, 21:06:28
проверочная команда конечно была cat /sys/block/sr0/queue/scheduler, а это нигде похоже не прописывается и не учитывается для включения.
:)  Виртулка с DDR, скрин1.


Для наглядности виртуалка с prar2103, скрин2.
Название: Re: Ядро. Планировщик ввода / вывода BFQ
Отправлено: sfs от 13 Июль 2021, 12:58:10
я проверял, но в вирте.
Создайте пустой диск с небольшими разделами ext fat ntfs - это все автомонтируется при загрузке с сд  и будет удобно проверять что угодно.
Виртулка с DDR, скрин1.
На 441 ядре почему-то bfq везде без udev правил
А вообще в https://wiki.archlinux.org/title/Improving_performance#Input/output_schedulers sr нет
Добавил udev правило там где не было. Насколько я понимаю - если ядро без bfq - оно просто не отработает (т.е. проблем не создаст)
089-ddr01-upd-sf90.pfs (http://mirror.yandex.ru/puppyrus/ddr/ddr01/pfs/089-ddr01-upd-sf90.pfs)
089-lfd10-upd-sf59.pfs (http://mirror.yandex.ru/puppyrus/lf/d10/pfs/089-lfd10-upd-sf59.pfs)
И на всякий случай - отдельно
089-bfq-sf01.pfs (http://mirror.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/089-bfq-sf01.pfs)