Diferença entre o nível legal e a propriedade systemctl CPUShares

3

Pelo que entendi (por favor me corrija se eu estiver errado),

systemctl set-property ... CPUShares=some_value

limita o tempo de CPU para uma unidade cgroup inteira. Se, em vez disso, quisermos limitar o tempo de CPU para um processo dentro dessa unidade, poderemos executar o processo com

systemd-run ... nice=some_value

Eu estou querendo saber se existe alguma diferença intrínseca entre os conceitos do valor agradável de um processo e o valor CPUShares de um grupo de processos? Podemos limitar CPUShares de um processo ou definir o valor legal de uma unidade cgroup? Quando queremos fazer um ou outro?

    
por embedded_crysis 14.02.2017 / 16:28

1 resposta

7

A partir da leitura de man systemd-run , ele criará service e, portanto, cgroup on the fly. A partir da leitura de systemd.exec , a diretiva Nice= será aplicada a todos os processos executados, portanto, a maneira como systmd lida com os conceitos de Nice= e CPUShares= é muito semelhante.

Meu entendimento do relacionamento é que isso tem a ver com a história. nice existe há um par de décadas e sempre se aplica a processos específicos.

Por outro lado, o conceito de cgroups e a idéia de aplicar CPUShares= a um grupo de processos é um conceito muito mais recente, mas atinge o mesmo objetivo.

Espero systemd suporta Nice= para compatibilidade histórica.

Eu usaria qualquer um com o qual você estivesse confortável, mas não ambos, para evitar confusão. Se você não tem preferência, eu usaria o mais novo conceito CPUShares= .

    
por 14.02.2017 / 17:08