Red Hat Training

A Red Hat training course is available for RHEL 8

9.4. Papel do sistemad em grupos de controle versão 1

O Red Hat Enterprise Linux 8 move as configurações de gerenciamento de recursos do nível de processo para o nível de aplicação, ligando o sistema de hierarquias cgroup com a árvore de unidades systemd. Portanto, você pode gerenciar os recursos do sistema com o comando systemctl, ou modificando os arquivos da unidade systemd.

Por padrão, o gerente de sistemas e serviços systemd faz uso do slice, das unidades scope e service para organizar e estruturar os processos nos grupos de controle. O comando systemctl permite modificar ainda mais esta estrutura através da criação do slices personalizado. Além disso, systemd monta automaticamente hierarquias para importantes controladores de recursos do kernel no diretório /sys/fs/cgroup/.

Três tipos de unidade systemd são usados para o controle de recursos:

  • Service - Um processo ou um grupo de processos, que systemd começou de acordo com um arquivo de configuração de unidade. Os serviços encapsulam os processos especificados para que eles possam ser iniciados e parados como um conjunto. Os serviços são nomeados da seguinte forma:

    <name>.service
  • Scope - Um grupo de processos criados externamente. Os escopos encapsulam processos que são iniciados e interrompidos pelos processos arbitrários através da função fork() e depois registrados por systemd em tempo de execução. Por exemplo, sessões de usuários, contêineres e máquinas virtuais são tratados como escopos. Os escopos são nomeados da seguinte forma:

    <name>.scope
  • Slice - Um grupo de unidades organizadas hierarquicamente. As fatias organizam uma hierarquia na qual são colocados os escopos e serviços. Os processos reais estão contidos em escopos ou em serviços. Cada nome de uma unidade de fatias corresponde ao caminho para um local na hierarquia. O traço ("-") funciona como um separador dos componentes do caminho para uma fatia da fatia da raiz de -.slice. No exemplo a seguir:

    <parent-name>.slice

    parent-name.slice é uma subplaca de parent.slice, que é uma subplaca da fatia de raiz de -.slice. parent-name.slice pode ter sua própria subplaca chamada parent-name-name2.slice, e assim por diante.

As unidades service, scope, e slice mapeiam diretamente os objetos da hierarquia do grupo de controle. Quando estas unidades são ativadas, elas mapeiam diretamente para os caminhos do grupo de controle construídos a partir dos nomes das unidades.

O seguinte é um exemplo abreviado de uma hierarquia de grupo de controle:

Control group /:
-.slice
├─user.slice
│ ├─user-42.slice
│ │ ├─session-c1.scope
│ │ │ ├─ 967 gdm-session-worker [pam/gdm-launch-environment]
│ │ │ ├─1035 /usr/libexec/gdm-x-session gnome-session --autostart /usr/share/gdm/greeter/autostart
│ │ │ ├─1054 /usr/libexec/Xorg vt1 -displayfd 3 -auth /run/user/42/gdm/Xauthority -background none -noreset -keeptty -verbose 3
│ │ │ ├─1212 /usr/libexec/gnome-session-binary --autostart /usr/share/gdm/greeter/autostart
│ │ │ ├─1369 /usr/bin/gnome-shell
│ │ │ ├─1732 ibus-daemon --xim --panel disable
│ │ │ ├─1752 /usr/libexec/ibus-dconf
│ │ │ ├─1762 /usr/libexec/ibus-x11 --kill-daemon
│ │ │ ├─1912 /usr/libexec/gsd-xsettings
│ │ │ ├─1917 /usr/libexec/gsd-a11y-settings
│ │ │ ├─1920 /usr/libexec/gsd-clipboard
…​
├─init.scope
│ └─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 18
└─system.slice
  ├─rngd.service
  │ └─800 /sbin/rngd -f
  ├─systemd-udevd.service
  │ └─659 /usr/lib/systemd/systemd-udevd
  ├─chronyd.service
  │ └─823 /usr/sbin/chronyd
  ├─auditd.service
  │ ├─761 /sbin/auditd
  │ └─763 /usr/sbin/sedispatch
  ├─accounts-daemon.service
  │ └─876 /usr/libexec/accounts-daemon
  ├─example.service
  │ ├─ 929 /bin/bash /home/jdoe/example.sh
  │ └─4902 sleep 1
  …​

O exemplo acima mostra que os serviços e escopos contêm processos e são colocados em fatias que não contêm processos próprios.

Recursos adicionais

  • Para mais informações sobre systemd, arquivos de unidades e uma lista completa de systemd tipos de unidades, veja as seções relevantes em Configuring basic system settings.
  • Para mais informações sobre controladores de recursos, consulte a seção O que são controladores de recursos do kernel e as páginas do manual systemd.resource-control(5), cgroups(7).
  • Para mais informações sobre fork(), consulte as páginas do manual fork(2).