在系统运行systemd中使用自定义cgroup管理资源分配

时间:2016-02-24 21:17:43

标签: systemd cgroups

我有一个以“foo”用户身份运行的应用程序。我想设置此应用程序在运行时可以使用的CPU和内存限制。我无法意识到如何使用系统工具 - “systemctl”和“set-property”来实现这一点,因为这个应用程序不是服务,而是用户可以选择和启动的应用程序。
有人可以提供任何指导吗?

2 个答案:

答案 0 :(得分:0)

资源管理在cgroup级别。例如,服务将获得自己的cgroup。 Systemd只是内核之间的中间人。您告诉systemd您的服务应该获得多少资源,systemd会通过使用cgroup层次结构将其传播到内核。

要检查的内容很少: 1)您可以使用应用程序的服务资源管理。要查找应用程序的服务,我将使用systemd-cgls。 2)确保在系统中启用了必要的控制组,如cpu cgroup,cpuacct cgroup,memory cgroup。

如果您有任何其他具体问题,请拍摄。

答案 1 :(得分:0)

如果您希望从命令行启动进程,可能会使用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

范围单元的资源管理可以通过systemd实现systemctl set-property