Menu Close
Settings Close

Language and Page Formatting Options

第 31 章 使用 systemd 管理应用程序使用的资源

RHEL 9 通过将 cgroup 层次结构的系统与 systemd 单元树绑定,将资源管理设置从进程级别移到应用程序级别。因此,您可以使用 systemctl 命令或通过修改 systemd 单元文件来管理系统资源。

要做到这一点,systemd 从单元文件或者直接通过 systemctl 命令获取各种配置选项。然后,systemd 通过使用 Linux 内核系统调用和 cgroupnamespaces 等功能将这些选项应用到特定的进程组。

注意

您可以在以下手册页中查看 systemd 的完整配置选项:

  • systemd.resource-control (5)
  • systemd.exec (5)

31.1. 使用 systemd 分配系统资源

要修改系统资源的发布,您可以应用一个或多个以下分发模型:

Weights(权重)

您可以通过增加所有子组的权重并为每个子组群分配资源,使其与总和总的比例匹配。

例如,如果您有 10 个 cgroups,则每个权重值为 100,sum 为 1000。每个 cgroup 会收到十分之一的资源。

权重通常用于分发无状态资源。例如, CPUWeight= 选项是此资源分布模型的实现。

Limits

cgroup 可以最多消耗配置的资源量。子组限值总和不能超过父 cgroup 的限值。因此,可以过量使用此模型中的资源。

例如, MemoryMax= 选项是此资源分发模型的实现。

Protections(保护)

您可以为 cgroup 设置受保护的资源量。如果资源使用量低于保护边界,内核将尝试不以竞争同一资源的 cgroup 替代其他 cgroup。可以过量使用。

例如,MemoryLow= 选项是此资源分发模型的实现。

Allocations(分配)
独占分配有限资源的绝对数量。不能过量使用。Linux 中这种资源类型的一个示例就是实时预算。
单元文件选项

资源控制配置的设置。

例如,您可以使用 CPUAccounting=CPUQuota= 等选项配置 CPU 资源。同样,您可以使用 AllowedMemoryNodes=IOAccounting= 等选项配置内存或 I/O 资源。

流程

要更改服务的单元文件选项所需的值,您可以调整单元文件中的值,或使用 systemctl 命令:

  1. 检查您选择的服务的分配值。

    # systemctl show --property <unit file option> <service name>
  2. 设置 CPU 时间分配策略选项的必要值:

    # systemctl set-property <service name> <unit file option>=<value>

验证步骤

  • 检查您选择的服务新分配的值。

    # systemctl show --property <unit file option> <service name>

其他资源

  • systemd.resource-control (5) , systemd.exec (5) manual pages