Управление распределением ресурсов с помощью пользовательских контрольных групп в системе с запущенной системой systemd

У меня есть приложение, которое запускается от имени пользователя "foo". Я хотел бы установить ограничение на ЦП и память, которые это приложение может использовать во время выполнения. Я не могу понять, как этого можно добиться с помощью инструментов systemd, таких как «systemctl» и «set-property», поскольку это приложение не является службой, а представляет собой приложение, которое пользователь может выбрать и запустить.
Может Кто-нибудь, пожалуйста, дайте какое-нибудь руководство?


person Souvik    schedule 24.02.2016    source источник


Ответы (2)


Управление ресурсами находится на уровне контрольной группы. Служба, например, получит свою собственную контрольную группу. Systemd здесь просто промежуточный элемент между ядром. Вы сообщаете systemd, сколько ресурсов должен получить ваш сервис, и systemd передаст это ядру, поэкспериментировав с иерархией cgroup.

Несколько вещей, которые нужно проверить: 1) Вы можете поиграть с управлением ресурсами вашего приложения. Чтобы найти службу вашего приложения, я бы использовал systemd-cgls. 2) Убедитесь, что в вашей системе включены необходимые контрольные группы, такие как cpu cgroup, cpuacct cgroup, memory cgroup.

Если у вас есть какой-либо другой конкретный вопрос, просто стреляйте.

person Umut    schedule 29.02.2016

Если вы хотите запустить процесс из командной строки, можно использовать 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.

person Shuangistan    schedule 11.03.2016
comment
Любые идеи, почему указание среза (через --slice arg) не работает при использовании --scope? Кажется, работает при запуске процесса как службы. - person AlexBrand; 08.04.2016