我正在运行克伦威尔Ubuntu 18.04 上的管道执行器,根据定义,它以协调的方式运行其他程序。我正在尝试找到一种方法来对单个执行施加总 CPU 使用率限制,尤其是对那些具有散射的执行。虽然可以在 Docker 容器上尝试此操作(如果任务在容器内执行),但我想知道是否有一个好的顶级解决方案。
当我运行 Cromwell 时,它由我的用户拥有,并且是单线程的。它进一步生成的进程由 root 拥有,它们通常占用 100% 的资源,但数量可能非常多。
我尝试使用CPU限制使用 --include-children 标志为应用程序提供总共 2 个核心(总共 40 个):
sudo java -jar /nas/files/cromwell-35.jar run test.wdl --inputs test_inputs.json &
sudo cpulimit --include-children --limit=200 --pid=$!
但它对单个执行施加了限制,而不是对它们的总 CPU 使用率(总和)施加了限制:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26581 root 20 0 1946776 239476 34984 R 100.0 0.1 0:10.03 suppa.py
26770 root 20 0 1939040 231784 34892 R 100.0 0.1 0:09.79 suppa.py
26811 root 20 0 1920448 213176 34636 R 100.0 0.1 0:09.36 suppa.py
27338 root 20 0 1937880 230936 35048 R 100.0 0.1 0:08.81 suppa.py
27662 root 20 0 1928868 221892 34896 R 100.0 0.1 0:08.64 suppa.py
27751 root 20 0 1920044 212844 34744 R 100.0 0.1 0:08.49 suppa.py
27786 root 20 0 1922524 215464 35064 R 100.0 0.1 0:08.03 suppa.py
27920 root 20 0 1921360 214376 35044 R 100.0 0.1 0:08.72 suppa.py
27983 root 20 0 1921224 213944 34880 R 100.0 0.1 0:08.10 suppa.py
28064 root 20 0 1899252 191972 34836 R 100.0 0.1 0:08.00 suppa.py
28482 root 20 0 1861976 154748 34844 R 100.0 0.1 0:04.89 suppa.py
28586 root 20 0 1856140 148976 34736 R 100.0 0.1 0:04.44 suppa.py
28587 root 20 0 1846516 139324 34900 R 100.0 0.1 0:04.45 suppa.py
26096 root 20 0 1950144 242780 34908 R 100.0 0.1 0:11.42 suppa.py
26442 root 20 0 1936560 229028 34692 R 100.0 0.1 0:11.50 suppa.py
27000 root 20 0 1931020 223848 34988 R 100.0 0.1 0:10.02 suppa.py
27108 root 20 0 1933736 226632 34988 R 100.0 0.1 0:09.93 suppa.py
27321 root 20 0 1923300 216092 34852 R 100.0 0.1 0:08.76 suppa.py
27565 root 20 0 1923028 215848 34780 R 99.7 0.1 0:09.07 suppa.py
19245 root 9 -11 4532 840 776 S 21.5 0.0 0:26.33 cpulimit
17119 root 20 0 50.406g 1.147g 33940 S 11.6 0.5 1:15.74 java
我也读过有关使用组的信息,但我不确定如何做到这一点,因为我无法轻易将这些子进程与其他根进程区分开来。
是否有一个万无一失的解决方案可以将命令 + 子命令的总 CPU 时间限制为 CPU 的总百分比?