Základy
RHEL7 posouvá nastavení správy prostředků z úrovně procesu na úroveň aplikace tím, že sváže systém hierarchií cgroup se stromem jednotek systemd. Starý způsob konfigurace cgroup pomocí úprav několika /etc/cg*.conf soubory jsou stále dostupné, ale již se nedoporučuje.
Systemd nabízí tři typy jednotek (slice , rozsah , služba ), které se používají pro účely řízení zdrojů.
Obsluha cgroup se servisní jednotkou systemd
1. Upravte servisní jednotku pro vaši službu v /etc/systemd/system , pokud vaše služba nemá systémovou servisní jednotku. Pro správu vaší služby musíte vytvořit start/stop skript.
# 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. Ovládejte zdroj pomocí příkazového řádku (jako příklad převezměte kontrolu nad kvótou procesoru 60%)
# systemctl set-property mytask CPUQuota=60%
Ve výchozím nastavení podporuje pouze následující atributy prostřednictvím příkazu 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. Pokud chcete nastavit atribut, který není uveden výše, můžete použít následující metodu.
# echo 70 > /sys/fs/cgroup/memory/system.slice/httpd.service/memory.swappiness
Nebo ovládejte zdroj úpravou souborů servisních jednotek
# 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. Znovu načtěte konfiguraci správce systemd a spusťte službu
# systemctl daemon-reload # systemctl start mytask