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