cgroups:是否可以通过进程名称而不是pid来限制cpu使用

cgroups:是否可以通过进程名称而不是pid来限制cpu使用

我们知道,cgroups可以限制进程的cpu使用率。这是一个例子:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
30142 root      20   0  104m 2520 1024 R 99.7  0.1  14:38.97 sh

我有一个进程,其pid是30142。我可以如下限制它:

mkdir -p /sys/fs/cgroup/memory/foo
echo 1048576 >  /cgroup/memory/foo/memory.limit_in_bytes
echo 30142 > /cgroup/memory/foo/tasks

正如我们所看到的,如果我想限制一个进程,我必须首先执行它,然后我可以根据它的 pid 来限制它。是否可以根据进程名称来限制进程?是否可以在执行进程之前对其进行限制?

答案1

控制组是基于 pid 的,并且没有直接的方法通过名称限制进程。 (由于控制组是分层的,所以这是有道理的:默认情况下,组还包含其成员进程的未来子级,并且让它们根据名称重新附加到另一个组将是令人惊讶的。)

使用控制组的典型方法是将父进程附加到它们,然后依赖于子进程继承其父进程组的事实。但是,有一个工具可以让您在给定组中启动进程cgexec

cgexec -g memory:foo yourcommand

在 Debian 上你会发现这个cgroup-tools

相关内容