Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

1.2. Relacionamento Entre Subsistemas, Hierarquias, Grupos de Controle e Tarefas

Se lembre que os processos de sistemas são chamados tarefas no terminologia do cgroup.
Aqui estão algumas regras simples que governam o relacionamento entre subsistemas, hierarquias de cgrupos e tarefas junto com as explicações dessas regras.
Regra 1

Qualquer subsistema único (tal como cpu) pode ser conectado no máximo a uma hierarquia.

Como uma consequencia, o subsistema cpu nunca pode ser anexado à duas hierarquias diferentes.
Regra 2

Uma hierarquia única pode ter um ou mais subsistemas anexados a ele.

Como uma consequencia, os subsistemas cpu e memory (ou qualquer número de subsistemas) podem ser anexados a uma única hierarquia, desde que cada uma não está anexada a qualquer outra hierarquia.
Regra 3

Cada vez que uma nova hierarquia é criada nos sistemas, todas as tarefas no sistema são inicialmente membros do cgroup padrão desta hierarquia, que é conhecido como root cgroup. Para qualquer hierarquia única que você criar, cada tarefa do sistema pode ser um membro de exatamente um cgroup nessa hierarquia. Uma tarefa única pode estar em múltiplos cgroups, desde que cada um desses cgroups está em uma hierarquia diferente. Tão logo que uma tarefa é feita um membro de um segundo cgroup na mesma hierarquia é removido do primeiro cgroup dessa hierarquia. Nunca uma tarefa estará em dois cgroups diferentes na mesma hierarquia.

Como uma consequencia, se os subsistemas cpu e memory estiverem anexados à uma hierarquia chamada cpu_and_mem, e o subsistema net_cls estiver anexado a uma hierarquia chamada net, então um processo em execução httpd poderia ser um membro de qualquer um cgroup no cpu_and_mem, e qualquer um cgroup no net.
O cgroup no cpu_and_mem de que o processo httpd é um membro, poderá restringir seu tempo de CPU para a metade desse tempo alocado para outros processos e limitar seu uso de memória para um máximo de 1024 MB. Além disso, o cgroup em net de que é um membro poderá limitar sua taxa de transmissão para 30 megabytes por segundo.
Quando a primeira hierarquia é criada, toda tarefa no sistema é um membro de ao menos um cgroup: o cgroup root. Quando usar os cgroups, portanto, cada sistema de tarefa está sempre em ao menos um cgroup.
Regra 4

Qualquer processo (tarefa) no sistema que se divide cria um processo filho (tarefa). A tarefa filho automaticamente se torna membro de todos os cgroups de que seu pai é membro. A tarefa filho pode então ser movida para cgroups diferentes conforme necessitado, mas inicialmente sempre herda os cgroups (o "ambiente" dos cgroups na terminologia do processo) das tarefas de seu pai.

Como uma consequencia, considere a tarefa httpd que é um membro do cgroup chamado half_cpu_1gb_max na hierarquia cpu_and_mem e um membro do cgroup trans_rate_30 na hierarquia net. Quando o processo httpd se divide, seu processo filho automaticamente se torna um membro do cgroup half_cpu_1gb_max e do cgroup trans_rate_30. Ele herda os mesmos cgroups exatos que as tarefas de seu pai pertencem.
A partir desse ponto, as tarefas pai e filho são completamente independentes uma da outra: mudando os cgroups a que uma tarefa pertence não afeta a outra. Nem mudar o cgroups de uma tarefa pai afetará de alguma maneira de seus netos. Para resumir: qualquer tarefa filho sempre herda inicialmente as afiliações dos exatos mesmos cgroups de sua tarefa pai, mais essas afiliações podem ser mudadas ou removidas depois.