Parece que você pode adicionar condições à seção unit dos arquivos de unidade do systemd, então eu estava pensando... existe uma maneira de adicionar a condição ConditionGroup
a um drop-in em user-.slice.d
? Meu objetivo final é ter alocações ponderadas de CPU para um grupo de prestadores de serviços, de modo que, se 100% da CPU for usada, eles obterão 33% desses recursos.
O único drop-in que tenho é aquele que veio instalado no Ubuntu 20.04 em /lib/systemd/system/user-.slice.d/10-defaults.conf
[Unit]
Description=User Slice of UID %j
Documentation=man:[email protected](5)
After=systemd-user-sessions.service
StopWhenUnneeded=yes
[Slice]
TasksMax=33%
Posso fazer uma cópia que use o ConditionGroup para um grupo específico e adicionar pesos de CPU para esse grupo?
[Unit]
Description=User Slice of UID %j
Documentation=man:[email protected](5)
After=systemd-user-sessions.service
StopWhenUnneeded=yes
ConditionGroup=<some group GID>
[Slice]
CPUWeight=3333
Em seguida, adicione CPUWeight=6666
ao 10-default.conf para que qualquer pessoa que não esteja no ConditionGroup receba uma parcela maior da CPU? Se isso for possível, não tenho 100% de certeza de onde colocar a cópia do drop-in ou como chamá-lo. Qualquer ajuda ou conselho sobre como fazer isso seria ótimo.
O Systemd não suporta isso nativamente, mas você pode configurar
pam_exec
em /etc/pam.d para que ele prepare um drop-in individual para o UID cuja sessão está sendo aberta e o coloque/run/systemd/...
antes que pam_systemd crie a fatia real.Como alternativa, use pam_exec depois de pam_systemd e faça com que ele chame
systemctl set-property
.