Eu tenho dois sistemas, ambos rodando variantes customizadas do OpenSuSE 12.2 (Mantis), ambos executando exatamente o mesmo kernel. Eu recebo duas saídas muito diferentes de /proc/self/cgroup
ou /proc/$$/cgroup
nos dois sistemas:
Sistema A (ou um estoque OpenSuSE 12.1):
cat /proc/self/cgroup
9:perf_event:/
8:blkio:/
7:net_cls:/
6:freezer:/
5:devices:/
4:memory:/
3:cpuacct,cpu:/
2:cpuset:/
1:name=systemd:/user/root/6
Sistema B:
root@msx:/sys/fs/cgroup> cat /proc/self/cgroup
9:perf_event:/
8:blkio:/
7:net_cls:/
6:freezer:/
5:devices:/
4:memory:/
3:cpuacct,cpu:/system/[email protected]/ttyS0
2:cpuset:/
1:name=systemd:/system/[email protected]/ttyS0
Por que as linhas 1 são diferentes e por que a linha 3 está presente em uma e ausente na outra? Não consigo encontrar diferenças de configuração entre os dois sistemas. Eles executam a mesma versão do systemd ( systemd-44-10.1.1.x86_64
). Se eu duplicar os valores de sysctl, isso não terá efeito. As opções de inicialização são as mesmas. Eu comparei tudo em /etc
, /usr
e /lib
para ver se há alguma diferença de configuração relevante. (Existem diferentes RPMs instalados, mas nenhum que estabeleça arquivos de configuração do sistema, e acho que removi todos os RPMs personalizados.)
Isso é mais do que um fator de curiosidade, porque no Sistema B, não podemos criar um encadeamento SCHED_RR
, mas no Sistema A, podemos. Se eu definir DefaultController
para NULL
em /etc/systemd/system.conf
, ele funcionará e a linha 3 desaparecerá (as linhas 1 permanecerão diferentes). Ele também funciona se eu gravar o ID do processo do shell invocador em /sys/fs/cgroup/cpu,cpuacct
:
root@msx:/root> ./a.out
Creation of real-time thread FAILED - Operation not permitted
root@msx:/root> cat /proc/$$/cgroup
9:perf_event:/
8:blkio:/
7:net_cls:/
6:freezer:/
5:devices:/
4:memory:/
3:cpuacct,cpu:/system/sshd.service
2:cpuset:/
1:name=systemd:/system/sshd.service
root@msx:/root> echo $$ > /sys/fs/cgroup/cpu,cpuacct/tasks
root@msx:/root> ./a.out
root@msx:/root> cat /proc/$$/cgroup
9:perf_event:/
8:blkio:/
7:net_cls:/
6:freezer:/
5:devices:/
4:memory:/
3:cpuacct,cpu:/
2:cpuset:/
1:name=systemd:/system/sshd.service
Não sei por que isso funciona. Meus colegas não estão satisfeitos com o fato de o problema ser entendido, já que não deveria exigir essa alteração de configuração.
O kernel é 3.4.47, CONFIG_RT_GROUP_SCHED
está ativado, CONFIG_AUTOGROUP
está ativado (a desativação ainda não funciona, mas falha de maneira diferente)
Este é um derivado do link .