GNU/Linux >> Belajar Linux >  >> Cent OS

Bagaimana mengontrol sumber daya (cgroup) dengan systemd untuk grup proses pengguna di CentOS/RHEL 7

Dasar-dasar

RHEL7 memindahkan pengaturan manajemen sumber daya dari tingkat proses ke tingkat aplikasi dengan mengikat sistem hierarki cgroup dengan pohon unit systemd. Cara lama mengkonfigurasi cgroup, dengan cara mengedit beberapa /etc/cg*.conf file masih tersedia tetapi tidak lagi direkomendasikan.

Systemd menyediakan tiga jenis unit(slice , cakupan , layanan ) yang digunakan untuk tujuan pengendalian sumber daya.

Menangani cgroup dengan unit layanan systemd

1. Sesuaikan unit layanan untuk layanan Anda di /etc/systemd/system , jika layanan Anda tidak memiliki unit layanan systemd. Anda perlu membuat skrip start/stop untuk mengelola layanan Anda.

# 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. Kontrol sumber daya melalui baris perintah (kendalikan kuota cpu 60% sebagai sampel)

# systemctl set-property mytask CPUQuota=60%

Secara default, ini hanya mendukung atribut berikut melalui properti set perintah.

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. Jika Anda ingin mengatur atribut yang tidak tercantum di atas, Anda dapat menggunakan cara berikut.

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

Atau kendalikan sumber daya melalui modifikasi file unit layanan

# 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. Muat ulang konfigurasi pengelola systemd dan mulai layanan Anda

# systemctl daemon-reload   
# systemctl start mytask


Cent OS
  1. Cara Memulai Ulang Layanan Jaringan di CentOS 8 atau RHEL 8

  2. CentOS / RHEL 7 :Panduan pemula untuk systemd

  3. CentOS / RHEL 7 :Cara mengaktifkan telnet untuk sekelompok pengguna

  1. Cara Setup Server VNC untuk Pengguna Baru di CentOS/RHEL 5

  2. Cara Mengatur Afinitas CPU untuk Proses SISTEM di CentOS/RHEL 7

  3. Cara Mengatur Variabel Lingkungan untuk Layanan systemd di CentOS/RHEL 7

  1. CentOS / RHEL 7 :Cara mengubah runlevel (target) dengan systemd

  2. Cara Mengatur Batas Sumber Daya untuk Proses dengan Systemd di CentOS/RHEL 7 dan 8

  3. Cara men-debug proses boot systemd di CentOS/RHEL 7 dan 8