Cpu

cgroups:是否可以通過程序名稱而不是 pid 來限制 cpu 的使用

  • September 18, 2018

眾所周知,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來限制它。是否可以根據名稱來限制程序?是否可以在執行之前限制程序?

控制組是基於 pid 的,並且沒有直接通過名稱限制程序的方法。(由於控制組是分層的,這是有道理的:預設情況下,一個組還包含其成員程序的未來子程序,並且讓它們根據其名稱重新連接到另一個組會令人驚訝。)

使用控制組的典型方法是將父程序附加到它們,然後依賴子程序繼承其父組的事實。但是,有一個工具可以讓您在給定的組中啟動一個程序cgexec

cgexec -g memory:foo yourcommand

在 Debian 上,您會在cgroup-tools.

引用自:https://unix.stackexchange.com/questions/469701