Linux
使用 cgroups 限制沒有子程序的單個程序的記憶體
我需要限制程序的記憶體使用,但忽略它的所有子程序。我怎麼做?使用 cgroups 是首選,但不是必需的。
注意:我想忽略該過程的所有目前和未來的子程序。我知道它可以逃脫限制,但這就是我所需要的。
在我的情況下
prlimit --as=<virtual memory in bytes>
幫助。它並不總是能正常工作(因為虛擬記憶體很棘手),所以請謹慎使用。您可能還想設置一個軟限制,而不是prlimit --as=<limit>:
例子:
啟動一個虛擬記憶體限制為 2 GB(軟限制和硬限制)的程序
prlimit --as=2147483648 -- process --with args
啟動一個虛擬記憶體限制為 2 GB 的程序(僅軟限制)
prlimit --as=2147483648: -- process --with args
啟動一個虛擬記憶體限制為 2 GB 的程序(僅硬限制)
prlimit --as=:2147483648 -- process --with args
將現有程序限制為 2 GB 的虛擬記憶體
prlimit --as=2147483648 --pid=<process pid>
將目前 shell 限制為 2 GB 的虛擬記憶體
prlimit --as=2147483648 --pid=$$