前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TKE qGPU 通过两层调度解决 GPU 资源碎片问题

TKE qGPU 通过两层调度解决 GPU 资源碎片问题

作者头像
腾讯云原生
发布2022-05-30 14:40:19
1.8K1
发布2022-05-30 14:40:19
举报
文章被收录于专栏:腾讯云原生团队

李波,腾讯云高级工程师,Kubernetes 社区积极贡献者,多年 PaaS 平台及 Kubernetes 研发经验,目前负责 TKE qGPU 产品研发。

背景

TKE qGPU 是腾讯云推出的 GPU 容器共享技术,支持在多个容器间共享 GPU 卡并提供容器间显存、算力强隔离的能力,在保证业务稳定的基础上,达到提高 GPU 使用率、降低成本的目的。

TKE qGPU 支持单个容器的百分比算力及显存 MB 级调度,同时支持分配单卡或者多卡,满足业务同时使用 GPU 共享及整卡独占的场景。该统一调度方案帮助客户提升了资源分配效率,但也同时带来了因切卡产生碎片导致无法分配整卡资源的挑战。这会在集群层面造成一定的资源浪费。

为了解决该资源碎片问题,为用户提供更好、更细粒度的调度能力,TKE qGPU 设计了两层调度方案,用户可以在节点和 GPU 卡两个维度灵活配置不同调度策略,从而进一步提升资源分配效率。

节点 / GPU 两层调度

TKE qGPU Scheduler 支持节点和 GPU 卡两个层面的调度,每个调度层级均支持 binpack 或者 spread 策略,通过不同层的调度策略组合,更好的贴合用户场景。

节点调度

TKE qGPU 定义了算力和显存两种 GPU 资源。TKE qGPU 调度器将每张卡算力切分成 100 份,每个算力单位代表 1% 整卡算力。显存为 MB 级切分。这些资源会在节点 TKE qGPU device plugin 启动时自动发现和上报。TKE qGPU Scheduler 会在内存 cache 中维护节点与 GPU 卡的分配信息。

用户在创建 Pod 时,可为每个容器申请共享卡资源:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata: test-qgpu
spec:
  containers:
  - name: test1
    image: nginx
    resources:
    limits:
      tke.cloud.tencent.com/qgpu-core: 20 // 20% 算力
      tke.cloud.tencent.com/qgpu-memory: 256 // 256MB 显存

或者通过 100 倍数申请整卡资源。

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata: test-qgpu
spec:
  containers:
  - name: test1
    image: nginx
    resources:
    limits:
      tke.cloud.tencent.com/qgpu-core: <100|200|300|...> // 整卡

TKE qGPU Scheduler 通过实现 Kubernetes extender scheduler 和 scheduler framework 接口与 Kubernetes 集成。在预选阶段,qGPU Scheduler 会遍历每个节点找到最合适的 GPU 卡进行调度,具体由 GPU 卡调度器决策。在优选阶段,qGPU Scheduler 会根据两个资源分配率的加权平均打分。考虑到显存绝对隔离,而算力可以共享,我们把显存权重设为 0.8,算力权重设为 0.2,并提供以下两种策略:

  • Binpack:GPU 分配率越高,打分越高,Pod 集中调度到同一个节点。
  • Spread:GPU 分配率越高,打分越低,Pod 分散调度到各个节点。

GPU 卡调度

GPU 卡调度是指在选定节点后进行卡维度的分配决策,为 Pod 中每个容器选择和分配节点上的 GPU 卡。GPU 卡的调度策略与节点类似,通过计算每张 GPU 卡的算力和显存加权平均的资源装箱率,来选择最优的卡进行分配。在满足容器资源需求的前提下,通过不同的策略来选择 GPU 卡:

  • Binpack:优先选择装箱率高的 GPU 卡,容器集中到同一块卡上。
  • Spread:优先选择装箱率低的 GPU 卡,容器分散到不同的卡上。

典型场景

总结

为了解决共享 GPU 场景下的碎片问题,更好的帮助用户提升 GPU 资源分配效率,TKE qGPU 设计开发了节点和 GPU 卡两个层次的调度和装箱策略,用户可以根据自身业务场景选择合适的调度策略,在提高 GPU 利用率的同时提升 GPU 分配效率,最终帮助用户最大程度降低用卡成本。

目前 TKE qGPU 已全量上线,详情请戳:https://cloud.tencent.com/document/product/457/61448

  往期精选推荐  

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 节点 / GPU 两层调度
    • 节点调度
      • GPU 卡调度
      • 典型场景
      • 总结
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档