本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用限制 AL2 023 中的进程资源使用量 cgroups
虽然建议使用使用资源控制 systemd,但本节介绍基本libcgroup-tools实用程序的基本用法,以限制进程的 CPU 和内存使用量。这两种方法都是使用该cpulimit实用程序的替代方法,之前可在中找到EPEL。
以下示例介绍运行stress-ng压力测试(来自stress-ng软件包),同时使用软件libcgroup-tools包中的实用程序和中的sysfs可调参数限制其 CPU 和内存使用量。
在命令行libcgroup-tools上使用以限制资源使用
-
安装
libcgroup-tools软件包。[ec2-user ~]$sudo dnf installlibcgroup-tools -
cgroup使用memory和cpu控制器创建 a,并为其命名 (our-example-limits)。使用-a和-t选项允许ec2-user用户控制的可调参数cgroup[ec2-user ~]$sudo cgcreate -aec2-user-tec2-user-g memory,cpu:our-example-limits现在有一个
/sys/fs/cgroup/our-example-limits/目录,其中包含可用于控制每个可调对象的文件。注意
亚马逊 Linux 2 使用
cgroup-v1cgroup-v2的是在 AL2 023 上使用的。开 AL2启后,sysfs路径不同,会有/sys/fs/cgroup/memory/our-example-limits和/sys/fs/cgroup/cpu/our-example-limits目录ec2-user所拥有的目录包含可用于控制限制的文件cgroup。 -
将所有进程的内存使用量限制在 1 亿字节
cgroup以内。[ec2-user ~]$echo100000000> /sys/fs/cgroup/our-example-limits/memory.max注意
亚马逊 Linux 2 使用的
cgroup-v1不是亚马逊 Linux 2023 所cgroup-v2使用的。这意味着有些可调参数是不同的。要限制内存使用量 AL2,请改用以下可调参数。[ec2-user ~]$echo10000000> /sys/fs/cgroup/memory/our-example-limits/memory.limit_in_bytes -
将我们所有进程的 CPU 使用率限制在 10%
cgroup以内。该cpu.max文件的格式是$MAX $PERIOD,将该组限制$MAX为每人消费$PERIOD。[ec2-user ~]$echo10000 100000> /sys/fs/cgroup/our-example-limits/cpu.max亚马逊 Linux 2 使用的
cgroup-v1不是亚马逊 Linux 2023 所cgroup-v2使用的。这意味着有些可调参数是不同的,包括如何限制 CPU 使用率。 -
下面的示例在中运行
stress-ng(可以通过运行来安装dnf install -y stress-ng)our-example-limitscgroup。 在stress-ng命令运行时,你可以观察到top,它被限制在 10% 以内 CPU 时间。[ec2-user ~]$sudo cgexec -g memory,cpu:our-example-limitsstress-ng --cpu 1 -
通过删除 cgroup 进行清理
[ec2-user ~]$sudo cgdelete -g memory,cpu:our-example-limits
的 Linux 内核文档cgroup-v2包含有关