Любые идеи о том, как я могу настроить LXC / cgroups, чтобы разрешить использование SCHED_RR для приложений в контейнере?
В Интернете я видел упоминание о размонтировании cpu-cgroup, я пробовал это вручную (запуск umount в cpu cgroup), который, похоже, не помог.
Есть идеи, как я постоянно размонтирую cgroup? В Fedora 20.
Размонтирование cpu cgroup - это правильный метод, позволяющий контейнерным приложениям использовать SCHED_RR?
Спасибо
Я считаю, что помимо CAP_SYS_NICE вам также понадобится CAP_SYS_ADMIN. Я не могу сказать наверняка, но в ядре есть проверка для ioprio (), которая требует CAP_SYS_ADMIN && CAP_SYS_NICE для приоритета «реального времени», такого как SCHED_RR.
Видеть http://linux.die.net/man/2/ioprio_set
(Необходимые разрешения для установки приоритетов ввода-вывода)
Я столкнулся с той же проблемой с любыми вызовами sched_setsched (), возвращающими EPERM, когда я пытаюсь изменить приоритет планирования в контейнере. Я также получаю ошибку EPERM, когда пытаюсь изменить то же самое с хоста на процесс в контейнере.
РЕДАКТИРОВАТЬ: На самом деле, я ошибаюсь. Я выясняю, как заставить SCHED_RR работать в моей настройке. Вызов sched_setscheduler () с EPERM ошибался, потому что я не установил бюджет реального времени в папке cgroups.
Групповая политика управления не позволяет устанавливать политику планирования в реальном времени без выделения бюджета времени выполнения, который не установлен предоставленной конфигурацией.
Помните, что обычно контейнеры LXC теряют возможности при запуске. Вам необходимо, по крайней мере, разрешить CAP_SYS_NICE в контейнере. Эта возможность позволяет звонить sched_setscheduler()
это вызов, который вам нужно установить SCHED_RR.
Пример справочной конфигурации LXC:
lxc.cap.keep = sys_nice
И, конечно, ваши приложения также должны иметь CAP_SYS_NICE (или запускаться от имени пользователя root, и в этом случае они уже будут).