У меня есть приложение, которое запускается от имени пользователя "foo". Я хотел бы установить ограничение на ЦП и память, которые это приложение может использовать во время выполнения. Я не могу понять, как этого можно добиться с помощью инструментов systemd, таких как «systemctl» и «set-property», поскольку это приложение не является службой, а представляет собой приложение, которое пользователь может выбрать и запустить.
Может Кто-нибудь, пожалуйста, дайте какое-нибудь руководство?
Управление распределением ресурсов с помощью пользовательских контрольных групп в системе с запущенной системой systemd
Ответы (2)
Управление ресурсами находится на уровне контрольной группы. Служба, например, получит свою собственную контрольную группу. Systemd здесь просто промежуточный элемент между ядром. Вы сообщаете systemd, сколько ресурсов должен получить ваш сервис, и systemd передаст это ядру, поэкспериментировав с иерархией cgroup.
Несколько вещей, которые нужно проверить: 1) Вы можете поиграть с управлением ресурсами вашего приложения. Чтобы найти службу вашего приложения, я бы использовал systemd-cgls. 2) Убедитесь, что в вашей системе включены необходимые контрольные группы, такие как cpu cgroup, cpuacct cgroup, memory cgroup.
Если у вас есть какой-либо другой конкретный вопрос, просто стреляйте.
Если вы хотите запустить процесс из командной строки, можно использовать systemd-run --scope
. Это будет запущено как единица области видимости:
:/home/foo# systemd-run --scope dummy_bin &
[1] 201
:/home/foo# Running as unit run-201.scope.
Тогда systemctl
может использоваться этим блоком области действия, например:
:/home/foo# systemctl status run-201.scope
Loaded: loaded (/run/systemd/system/run-201.scope; static)
Drop-In: /run/systemd/system/run-201.scope.d
Active: active (running) since Thu 1970-01-01 01:01:01 UTC; 10s ago
CGroup: /system.slice/run-201.scope
`-201 /usr/bin/dummy_bin
Управление ресурсами единицы области видимости может быть реализовано systemctl set-property
через systemd.
--slice
arg) не работает при использовании --scope
? Кажется, работает при запуске процесса как службы.
- person AlexBrand; 08.04.2016