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