É um recurso do sistema de arquivos cgroup
, não um recurso do comando mkdir
. O comando mkdir
apenas invoca a chamada do sistema mkdir
. A chamada do sistema mkdir
invoca a camada VFS no kernel, que executa algumas análises no comando e, em particular, determina em qual sistema de arquivos o diretório deve ser criado analisando a hierarquia dos pontos de montagem na árvore de diretórios. Em seguida, a camada VFS chama o código no driver para esse sistema de arquivos, que é o driver do sistema de arquivos cgroup
.
O que um driver de sistema de arquivos faz para cada operação do sistema de arquivos (abrir, ler, gravar, criar diretório, remover diretório, etc.) depende do driver do sistema de arquivos. Um sistema de arquivos para armazenamento em disco modificará o conteúdo do disco para registrar a existência de um diretório conforme orientado. Um sistema de arquivos de rede enviará um comando pela rede. O sistema de arquivos proc reporta informações sobre processos e sobre o kernel , e o sistema de arquivos cgroup faz algo similar.
O comportamento do sistema de arquivos cgroup é descrito na documentação do kernel .
New cgroups are created using the mkdir system call or shell command. The properties of a cgroup, such as its flags, are modified by writing to the appropriate file in that cgroups directory, as listed above.
Quando o driver do sistema de arquivos cgroup recebe um comando mkdir
nesse nível da hierarquia, ele interpreta que significa “criar um novo cgroup” com o nome dado. Quando ele recebe um comando readdir
(a chamada do sistema que enumera entradas de diretório) em /cgroup/cpu0
, ele lista os cgroups nessa CPU. Quando recebe um comando readdir
em /cgroup/cpu0/group0
, ele reporta um conjunto fixo de arquivos que refletem os parâmetros do cgroup como armazenados na memória. Quando recebe um comando read
ou write
nesses arquivos, ele relata ou modifica o parâmetro correspondente.
Os projetistas do cgroup optaram por controlá-lo totalmente através do sistema de arquivos, em vez de adicionar novas chamadas ao sistema. Isso facilita o uso sem ter que desenvolver muito código de biblioteca e muitos utilitários.