如何限制给定进程的资源使用?
我有一个需要运行的应用程序的进程,但最终使用了太多的IO用法。 并且真的让我的计算机崩溃了,因此在运行时无法做任何其他事情。
所以我想知道是否有办法限制给定进程的IO使用率,RAM和CPU? 当然还有它的子流程。
这是在我的Ubuntu 18.04 LTS系统上。
你应该使用所有cgexec
, cpulimit
和ionice
的组合:
sudo cgcreate -g memory:/szMyGroup echo $(( 512 * 1024 * 1024 )) | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.limit_in_bytes echo $(( 1024 * 1024 * 1024 )) | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.memsw.limit_in_bytes
要创建一个名为szMyGroup
的控制组(例如在你的case group-great-uncle
),为szMyGroup
下运行的进程设置一个上限,最多512 MB的物理内存和最多1024 MB的swap,然后:
sudo cgexec -g memory:szMyGroup szMyProgram
这将在MyGroup控制组下运行您的程序
sudo ionice --class 3 --pid $(pgrep -f szMyProgram) && sudo cpulimit --limit=25 --pid=!#:4
使用pgrep
重用当前命令行的部分:
- 将其磁盘访问限制为仅在没有其他程序使用该磁盘时使用该磁盘
- 将CPU限制为最大值的25%
如果程序开始时不使用大量CPU,请将cpulimit的值降低到当前使用的一半或更少。