5.4. 自动化控制器容量确定和作业影响


自动化控制器容量系统根据实例可用的资源量以及正在运行的作业的大小(称为影响)来确定可在实例上运行的作业数量。用于确定这一点的算法基于以下两个方面:

  • 系统可使用多少内存(mem_capacity)
  • 系统可使用多少个处理容量(cpu_capacity)

容量也会影响实例组。由于组由实例组成,因此实例也可以分配到多个组。这意味着,对一个实例的影响可能会影响其他组的整体容量。

实例组而不是实例本身,可以分配给不同级别的作业使用。如需更多信息, 请参阅配置 自动化执行中的集群

当任务管理器准备其图形来确定作业运行的组时,它会将实例组的容量提交到尚未启动的作业。

在较小的配置中,如果只有一个实例可用于某个作业运行,任务管理器可让该作业在实例上运行,即使它会使实例超额。这样可保证作业不会因为置备系统而卡住。

5.4.1. 容量算法的资源确定

容量算法确定系统可以同时运行多少个 fork。这些算法控制 Ansible 可以同时与多少个系统通信。

增加自动化控制器系统运行的 fork 数量,使作业可以更快地运行,方法是并行执行更多工作。但是,这会增加系统的负载,这可能导致工作变慢。

默认 mem_capacity 可让您超额提交处理资源,同时防止系统内存不足。如果您的大多数工作不是处理器密集型,则选择此模式可最大化 fork 数量。

5.4.1.1. 内存相对容量

memory relative capacity 选项允许您设置基于系统上可用内存在控制器上运行的最大并发任务(fork)数。此设置对于内存是运行 Ansible 作业的一个限制因素的系统很有用。

mem_capacity 相对于每个 fork 所需的内存量计算。考虑到内部组件的开销,每个分叉大约需要 100MB。在考虑 Ansible 作业可用的内存量时,容量算法保留 2GB 内存,以考虑存在其他服务。其算法公式是:

(mem - 2048) / mem_per_fork

以下是一个示例:

(4096 - 2048) / 100 == ~20

具有 4GB 内存的系统可以运行 20 个分叉。mem_per_fork 值通过设置 SYSTEM_TASK_FORKS_MEM 的值来控制,默认值为 100。

5.4.1.2. CPU 相对容量

自动化控制器使用 cpu_capacity 算法来确定受管节点的相对 CPU 容量。此信息用于优化可用节点之间的任务分布。

Ansible 工作负载通常是处理器密集型。在这种情况下,您可以减少同步工作负载,使更多任务可以更快地运行,并减少这些作业的平均完成时间。

就像 mem_capacity 算法调整每个 fork 所需的内存量一样,cpu_capacity 算法会调整每个 fork 所需的处理资源量。这个基准值是每个内核的四个 fork。其算法公式是:

cpus * fork_per_cpu

例如,4 核系统类似如下:

4 * 4 == 16

您可以通过将 SYSTEM_TASK_FORKS_CPU 的值设置为 4 来控制 fork_per_cpu 的值。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部