O documento descreve o recurso cGroups no Linux, que permite definir grupos de processos e atribuir quotas de recursos como CPU e memória a cada grupo. cGroups possibilita o gerenciamento de recursos em grandes sistemas com múltiplos núcleos e grande quantidade de memória. Ele funciona mapeando processos em uma estrutura hierárquica e controlando o acesso aos recursos por meio de controladores como CPUSet e Memory Controller.
Visão Técnica - RHOS (Red Hat Enterprise Linux OpenStack)
Cgroups - Latinoware 2012
1. cGroups – Particionamento de CPU's
Raul da Silva Leite – [rleite@redhat.com]
Arquiteto de Soluções
Outubro 2012
1 RED HAT “cGroups” | LatinoWare 2012
3. Definições
● O nome "CGroups" vem de "control groups", ou em “pt-br” grupos de
controle.
● Este recurso permite definir grupos de processos, tarefas e atribuir a
cada grupo uma fatia dos recursos do sistema.
● Inicialmente desenvolvido por Rohit Seth em 2006 com o nome
"Process Containers".
● Recurso presente desde a versão do kernel 2.6.24.
3 RED HAT “cGroups” | LatinoWare 2012
4. Definições
● Um grupo de controle é uma coleção de processos que estão ligados
pelo mesmo critério. Estes grupos podem ser hierárquicos, onde
cada grupo herda limites de seus parentes.
● O kernel fornece acesso a múltiplos controladores (subsistemas)
através da interface do “cGroups”.
4 RED HAT “cGroups” | LatinoWare 2012
5. Por que cGroups ?
● Como gerenciar a evolução dos “hardwares(cpu, memória, disco)”
atuais que crescem em grande escala ?
● CPU's com múltiplos núcleos -> “core++”
● Mais e mais memória
5 RED HAT “cGroups” | LatinoWare 2012
6. Por que cGroups ?
● Gerenciamento de SLA
● Conhecendo os SLAs de aplicação, será possível reduzir a
contenção de recursos, aumentando a previsibilidade no
desempenho.
6 RED HAT “cGroups” | LatinoWare 2012
8. cGroups: Estrutura
● Tipos de controladores
● CPU - Controle
● Memória - Controle
● Disco I/O – Controle
● Rede - Controle
● Configuração
● Utilitários e bibliotecas
8 RED HAT “cGroups” | LatinoWare 2012
9. cGroups: Virtual FileSystem
● Acesso a “userspace”
● /cgroup é um diretório, que possui o mapeamento das listas de
tarefas subdivididas por "cGroup"
● Modifição em "Kernel Syscalls"
exit()
fork()
++
9 RED HAT “cGroups” | LatinoWare 2012
11. cGroups: Gerenciamento dos Recursos
50% memória
Finanças
50% cpu
25% memória
Rede Vendas
25% cpu
25% memória
RH
25% cpu
11 RED HAT “cGroups” | LatinoWare 2012
12. cGroups: Funcionamento
● Os cGroups registra cada processo com um identificador que permite
ou nega a ele acesso aos recursos definidos.
● Desta forma todo processo antes de acessar cada recurso, será
avaliado pelo kernel quanto ao que pode acessar.
12 RED HAT “cGroups” | LatinoWare 2012
19. Apache exemplo de regra - “Memory Controller”
● Editar o arquivo "/etc/cgconfig.conf"
group http {
memory {
memory.limit_in_bytes = 1024M;
}
}
● E por fim a configuração do Apache "/etc/sysconfig/httpd.conf"
CGROUP_DAEMON="memory:/http"
19 RED HAT “cGroups” | LatinoWare 2012
21. cGroups: Configuração
● Configuração sem persistência
● Utiliza interação direta do kernel com o filesystem virtual devido
a estrutura do cGroups
● CLI's: cgexec, lscgroup, cgcreate e etc
● /cgroups/
● Configuração persistente
● Preserva a configuração do sistema entre as reinicializações :
● cgconfig.conf & cgrules.conf
21 RED HAT “cGroups” | LatinoWare 2012
22. Utilitários e Bibliotecas
● libcGroup
● Contém o conjunto de ferramentas responsável pela configuração e
administração das funcionalidades do cGroups.
22 RED HAT “cGroups” | LatinoWare 2012
23. Utilitários e Bibliotecas
● libcGroup
● Contém o conjunto de ferramentas responsável pela configuração e
administração das funcionalidades do cGroups.
23 RED HAT “cGroups” | LatinoWare 2012
24. Preparação da DEMO
Instalação dos pacotes :
# yum -y install libcgroup
# chkconfig cgconfig on
# service cgconfig restart
Configuração inicial :
# cgcreate -a uid:gid -t uid:gid -g cpu,cpuset:/group1
# cgcreate -a uid:gid -t uid:gid -g cpu,cpuset:/group2
24 RED HAT “cGroups” | LatinoWare 2012