Volcano特性解读 | NUMA-Aware plugin:灵活配置不同的拓扑策略

2021/09/03 10:10
阅读数 53

Volcano 是基于 Kubernetes 的批处理系统,方便HPC、 AI、大数据、基因等诸多行业通用计算框架接入,提供高性能任务调度引擎,高性能异构芯片管理,高性能任务运行管理等能力。本篇文章将解读Volcano重要特性之NUMA-Aware plugin。


背景


针对一些计算密集型、对性能要求比较高的AI训练任务,用户希望容器可以独占CPU以减少CPU共享导致上下文切换的损耗,同时对于运行在NUMA架构的处理器上的任务,也希望容器独占的多个CPU核位于同一个NUMA Node以减少通讯损耗,有效提升训练的性能。

目前kubenetes提供了Topology Manager、Cpu Manager、Device Manager等来提供节点上的资源分配和拓扑调度,但是这些特性都是工作在节点kubelet上,存在如下的局限性:

  • 调度器不支持拓扑调度功能,不感知节点的CPU Topology和资源分配。因此容器可能会由于节点资源不满足Topology Manager的调度策略(如single-numa-node),在工作节点上被kubelet拦截,导致调度失败。
  • 上述的管理器都是运行在kubelet上,并不能为作业提供优选节点的服务。


NUMA架构图


设计

为了解决上述的局限性,Volcano新增NUMA-aware插件以及resource-exporter组件,并提供Pod级别的拓扑策略,便于用户灵活地结合自身场景配置不同的拓扑策略。

NUMA-Aware 整体架构图


整体流程

NUMA-Aware调度流程


  1. 提交带有拓扑策略的volcano job

  2. Admission组件检测带有topology policy的job的相关数据合法性

  3. Controller组件提取topology policy,添加annotation并创建pod

  4. Scheduler组件基于工作节点的NUMA信息以及作业携带的拓扑策略,进行作业的预选以及优选


支持的拓扑策略

Volcano Job CRD中新增spec.tasks[].topologyPolicy字段以提供pod级别的拓扑策略,并提供与kubelet的Topology Manager组件一致的拓扑策略:

  • single-numa-node

  • best-effort

  • restricted

  • none


使用NUMA-Aware功能


1)配置kubelet配置文件,重启Kubelet,开启容器绑核功能

2)启动Volcano resource-exporter组件,用于发现工作节点的拓扑信息

kubectl apply –f https://github.com/volcano-sh/resource-exporter/blob/master/installer/numa-topo.yaml


3)启动NUMA-Aware Plugin

  • Volcano通过ConfigMap对调度器进行配置,可以在“volcano-scheduler-configmap” 启动NUMA-Aware Plugin



4)在Volcano作业上配置拓扑策略为best-effort,并提交该作业


5)运行带有拓扑策略的TFJob

  • 通过annotation“volcano.sh/numa-topology-policy”配置PS、Worker的拓扑策略为best-effort



6)如果集群中存在配置了best-effort的工作节点且剩余的cpu满足该作业的拓扑策略,则会将该作业调度到该节点上;反之如果不存在,则作业会等待集群出现符合的节点才会得到调度


当前社区进度与未来展望

当前的Volcano NUMA-Aware plugin支持了CPU的拓扑调度,尚不支持GPU以及其他资源的拓扑调度;后续阶段会规划对于GPU等资源的拓扑调度。


[参考文献]

1.https://github.com/volcano-sh/volcano/blob/master/docs/design/numa-aware.md

2.https://github.com/volcano-sh/volcano/blob/master/docs/user-guide/how_to_use_numa_aware.md

3.https://github.com/volcano-sh/volcano

4.https://github.com/volcano-sh/resource-exporter


深入了解Volcano

Volcano官网:https://volcano.sh/zh/docs/

Github : https://github.com/volcano-sh/volcano


推荐阅读


● Volcano特性解读-Job minSuccess
● Volcano GPU共享特性设计和使用
 Volcano案例 | 鹏城实验室启智章鱼教你彻底摆脱Kubernetes集群资源抢占难题
  锐天投资基于Volcano的大规模分布式离线计算平台的应用实践
  小红书:基于Volcano的大规模离线与在线推荐模型训练实践
  Volcano架构设计与原理介绍


扫描二维码 | 加入Volcano交流群


文章转载自容器魔方点击这里阅读原文了解更多


中国 KubeCon + CloudNativeCon + Open Source Summit 虚拟大会

12 月 9 日至 10 日

https://www.lfasiallc.com/kubecon-cloudnativecon-open-source-summit-china/


诚意邀您成为赞助商


联系关于Linux基金会




Linux基金会是非营利性组织,是技术生态系统的重要组成部分。 

Linux基金会通过提供财务和智力资源、基础设施、服务、活动以及培训来支持创建永续开源生态系统。在共享技术的创建中,Linux基金会及其项目通过共同努力形成了非凡成功的投资。请长按以下二维码进行关注。

本文分享自微信公众号 - LFAPAC(gh_8442c14fe49e)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部