GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So steuern Sie die Ressource (cgroup) mit systemd für die Benutzerprozessgruppe in CentOS/RHEL 7

Die Grundlagen

RHEL7 verschiebt die Ressourcenverwaltungseinstellungen von der Prozessebene auf die Anwendungsebene, indem das System der cgroup-Hierarchien mit dem systemd-Einheitenbaum verknüpft wird. Die alte Art, cgroup zu konfigurieren, indem mehrere /etc/cg*.conf bearbeitet werden Dateien sind noch verfügbar, werden aber nicht mehr empfohlen.

Systemd bietet drei Unit-Typen (slice , Geltungsbereich , Dienst ), die zum Zweck der Ressourcenkontrolle verwendet werden.

Handhabung der cgroup mit der Diensteinheit von systemd

1. Passen Sie eine Service-Unit für Ihren Service in /etc/systemd/system an , wenn Ihr Dienst keine systemd-Diensteinheit hat. Sie müssen ein Start-/Stopp-Skript erstellen, um Ihren Dienst zu verwalten.

# 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. Steuern Sie die Ressource über die Befehlszeile (übernehmen Sie die Kontrolle über die CPU-Quote 60% als Beispiel)

# systemctl set-property mytask CPUQuota=60%

Standardmäßig unterstützt es nur die folgenden Attribute über den Befehl 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. Wenn Sie das oben nicht aufgeführte Attribut festlegen möchten, können Sie die folgende Methode verwenden.

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

Oder steuern Sie die Ressource, indem Sie die Service-Unit-Dateien ändern

# 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. Laden Sie die Systemd Manager-Konfiguration neu und starten Sie Ihren Dienst

# systemctl daemon-reload   
# systemctl start mytask


Cent OS
  1. CentOS / RHEL 7:Anfängerleitfaden für systemd

  2. CentOS / RHEL 7 :So aktivieren Sie Telnet für eine Gruppe von Benutzern

  3. So legen Sie children-max für den udev-Dienst in CentOS/RHEL 7 fest

  4. So generieren Sie initramfs und vmlinuz für den Rescue-Kernel mit dem aktuellen Kernel in CentOS/RHEL 7 neu

  5. So begrenzen Sie einige Benutzerspeicherressourcen unter CentOS/RHEL mithilfe von cgroup

Anleitung zum Installieren und Einrichten eines Beispieldienstes mit xinetd unter RHEL 8 / CentOS 8 Linux

So fügen Sie einen Benutzer zu einer Gruppe auf RHEL 8 / CentOS 8 hinzu

So starten Sie den Dienst beim Booten mit RHEL 8 / CentOS 8 Linux

So aktivieren Sie das Benutzer- und Gruppenfestplattenkontingent unter CentOS 7 / RHEL 7

CentOS / RHEL 7 :So überprüfen Sie den Status eines Dienstes mit systemd

So legen Sie Ressourcenlimits für einen Prozess mit Systemd in CentOS/RHEL 7 und 8 fest