[Comm] JACK, /proc/sys/kernel/sched_rt_runtime_us, CONFIG_RT_GROUP_SCHED
Yuriy Al. Shirokov
yuriy.shirokov на gmail.com
Сб Май 9 22:46:25 MSK 2020
Похоже, разобрался.
пт, 8 мая 2020 г. в 21:35, Yuriy Al. Shirokov <yuriy.shirokov на gmail.com>:
> Есть только одна проблема — в Альте нет ни /etc/cgconfig.conf, ни
> /etc/cgrules.conf, ни сервиса cgconfig в systemd.
На самом деле есть, просто пакет cgroup почему-то не поставился при
старте системы.
После его установки всё получилось _почти_ по этому рецепту:
https://github.com/jackaudio/jackaudio.github.com/wiki/Cgroups#method-2
Распишу подробно, что нужно сделать.
sudo apt-get install cgroup
После этого отредактировать в своём любимом редакторе
/etc/cgconfig.conf, дописав туда
group rtaudio {
perm {
task {
uid = root;
gid = audio;
}
admin {
uid = root;
gid = root;
}
}
cpu {
cpu.rt_runtime_us = 950000;
}
}
и /etc/cgrules.conf, прописав туда
@audio cpu rtaudio/
(в документации на JACK предлагают писать "@audio:jackd cpu rtaudio/",
но вот как раз это у меня не сработало — а разбираться почему нет ни
знаний, ни мотивации).
После чего выполнить:
sudo systemctl enable cgred
sudo systemctl enable cgconfig
systemctl reboot
Всё, после перезагрузки JACK нормально запускается и работает. Да и
вообще любой процесс, запущенный пользователем из группы audio, может
пользоваться RT-возможностями ядра:
$ chrt -f 80 echo "I'm chrt'ed!"
I'm chrt'ed!
$
(в Альте из коробки вы получите «chrt: failed to set pid 0's policy:
Операция не позволена», даже если нарулили себе доступ к RT через
ulimit).
Отмечу только, что сам Поттеринг ещё в 2015 году попросил выключить
CONFIG_RT_GROUP_SCHED в ядре Fedora, признав (уникальный случай) всю
затею дурацкой и неработающей:
https://bugzilla.redhat.com/show_bug.cgi?id=1229700
Интересно, кто выставил CONFIG_RT_GROUP_SCHED=y в std-def, когда и
(главное) зачем?
Ну ладно. В какое Спортлото теперь написать, чтобы следующий
наступивший на эти грабли не проходил весь квест с нуля?
Подробная информация о списке рассылки community