对于同一进程使用 cgroups 和 Nice - 顺序重要吗?正确的语法是什么?

对于同一进程使用 cgroups 和 Nice - 顺序重要吗?正确的语法是什么?

我在桌面上创建了一个 CGROUP,名为背景。此组的目的是在 10% 的 CPU 限制内运行我的所有 sysadmin 脚本。每次重新启动时都会使用以下 cronjob 创建该组:

@reboot /usr/bin/cgcreate -t jerzy:jerzy -a jerzy:jerzy -g cpu:background && /usr/bin/cgset -r cpu.cfs_period_us=1000000 background && /usr/bin/cgset -r cpu.cfs_quota_us=100000 background

尽管有这个限制,我仍然想要我的系统管理脚本,它已经受到限制执行程序,永远不要优先于我的其余流程。因此我决定使用好的命令,如下例所示:

cgexec -g cpu:background nice -19 prependPollen.py

执行程序在上面的命令中将资源限制为prependPollen.py或仅至好的

更一般:使用执行程序仅将资源限制为紧随其后的一个命令执行程序命令?这同样适用于好的

nice -19 cgexec -g cpu:background prependPollen.py

像上面的命令一样交换顺序会对 CPU 使用/限制产生任何影响吗?两者都可以好的执行程序可以在同一个命令/cronjob 中使用吗?

PS 我的环境:Bash、Debian 10 LTS。

答案1

这两个命令都是准备命令,在保留它们更改的属性的同时执行以下命令。因此,只要更改的属性不会对另一个属性产生任何副作用(这对这两个属性来说就很好),这里的顺序并不重要。

cgexec -> nice -> final executable

nice将下面要执行的流程移动到相关的组组并将nice改变最终可执行文件的性能(同时保留 cgroup)。

nice -> cgexec -> final executable

将更改后续进程的良好性cgexec,并将cgexec最终的可执行文件放入相关的 cgroup 中(同时保持良好性)。

两个命令都会产生相同的结果。两个属性(组组善良)会自动传播到以下进程的所有子进程。所以无论产生什么prependPollen.py都会在中央处理器:背景也有改变的美好。

任何其他类似的命令都可以插入到该管道中的任何位置。例如ionice -c 3可以添加在第一、第二或第三位置,以尝试限制 python 程序对其他进程的 I/O 影响(同时也有cgroups为此做得更好,通常需要cgroupsv2 才能正常工作)。

相关内容