更新时间:2024-01-05 GMT+08:00

XGPU算力调度示例

当使用XGPU服务创建XGPU时,XGPU服务会按照最大容器数量(max_inst)为每张显卡设置时间片(X ms)用于为容器分配GPU算力,以单元1、单元2…单元N表示。本节max_inst以20为例,介绍使用不同调度策略时对算力的调度示例。

原生调度(policy=0)

原生调度表示使用NVIDIA GPU本身的算力调度方式。在原生调度策略下XGPU只用来做显存的隔离。

固定算力调度(policy=1)

固定算力调度表示以固定的算力百分比为容器分配算力。例如为容器1和容器2分别分配5%和15%的算力,如下图所示。

平均调度(policy=2)

平均调度表示每个容器固定获得1/max_inst的算力。以max_inst=20为例,每个容器固定获得1/max_inst,即5%的算力,如下图所示。

抢占调度(policy=3)

抢占调度表示每个容器固定获得1个时间片,XGPU服务会从算力单元1开始调度。但如果某个算力单元没有分配给某个容器,或者容器内没有进程打开GPU设备,则跳过调度切换到下一个时间片。图中灰色部分的算力单元表示被跳过不参与调度。

本例中容器1、2、3占用的实际算力百分比均为33.33%。

权重抢占调度(policy=4)

权重抢占调度表示按照每个容器的算力比例为容器分配时间片。XGPU服务会从算力单元1开始调度,但如果某个算力单元没有分配给某个容器,则跳过调度切换到下一个时间片。例如为容器1、2、3分别分配5%、5%、10%的算力,则容器1、2、3分别占用1、1、2个算力单元。图中灰色部分的算力单元表示被跳过不参与调度。

本例中容器1、2、3占用的实际算力百分比为25%、25%、50%。

混合调度(policy=5)

混合调度表示单张GPU卡支持单显存隔离和算力显存隔离类型。其中算力显存隔离的容器其隔离效果同固定算力(policy=1)完全一致,单显存隔离的容器共享算力显存隔离的容器分配后剩余的GPU算力。以max_inst=20为例,容器1、2为算力显存隔离容器,其分配的算力分别为5%、10%,容器3、4为单显存隔离的容器,则容器1、2分别占用1、2个算力单元,容器3、4共享剩余17个算力单元。此外,当容器2中没有进程打开GPU设备时,则容器1、2分别占用1、0个算力单元,容器3、4共享剩余19个算力单元。

在混合调度下,根据GPU_CONTAINER_QUOTA_PERCENT是否为0来区分容器是否开启算力隔离,GPU_CONTAINER_QUOTA_PERCENT为0的所有容器共享GPU的空闲算力。

混合调度策略不支持高优先级容器。

权重弱调度(policy=6)

权重弱调度表示按照每个容器的算力比例为容器分配时间片,隔离性弱于权重抢占调度。XGPU服务会从算力单元1开始调度,但如果某个算力单元没有分配给某个容器,或者容器内没有进程打开GPU设备,则跳过调度切换到下一个时间片。例如为容器1、2、3分别分配5%、5%、10%的算力,则容器1、2、3分别占用1、1、2个算力单元。图中白色部分的算力单元表示容器3的空闲算力,图中白色部分和灰色部分的算力单元表示被跳过不参与调度。

本例中容器1、2、3占用的实际算力百分比为50%、50%、0%。

权重弱调度涉及空闲算力的抢占和抢回,因此容器在空闲和忙碌之间切换时会影响其他容器的算力,该算力波动属于正常情况。当某个容器从空闲切换到忙碌时,其抢回算力的时延不超过100ms。