【问题标题】:Managing resource allocation using custom cgroups in system running systemd在运行 systemd 的系统中使用自定义 cgroup 管理资源分配
【发布时间】:2016-02-24 21:17:42
【问题描述】:

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

【问题讨论】:

    标签: systemd cgroups


    【解决方案1】:

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

    需要检查的几件事: 1)您可以使用应用程序的服务资源管理。要找到您的应用程序的服务,我会使用 systemd-cgls。 2) 确保您的系统中启用了必要的控制组,例如 cpu cgroup、cpuacct cgroup、memory cgroup。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 知道为什么在使用--scope 时指定切片(通过--slice arg)不起作用?将进程作为服务启动时似乎可以工作。
      猜你喜欢
      • 2011-01-01
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 2020-01-17
      • 2015-06-20
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      相关资源
      最近更新 更多