43.4. 使用 cgroups-v1 为应用程序设置 CPU 限制
要使用 控制组版本 1 ( cgroups-v1
)配置对应用程序的 CPU 限制,请使用 /sys/fs/
虚拟文件系统。
先决条件
- 您有 root 权限。
- 您有一个应用程序来限制其系统中安装的 CPU 消耗。
您确认已挂载了
cgroups-v1
控制器:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
识别您要限制 CPU 消耗的应用程序的进程 ID (PID):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PID 为 6955
的sha1sum
示例应用程序会消耗大量 CPU 资源。在
cpu
资源控制器目录中创建子目录:mkdir /sys/fs/cgroup/cpu/Example/
# mkdir /sys/fs/cgroup/cpu/Example/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此目录代表控制组,您可以在其中放置特定进程,并向进程应用某些 CPU 限制。同时,目录中将创建多个
cgroups-v1
接口文件和cpu
特定于控制器的文件。可选:检查新创建的控制组:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cpuacct.usage
,cpu.cfs._period_us
等文件代表特定的配置和/或限制,它们可以为 Example控制组中的进程
设置。请注意,文件名前缀为它们所属的控制组控制器的名称。默认情况下,新创建的控制组继承对系统整个 CPU 资源的访问权限,且无限制。
为控制组群配置 CPU 限制:
echo "1000000" > /sys/fs/cgroup/cpu/Example/cpu.cfs_period_us echo "200000" > /sys/fs/cgroup/cpu/Example/cpu.cfs_quota_us
# echo "1000000" > /sys/fs/cgroup/cpu/Example/cpu.cfs_period_us # echo "200000" > /sys/fs/cgroup/cpu/Example/cpu.cfs_quota_us
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
cpu.cfs_period_us
文件代表控制组对 CPU 资源的访问权限的频率。时间段为微秒(swigs, "us")。上限为 1000 000 微秒,下限为 1000 微秒。 cpu.cfs_quota_us
文件表示控制组中的所有进程可以在一个期间内共同运行的时间(以微秒为单位)的总时间,如cpu.cfs_period_us
定义。当控制组中的进程在单个期间内使用配额指定的所有时间时,它们会在句点的剩余时间内节流,并且不允许在下一个周期前运行。下限为 1000 微秒。上面的示例命令设定 CPU 时间限值,使得
Example
控制组中的所有进程仅能每 1 秒(cpu.cfs_quota_us
定义)每 1 秒(由cpu.cfs_period_us
定义)运行 0.2 秒。
-
可选:验证限制:
cat /sys/fs/cgroup/cpu/Example/cpu.cfs_period_us /sys/fs/cgroup/cpu/Example/cpu.cfs_quota_us 1000000 200000
# cat /sys/fs/cgroup/cpu/Example/cpu.cfs_period_us /sys/fs/cgroup/cpu/Example/cpu.cfs_quota_us 1000000 200000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将应用程序的 PID 添加到
Example
控制组群中:echo "6955" > /sys/fs/cgroup/cpu/Example/cgroup.procs
# echo "6955" > /sys/fs/cgroup/cpu/Example/cgroup.procs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令可确保特定的应用成为
Example
控制组的成员,并且不超过为Example
控制组配置的 CPU 限值。PID 必须代表系统中的一个已存在的进程。此处的PID 6955
分配给sha1sum /dev/zero &
amp; 进程,用于演示cpu
控制器的用例。
验证
验证应用程序是否在指定的控制组群中运行:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用程序的进程在
Example
控制组中运行,将 CPU 限制应用到应用程序的进程。确定节流应用程序的当前 CPU 消耗:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,
PID 6955
的 CPU 消耗从 99% 减少到 20%。
cpu.cfs_period_us
和 cpu.cfs_quota_us
的 cgroups-v2
对应项是 cpu.max
文件。cpu.max
文件可以通过 cpu
控制器获得。