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來限制它。是否可以根據名稱來限制程序?是否可以在執行之前限制程序?
控制組是基於 pid 的,並且沒有直接通過名稱限制程序的方法。(由於控制組是分層的,這是有道理的:預設情況下,一個組還包含其成員程序的未來子程序,並且讓它們根據其名稱重新連接到另一個組會令人驚訝。)
使用控制組的典型方法是將父程序附加到它們,然後依賴子程序繼承其父組的事實。但是,有一個工具可以讓您在給定的組中啟動一個程序
cgexec
:cgexec -g memory:foo yourcommand
在 Debian 上,您會在
cgroup-tools
.