Onde estão as configurações do systemd para cgroups?

2

Meu entendimento é que, por padrão, o systemd iniciará todos os processos sob um único cgroup, em que cpu.share = 1024. Se você optar por substituir o cpu.share por um serviço, ele criará um novo cgroup para os processos sob esse serviço com cpu.share definido para qualquer valor que você tenha escolhido.

Eu quero criar manualmente um novo cgroup com um cpu.share personalizado que me dê 60% da CPU. Para fazer isso, preciso saber os valores de cpu.share para todos os cgroups existentes. Onde o sistema está definindo esses valores? Existe uma maneira fácil para eu conseguir isso? / sys / fs / cgroup / cpu contém apenas o grupo raiz (definido como 1024) e os grupos que criei manualmente.

    
por offbynull 05.03.2018 / 17:27

2 respostas

1

As opções CGroup do systemd são documentadas em 'man systemd.exec. Parece que o que você está procurando é:

'CPUWeight='

Assign the specified CPU time weight to the processes executed, if the unified control group hierarchy is used on the system. These options take an integer value and control the "cpu.weight" control group attribute. The allowed range is 1 to 10000. Defaults to 100. For details about this control group attribute, see cgroup-v2.txt[2] and sched-design-CFS.txt[5]. The available CPU time is split up among all units within one slice relative to their CPU time weight.

    
por 05.03.2018 / 19:30
0

My understanding is that, by default, systemd will start all processes under a single cgroup where cpu.share=1024.

Eu não acredito que isso esteja correto. No entanto, por favor, não tome minha palavra como autoritário. Aqui estão as partes dos documentos que me levam a essa conclusão:

De systemd.resource-control(5) :

   CPUAccounting=
       Turn on CPU usage accounting for this unit. Takes a boolean argument.
       Note that turning on CPU accounting for one unit might also implicitly
       turn it on for all units contained in the same slice and for all its
       parent slices and the units contained therein. The system default for
       this setting maybe controlled with DefaultCPUAccounting= in systemd-
       system.conf(5).

E também:

   CPUShares=weight, StartupCPUShares=weight
       ...
      Those options imply "CPUAccounting=true".

Ao lê-lo, se nenhuma unidade tiver um valor definido para CPUShares e CPUAccounting não estiver explicitamente habilitado em lugar algum (e DefaultCPUAccounting não está definido em system.conf ), então o systemd pode não (não?) use a hierarquia cpu .

(Eu gostaria de receber qualquer correção sobre este ponto.)

    
por 01.09.2018 / 03:54