Sobre ulimit / setrlimit e cgroup

4

Eu sei que esses dois mecanismos (eu chamo de A e B) limitam o recurso para um processo.

Eu quero saber a cooperação desses dois.

Se A limitar um recurso para um processo, então o que acontece quando B também limita o recurso?

    
por lovespring 12.08.2016 / 09:22

2 respostas

1

Todos os limites são aplicados independentemente. Quando um processo faz uma solicitação que exige ultrapassar algum limite, a solicitação é negada. Isso vale se o limite é para um cgroup, por processo ou por usuário.

Como o cgroup define limites por grupos de processos e setrlimit define limites por usuário ou por processo, os mecanismos geralmente não são redundantes. É possível que uma determinada solicitação exceda os limites cgroup e setrlimit ou apenas um deles.

Lembre-se de que todos os limites são valores máximos permitidos, não mínimos garantidos. Por exemplo, se houver um limite para 1 GB de memória por processo, um processo com 200 MB de memória ainda poderá receber sua solicitação de alocação de 100 MB negada se não houver mais memória disponível no sistema, independentemente de quaisquer limites aplicáveis. Se um setrlimit e um limite de cgroup forem aplicados, então são pelo menos três valores máximos que podem ser excedidos: o máximo de setrlimit, o máximo de cgroup e o máximo de recursos disponíveis atualmente.

    
por 15.08.2016 / 23:55
6

ulimit / setrlimit / getrlimit

O comando shell ulimit (programa executável) é um wrapper em torno da chamada de sistema setrlimit (função fornecida pelo kernel) e a estrutura de dados subjacente que contém as informações de limite é chamado rlimit .

O

ulimit comando shell controla os limites suaves e rígidos sobre os recursos disponíveis para o shell e para os processos iniciados por ele.

getrlimit() e setrlimit() chamadas do sistema obtêm e definem limites de recursos, respectivamente, onde os limites suaves e rígidos associados são definidos pela estrutura rlimit .

Para mais informações, use: man 1 ulimit e man 2 setrlimit

Cgroups

Cgroups (Grupos de Controle) permitem alocar recursos - como tempo de CPU, memória do sistema, largura de banda de rede ou combinações desses recursos - entre grupos de tarefas (processos) definidos pelo usuário em execução em um sistema .

D.M. ulimit não tem nada a ver com configurações por processo ou qualquer coisa relacionada a velocidades de estrangulamento. Isto é o que a extensão do kernel cgroups é capaz e é usada para. Para mencionar um dos outros recursos que ele oferece, podemos dizer que ele pode até mesmo permitir que hierarquias de configurações sejam definidas.

NB Eu recomendo que você leia este artigo para uma visão rápida sobre ulimit / setrlimit . E para cgroups (Grupos de controle), recomendo que você leia Documentação oficial do RedHat .

    
por 12.08.2016 / 12:42