cGroups – Particionamento de CPU's




    Raul da Silva Leite – [rleite@redhat.com]

    Arquiteto de Soluções
    Outubro 2012

1                           RED HAT “cGroups” | LatinoWare 2012
$whoami
[rleite@redhat.com]#

Raul da Silva Leite “sp4wnr0ot”


sp4wn.root@gmail.com


@sp4wnr0ot




2                         RED HAT “cGroups” | LatinoWare 2012
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
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
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
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
cGroups




7   RED HAT “cGroups” | LatinoWare 2012
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
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
Controlador de CPU
         “CPUSet”




10        RED HAT “cGroups” | LatinoWare 2012
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
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
cGroups: CPUSet Controle




13                 RED HAT “cGroups” | LatinoWare 2012
cGroups: CPUSet Controle




14                 RED HAT “cGroups” | LatinoWare 2012
cGroups: CPUSet Controle




15                 RED HAT “cGroups” | LatinoWare 2012
cGroups: CPUSet Controle




16                 RED HAT “cGroups” | LatinoWare 2012
Controlador de Memória
      “Memory Controller”




17          RED HAT “cGroups” | LatinoWare 2012
cGroups: Controlador de Memória




18                 RED HAT “cGroups” | LatinoWare 2012
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
Configuração




20     RED HAT “cGroups” | LatinoWare 2012
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
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
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
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
25   RED HAT “cGroups” | LatinoWare 2012
Referências


 ●   RHEL6 Resource Management Guide
 ●   kernel-doc*.rpm
 ●   http://fedoraproject.org/wiki/Features/ControlGroups
 ●   libcgroup*.src.rpm




26                          RED HAT “cGroups” | LatinoWare 2012
Obrigado / Dúvidas ?


          Raul Leite “sp4wnr0ot”
           [rleite@redhat.com]
         [sp4wn.root@gmail.com]
              [@sp4wnr0ot]

27           RED HAT “cGroups” | LatinoWare 2012

Cgroups - Latinoware 2012

  • 1.
    cGroups – Particionamentode CPU's Raul da Silva Leite – [rleite@redhat.com] Arquiteto de Soluções Outubro 2012 1 RED HAT “cGroups” | LatinoWare 2012
  • 2.
    $whoami [rleite@redhat.com]# Raul da SilvaLeite “sp4wnr0ot” sp4wn.root@gmail.com @sp4wnr0ot 2 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
  • 7.
    cGroups 7 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
  • 10.
    Controlador de CPU “CPUSet” 10 RED HAT “cGroups” | LatinoWare 2012
  • 11.
    cGroups: Gerenciamento dosRecursos 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
  • 13.
    cGroups: CPUSet Controle 13 RED HAT “cGroups” | LatinoWare 2012
  • 14.
    cGroups: CPUSet Controle 14 RED HAT “cGroups” | LatinoWare 2012
  • 15.
    cGroups: CPUSet Controle 15 RED HAT “cGroups” | LatinoWare 2012
  • 16.
    cGroups: CPUSet Controle 16 RED HAT “cGroups” | LatinoWare 2012
  • 17.
    Controlador de Memória “Memory Controller” 17 RED HAT “cGroups” | LatinoWare 2012
  • 18.
    cGroups: Controlador deMemória 18 RED HAT “cGroups” | LatinoWare 2012
  • 19.
    Apache exemplo deregra - “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
  • 20.
    Configuração 20 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çãodos 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
  • 25.
    25 RED HAT “cGroups” | LatinoWare 2012
  • 26.
    Referências ● RHEL6 Resource Management Guide ● kernel-doc*.rpm ● http://fedoraproject.org/wiki/Features/ControlGroups ● libcgroup*.src.rpm 26 RED HAT “cGroups” | LatinoWare 2012
  • 27.
    Obrigado / Dúvidas? Raul Leite “sp4wnr0ot” [rleite@redhat.com] [sp4wn.root@gmail.com] [@sp4wnr0ot] 27 RED HAT “cGroups” | LatinoWare 2012