配置机队规模调整

创建机队时,请使用扩展参数来控制您的 Code Engine 机队部署多少个工作者,以及它如何应对任务负载的变化。

所有缩放参数均为可选,可在创建车队时进行设置。

Code Engine CLI 中的扩展参数

要创建一个车队,请使用 ibmcloud ce fleet run 或 ibmcloud ce fleet create 命令。 它支持以下舰队规模调整选项。 有关所有可用命令选项的完整列表,请参阅 CLI 参考文档。

--scale-max

所有工作进程中并发任务槽总数的上限。 工作进程的扩展能力最多可支持此数量的并发任务。 默认值为 10。

--scale-min

即使没有待处理或正在运行的任务,系统也会始终预留的最小并发任务槽位数量。 提供此容量的 worker 始终处于活动状态,且绝不会被自动缩减。

根据此设置,一个拥有活跃工作人员但无待处理或正在运行任务的车队,其状态为 “待机”。

必须小于或等于 --scale-max。 默认值为 0。

--scale-spare

在当前运行任务数量之上保留的空闲并发任务槽位数量。 当所有工人都在忙碌时,车队会增派工人以恢复备用缓冲量——最多可达 --scale-max。 在仍有闲置算力时,新任务会立即开始处理,无需等待新工作者加入。

必须小于或等于 --scale-max。 默认值为 0。

--scale-down-delay

指定工作进程在完成最后一项任务后,Code Engine 缩减其规模之前,该工作进程将继续运行多长时间。 上一项任务在延迟窗口内完成的工人,会在新任务一到时立即接手。

请指定一个正整数,表示秒数。 默认值为 0 (一旦不再需要,工作进程会立即缩减)。

Code Engine 控制台中的扩展参数

最大容器槽位数

所有工作进程中并发任务槽总数的上限。 工作进程的扩展能力最多可支持此数量的并发任务。 默认值为 10。

最小集装箱舱位数

即使没有待处理或正在运行的任务,系统也会始终预留的最小并发任务槽位数量。 提供此容量的 worker 始终处于活动状态,且绝不会被自动缩减。

根据此设置,一个拥有活跃工作人员但无待处理或正在运行任务的车队,其状态为 “待机”。

必须小于或等于“最大容器槽位数”。 默认值为 0。

备用集装箱槽位

在当前运行任务数量之上保留的空闲并发任务槽位数量。 当所有工人都在忙碌时,车队会增派工人以恢复备用缓冲量——最多可达“最大集装箱插槽数”。 在仍有闲置算力时,新任务会立即开始处理,无需等待新工作者加入。

必须小于或等于“最大容器槽位数”。 默认值为 0。

缩放延迟

指定工作进程在完成最后一项任务后,Code Engine 缩减其规模之前,该工作进程将继续运行多长时间。 上一项任务在延迟窗口内完成的工人,会在新任务一到时立即接手。

请指定分钟数。 默认值为 0 (一旦不再需要,工作进程会立即缩减)。

工作负载模式及相关参数

应使用哪些参数,取决于任务的生成方式、您的延迟要求以及车队配置的稳定性。

Code Engine CLI 中的单次批处理工作负载

您在开始时就已知晓所有任务,在创建车队时将其分配给车队,当最后一个任务完成后,车队任务即告结束。 这是最简单的模型,除了将 --scale-max 设置为控制并行运行的任务数量外,无需进行任何特殊的扩展配置。 当您需要为一批任务配置专用机队时,请使用此方法。

相关选项: --scale-max

Code Engine 控制台中的单次批处理工作负载

您在开始时就已知晓所有任务,在创建车队时将其分配给车队,当最后一个任务完成后,车队任务即告结束。 这是最简单的模型,除了将 “最大容器槽位数” 设置为控制并行运行的任务数量外,无需进行任何特殊的扩展配置。 当您需要为一批任务配置专用机队时,请使用此方法。

相关参数: 最大集装箱位数

Code Engine CLI 中的计划批处理工作负载

您维持一支车队,并按计划添加新的一批任务。 在批次之间,车队没有待处理任务。 批次之间的间隔是可预测的,且时间足够长,因此无需特意为工人保暖,所以使用 --scale-min、--scale-spare 或 --scale-down-delay 都没有实际意义。 所有批次的船队配置均保持稳定。

相关选项: --scale-max

Code Engine 控制台中的计划批处理工作负载

您维持一支车队,并按计划添加新的一批任务。 在批次之间,车队没有待处理任务。 批次之间的间隔时间可预测且足够长,因此没有必要为工人保暖,所以使用 “最小容器槽位”、“备用容器槽位”或 “缩减延迟” 均无益处。 所有批次的船队配置均保持稳定。

相关参数: 最大集装箱位数

Code Engine CLI 中的连续、对延迟敏感的工作负载

任务会在一天中的不同时间以不可预测的方式出现——由用户操作、传感器读数或其他实时事件触发。 如果每次有任务到达时都要等待一个新进程启动,将会导致无法接受的延迟。 相反,应将工作队配置为维持一支待命的“温热”工作者队伍,以便任务能够立即启动。

相关选项: --scale-max、--scale-min、--scale-spare、--scale-down-delay

  • 使用 --scale-max 来定义可分配的容器槽位的最大数量。 您的机队将根据工作负载需求,扩展至此并发限制。
  • 使用 --scale-min 可确保基础工作进程池始终处于运行状态,即使队列中没有任务时也是如此。 当流量可能在一段时间内降至零,但您仍希望流量恢复时能立即启动时,请使用此选项。
  • 使用 --scale-spare,可确保预留的空闲任务槽位数量多于当前正在运行的任务数量。 当任务到达时,处理工作会立即在已运行的工作进程上开始,同时任务集群会在后台分配更多工作进程以补充空闲算力。
  • 使用 --scale-down-delay 可以防止工人在最后一个任务完成后立即缩减规模。 当任务间歇性到达且彼此之间存在短暂间隔时,此设置非常有用,它能确保工作者保持待命状态,从而避免不必要的缩减和扩容循环。 保持工作进程的运行状态可以缩短任务启动延迟,最大限度地减少工作进程的初始化开销,并降低反复配置新工作进程的成本。

Code Engine 控制台中对延迟敏感的连续工作负载

任务会在一天中的不同时间以不可预测的方式出现——由用户操作、传感器读数或其他实时事件触发。 如果每次有任务到达时都要等待一个新进程启动,将会导致无法接受的延迟。 相反,应将工作队配置为维持一支待命的“温热”工作者队伍,以便任务能够立即启动。

相关参数: 最大容器槽位数、最小容器槽位数、备用容器槽位数、缩容延迟

  • 使用 “最大容器槽位数”来定义可配置的容器槽位最大数量。 您的机队将根据工作负载需求,扩展至此并发限制。
  • 使用 “最小容器槽位”来确保基础工作进程池始终处于运行状态,即使队列中没有任务也是如此。 当流量可能在一段时间内降至零,但您仍希望流量恢复时能立即启动时,请使用此选项。
  • 利用备用容器槽位,确保可用的空闲任务槽位数量多于当前正在运行的任务数量。 当任务到达时,处理工作会立即在已运行的工作进程上开始,同时任务集群会在后台分配更多工作进程以补充空闲算力。
  • 使用 “缩减延迟”功能,可防止工作者在最后一个任务完成后立即缩减规模。 当任务间歇性到达且彼此之间存在短暂间隔时,此设置非常有用,它能确保工作者保持待命状态,从而避免不必要的缩减和扩容循环。 保持工作进程的运行状态可以缩短任务启动延迟,最大限度地减少工作进程的初始化开销,并降低反复配置新工作进程的成本。