一张图掌握Volcano Device plugin的核心,压箱底

目录

Volcano Device plugin核心流程图

获取node上的GPU信息

向kubelet注册

Device Plugin给node打标

提供ListAndWatch获取设备信息(kubelet会调用)

提供Allocate(kubelet调用)

Volcano Device Plugin行为

Volcano Scheduler


Volcano Device plugin核心流程图

本质逻辑是共享GPU mem

  1. 不是mem硬隔离
  2. 也不是将GPU虚拟化为多个vGPU(这种vGPU是资源隔离的)

获取node上的GPU信息

通过nvml获取设备信息

  • 设备数量

  • 每个设备的MEM

向kubelet注册

ResourceName:例如volcano.sh/gpu-memory

kubelet会给node打标volcano.sh/gpu-memory = 虚拟设备的数量

Device Plugin给node打标

如果是gpu-memory模式,则打标

node.status.capacity

volcano.sh/gpu-number = 物理GPU数量

(gpu-number模式是device plugin打标,gpu-memory模式下,将资源注册到kubelet后,volcano.sh/gpu-memory这个标是kubelet打的)

提供ListAndWatch获取设备信息(kubelet会调用)

GPU mem一份是1M,在software上将GPU分成若干虚拟GPU

  • 若是GPU mem共享(向kubelet注册的ResourceName=volcano.sh/gpu-memory),就将虚拟GPUs推给kubelet(注意是虚拟GPU设备,因一般以1M为一份,所以数量也就代表了mem的大小,这里是多张卡的总虚拟设备数)

    • 虚拟GPU的ID=真实id-虚拟id

  • 若是GPU number也即独享,就将物理GPU信息推给kubelet

提供Allocate(kubelet调用)

Device Plugin的Allocate重点是做一些pre工作,如生成配置等,返回给kubelet,然后kubelet带着这些配置调用docker,docker再调用docker runtime

参考ContainerAllocateResponse,Allocate会返回如下信息:

  1. Envs

  2. Mounts

  3. Devices

  4. Annotations

kubelet访问Device Plugin的Allocate接口,带入的参数是deviceIDs

并没有实际分配GPU资源

Volcano Device Plugin行为

  1. 获取所有pending的pod

  2. 找到需要分配GPU mem的pod

  3. 找到pod的Annotation里的volcano.sh/gpu-index(格式1,2,3,4,5,这个是kubelet分配的gpu的index)

  4. 更新pod的Annotation,volcano.sh/gpu-assigned = true(表示已分配)

  5. 生成ContainerAllocateResponse

    1. Envs:(会设置到pod内)

      1. NVIDIA_VISIBLE_DEVICES:

      2. VOLCANO_GPU_ALLOCATED:实际申请的GPU mem大小

      3. VOLCANO_GPU_MEMORY_TOTAL:GPU原始显存

实际的Allocate是Nvidia device plugin做的

Nvidia device plugin监听需要申请GPU资源的pod,然后做操作

Volcano Scheduler

维护node上的资源信息

  1. 获取node的status信息

  2. 找到capacity

    1. volcano.sh/gpu-memory 多张卡的总mem

    2. volcano.sh/gpu-number

  3. 每张卡创建一个Device,对应的mem=gpu-memory/gpu-number取的平均值

  4. 每个device对应一个pod list,记录device的资源被使用的情况

调度

  1. 遍历每个Device,计算Device上剩余的gpu-memory

  2. 找到符合要求的其中一个Device(ID排序取第一个)

  3. 为pod增加Annotation:volcano.sh/gpu-index = 找到的Device的ID

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hugo Lei

赏你了,我的一点心意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值