Gerenciando o NProc no Systemd

2

Qual é a diferença entre as "Tarefas" do SystemD e os valores nproc?

Estávamos vendo um problema em que um serviço estava falhando porque o número de tarefas atuais excedeu o valor padrão Systemd para TasksMax (512). No entanto, já definimos LimitNPROC=infinity , por isso ficamos surpresos com o fato de o serviço ter sido afogado em 512.

Resolvemos o problema definindo

TasksMax=infinity

Qual é a diferença entre TasksMax e LimitNPROC e quando você deve usar um sobre o outro?

    
por jacksonecac 27.06.2018 / 19:40

1 resposta

1

LimitNProc= é um rlimit (também chamado de ulimit). "Veja setrlimit (2) para detalhes sobre o limite de recursos  conceito ... Observe que a maioria dos limites de recursos de processo configurados com esses            opções são por processo, e os processos podem bifurcar-se a fim de adquirir            um novo conjunto de recursos que são contabilizados independentemente do            processo original e, portanto, pode escapar dos limites definidos. "Isso está documentado em man systemd.exec . RLIMIT_NPROC é uma das exceções a essa citação; limita o número de processos" para o ID do usuário real "(UID).

TasksMax= está documentado no mais específico man systemd.resource-control , como uma das opções que "depende do        Conceito de kernel dos Grupos de Controle Linux (cgroups) para organizar os processos ". Todos esses limites se aplicam ao cgroup criado para o serviço systemd. Os cgroups não podem ser ignorados simplesmente por um novo processo.

TasksMax= faz muito mais sentido para mim. Não sei por que você usaria LimitNProc= .

    
por 27.06.2018 / 21:42

Tags