GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo controlar el recurso (cgroup) con systemd para el grupo de procesos de usuario en CentOS/RHEL 7

Lo básico

RHEL7 mueve la configuración de administración de recursos del nivel de proceso al nivel de aplicación vinculando el sistema de jerarquías cgroup con el árbol de unidades systemd. La forma antigua de configurar cgroup, mediante la edición de varios /etc/cg*.conf aún está disponible, pero ya no se recomienda.

Systemd proporciona tres tipos de unidades (segmento , alcance , servicio ) que se utilizan con el fin de controlar los recursos.

Manejo de cgroup con unidad de servicio de systemd

1. Personalice una unidad de servicio para su servicio en /etc/systemd/system , si su servicio no tiene una unidad de servicio systemd. Debe crear un script de inicio/detención para administrar su servicio.

# cat /etc/systemd/system/mytask.service
[Unit]
Description= **
After=remote-fs.target nss-lookup.target

[Service]
ExecStart=/root/start_process.sh
ExecStop=/root/stop_process.sh

[Install]
WantedBy=multi-user.target

2. Controle el recurso a través de la línea de comando (tome el control de la cuota de CPU 60% como muestra)

# systemctl set-property mytask CPUQuota=60%

De forma predeterminada, solo admite los siguientes atributos mediante el comando set-property.

AccuracySec=            CPUQuota=               KillMode=               LimitLOCKS=             LimitRTPRIO=            SendSIGHUP=
BlockIOAccounting=      CPUShares=              KillSignal=             LimitMEMLOCK=           LimitRTTIME=            SendSIGKILL=
BlockIODeviceWeight=    DefaultDependencies=    LimitAS=                LimitMSGQUEUE=          LimitSIGPENDING=        User=
BlockIOReadBandwidth=   DeviceAllow=            LimitCORE=              LimitNICE=              LimitSTACK=             WakeSystem=
BlockIOWeight=          DevicePolicy=           LimitCPU=               LimitNOFILE=            MemoryAccounting=       
BlockIOWriteBandwidth=  Environment=            LimitDATA=              LimitNPROC=             MemoryLimit=            
CPUAccounting=          Group=                  LimitFSIZE=             LimitRSS=               Nice=      

3. Si desea establecer el atributo que no figura en la lista anterior, puede utilizar el siguiente método.

# echo 70 > /sys/fs/cgroup/memory/system.slice/httpd.service/memory.swappiness

O controle el recurso modificando los archivos de la unidad de servicio

# cat /etc/systemd/system/mytask.service
[Unit]
Description= **
After=remote-fs.target nss-lookup.target

[Service]
CPUQuota=90%
MemoryLimit=1500000
ExecStartPre=/bin/bash -c '/bin/echo 70 > /sys/fs/cgroup/memory/system.slice/httpd.service/memory.swappiness'
#ExecStartPost
ExecStart=/root/start_process.sh
ExecStop=/root/stop_process.sh

[Install]
WantedBy=multi-user.target

4. Vuelva a cargar la configuración del administrador de systemd e inicie su servicio

# systemctl daemon-reload   
# systemctl start mytask


Cent OS
  1. CentOS / RHEL 7:Guía para principiantes de systemd

  2. CentOS/RHEL 7:Cómo habilitar telnet para un grupo de usuarios

  3. Cómo configurar children-max para el servicio udev en CentOS/RHEL 7

  4. Cómo volver a generar initramfs y vmlinuz para Rescue Kernel con el kernel actual en CentOS/RHEL 7

  5. Cómo limitar algunos recursos de memoria de usuario en CentOS/RHEL usando cgroup

Cómo instalar y configurar un servicio de ejemplo con xinetd en RHEL 8/CentOS 8 Linux

Cómo agregar un usuario a un grupo en RHEL 8 / CentOS 8

Cómo iniciar el servicio en el arranque con RHEL 8 / CentOS 8 Linux

Cómo habilitar la cuota de disco de usuario y grupo en CentOS 7 / RHEL 7

CentOS/RHEL 7:Cómo verificar el estado de un servicio usando systemd

Cómo depurar el proceso de arranque de systemd en CentOS/RHEL 7 y 8