我有一个以用户“foo”身份运行的应用程序。我想设置此应用程序在运行时可以使用的 CPU 和内存的限制。我无法意识到如何使用诸如“systemctl”和“set-property”之类的systemd工具来实现这一点,因为该应用程序不是服务,而是用户可以选择和启动的应用程序。
有人可以提供任何指导吗?
问问题
562 次
2 回答
0
资源管理在 cgroup 级别。例如,服务将获得自己的 cgroup。Systemd 只是内核之间的中间人。你告诉 systemd 你的服务应该获得多少资源,systemd 会通过使用 cgroup 层次结构将其传播到内核。
几件事要检查:1)您可以使用应用程序的服务资源管理。要找到您的应用程序的服务,我会使用 systemd-cgls。2) 确保您的系统中启用了必要的控制组,例如 cpu cgroup、cpuacct cgroup、memory cgroup。
如果您有任何其他具体问题,请直接拍摄。
于 2016-02-29T08:03:13.867 回答
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
作用域单元的资源管理可以systemctl set-property
通过systemd来实现。
于 2016-03-11T15:28:24.170 回答