Linux cgroup:将进程从一个cgroup移动到另一个cgroup


1

前言:我不是百分之百熟悉systemd和单元文件的概念,但我做了一些阅读。

上下文:我想将一个进程从一个cgroup树移动到另一个cgroup树,在发行版运行systemd和(非systemd让我们说新贵)。更具体地说,cgroup树看起来像这样。

基本上层次结构相对于my_root看起来像这样

                     my_root
                        |
                  ______ ___________
                  |                |
                  d11             d12
              (P lives here)       |
                              ___________
                              |          |
                             d21        d22

然后P在d21或者下移动

                     my_root
                        |
                  ______ ___________
                  |                |
                  d11             d12
                                   |
                              ___________
                              |          |
                             d21        d22
                     (P lives here now) 

为了完整起见,我们可以说 my_root = /sys/fs/cgroups/cpu,cpuacct/my_root

让我们谈谈非systemd斗:如果我在不运行systemd一个发行版上运行我可以回应的PID P1cgroups.procsd21,然后它会我的过程移动到该cgroup中。

现在是systemd用例,这就是我不确定的让我说我做的事与上面做的一样,有两件事可能发生。

  • 这个过程在那里移动并停留在那里。
  • 该进程最初在那里移动,但是在某个时间之后它返回或转到该特定控制器的根cgroup。

我想避免后者。基本上我在想,当我为我的应用程序指定单元文件时,我想获取启动应用程序的my_rootcgroup的所有权,例如应用程序获得cgroup的所有权,因此systemd不会干扰进程移动。

现在到多部分问题。

  • systemd真的会从我移动它的cgroup中移开进程吗?
  • 如果是,那么我需要做什么才能获得单元文件中cgroup的所有权。我正在寻找单元文件的一些具体示例。

资源:https//www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.