#linux #systemd #cgroups
Вопрос:
У меня проблема с добавлением контроллера процессора, так как команда выдает ошибку :
sudo echo " cpu" >> cgroup.subtree_control
bash: cgroup.subtree_control: Access Denied.
Поэтому я нашел решение, заключающееся в том, что я должен переместить все процессы реального времени(RT) в корневую группу, как описано в документах cgroupv2 (показано в решении аналогичной проблемы, которое ссылается на документ ядра).
ПРЕДУПРЕЖДЕНИЕ: cgroup2 еще не поддерживает управление процессами в реальном времени, и контроллер процессора можно включить только в том случае, если все процессы RT находятся в корневой группе. Имейте в виду, что программное обеспечение для управления системой, возможно, уже поместило процессы RT в некорневые контрольные группы во время процесса загрузки системы, и эти процессы, возможно, потребуется переместить в корневую группу, прежде чем можно будет включить контроллер процессора.
Когда я использовал
ps ax -L -o 'pid tid cls rtprio comm' | grep RR
команда, я получил 5 различных процессов :
1220 1229 RR 20 pipewire
1221 1342 RR 5 alsa-sink-ALC88
1221 1343 RR 5 alsa-source-ALC
1246 1250 RR 20 pipewire-media-
7771 7773 RR 99 rtkit-daemon
Как я понял из Интернета, pipewire и pipewire-media-это «потоковые сервисы»RT. Я попытался переместить один из них в корневую группу c с помощью :
echo "1220" > /sys/fs/cgroup/cgroup.procs
но это дает ту же ошибку, наиболее вероятную, так как они все еще активны, и система не позволяет изменить их группу. Итак, как я могу переместить эти процессы в корневую группу? Я пытался убить их перед перемещением и активацией контроллеров CPU и CPUSet, но безуспешно, так как все процессы RT перезапускаются сразу же после того, как я снова их убью! Что я могу сделать?
Комментарии:
1. Кто-нибудь знает, как это решить?