GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come controllare la risorsa (cgroup) con systemd per il gruppo di processi utente in CentOS/RHEL 7

Nozioni di base

RHEL7 sposta le impostazioni di gestione delle risorse dal livello del processo al livello dell'applicazione collegando il sistema delle gerarchie cgroup con l'albero delle unità systemd. Il vecchio modo di configurare cgroup, modificando diversi /etc/cg*.conf i file sono ancora disponibili ma non più consigliati.

Systemd fornisce tre tipi di unità (slice , ambito , servizio ) utilizzati ai fini del controllo delle risorse.

Gestione di cgroup con l'unità di servizio di systemd

1. Personalizza un'unità di servizio per il tuo servizio in /etc/systemd/system , se il tuo servizio non dispone di un'unità di servizio systemd. Devi creare uno script di avvio/arresto per gestire il tuo servizio.

# 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. Controlla la risorsa tramite riga di comando (prendere il controllo della quota della CPU 60% come esempio)

# systemctl set-property mytask CPUQuota=60%

Per impostazione predefinita, supporta solo i seguenti attributi tramite il 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. Se si desidera impostare l'attributo che non è elencato come sopra, è possibile utilizzare il metodo seguente.

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

Oppure controlla la risorsa modificando i file dell'unità di servizio

# 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. Ricarica la configurazione di systemd manager e avvia il tuo servizio

# systemctl daemon-reload   
# systemctl start mytask


Cent OS
  1. Come configurare il server VNC per i nuovi utenti in CentOS/RHEL 5

  2. Come impostare l'affinità della CPU per il processo SYSTEMD in CentOS/RHEL 7

  3. Come impostare le variabili di ambiente per un servizio systemd in CentOS/RHEL 7

  4. Come impostare i limiti delle risorse per un processo con Systemd in CentOS/RHEL 7 e 8

  5. Come eseguire il debug del processo di avvio di sistema in CentOS/RHEL 7 e 8

Come installare e configurare un servizio di esempio con xinetd su RHEL 8 / CentOS 8 Linux

Come aggiungere un utente a un gruppo su RHEL 8 / CentOS 8

Come avviare il servizio all'avvio con RHEL 8 / CentOS 8 Linux

Come abilitare la quota disco per utenti e gruppi su CentOS 7 / RHEL 7

CentOS / RHEL 7:come configurare getty seriale con systemd

CentOS / RHEL 7:come controllare lo stato di un servizio utilizzando systemd