当前位置: 首页 > news >正文

Volcano——配置理解

Volcano配置

apiVersion: v1
kind: ConfigMap
metadata:name: volcano-scheduler-configmapnamespace: volcano-system
data:volcano-scheduler.conf: |actions: "enqueue, allocate, backfill"tiers:- plugins:- name: priority- name: gang- name: conformance- plugins:- name: drf- name: predicates- name: proportion- name: nodeorder- name: binpack

actions

actions表示调度需要执行的动作。

Volcano每次调度会创建一个session,并按actions中配置的动作依次执行。

每个action里都设定好了执行逻辑,里面会调用session上的处理函数(xxxFn),这些函数都是由各个插件添加的。执行顺序参考tiers的配置。

// runOnce executes a single scheduling cycle. This function is called periodically
// as defined by the Scheduler's schedule period.
func (pc *Scheduler) runOnce() {klog.V(4).Infof("Start scheduling ...")scheduleStartTime := time.Now()defer klog.V(4).Infof("End scheduling ...")pc.mutex.Lock()actions := pc.actionsplugins := pc.pluginsconfigurations := pc.configurationspc.mutex.Unlock()// Load ConfigMap to check which action is enabled.conf.EnabledActionMap = make(map[string]bool)for _, action := range actions {conf.EnabledActionMap[action.Name()] = true}ssn := framework.OpenSession(pc.cache, plugins, configurations)defer func() {framework.CloseSession(ssn)metrics.UpdateE2eDuration(metrics.Duration(scheduleStartTime))}()for _, action := range actions {actionStartTime := time.Now()action.Execute(ssn)metrics.UpdateActionDuration(action.Name(), metrics.Duration(actionStartTime))}
}

tiers

上面配置中的tiers里有两个数组,在每个action里执行插件处理的时候,会按照tiers里定义的数组顺序以及组里插件顺序进行。

Volcano代码示例:

func (ssn *Session) JobOrderFn(l, r interface{}) bool {for _, tier := range ssn.Tiers {for _, plugin := range tier.Plugins {if !isEnabled(plugin.EnabledJobOrder) {continue}jof, found := ssn.jobOrderFns[plugin.Name]if !found {continue}if j := jof(l, r); j != 0 {return j < 0}}}// If no job order funcs, order job by CreationTimestamp first, then by UID.lv := l.(*api.JobInfo)rv := r.(*api.JobInfo)if lv.CreationTimestamp.Equal(&rv.CreationTimestamp) {return lv.UID < rv.UID}return lv.CreationTimestamp.Before(&rv.CreationTimestamp)
}

 

http://www.rkmt.cn/news/13517.html

相关文章:

  • [转]bat/cmd将命令执行的结果赋值给变量
  • 题解:AT_abc424_f [ABC424F] Adding Chords
  • Software Crisis and Complexity
  • langgraphjs-gen-ui-examples
  • 2025 年节能咨询公司最新权威推荐排行榜:覆盖工业 / 建筑 / 数据中心等领域 TOP5 优质企业综合测评与选型指南发电厂/燃气/全域增效/服务器节能公司推荐
  • 2025 年无尘金刚砂源头厂家最新推荐排行榜:权威精选企业产能与品质深度解析无尘金刚砂材料/无尘金刚砂批发/无尘金刚砂喷砂厂家推荐
  • PySide6 之简易音乐播放器
  • 题解:P10005 [集训队互测 2023] 基础寄术练习题
  • 同步和互斥的基本概念
  • 盲盒一番赏小应用用户需求分析:从行为动机到功能诉求的深度拆解
  • C++ IO 库全方位解析:从基础到实战 - 指南
  • 洛谷P10112 [GESP202312 八级] 奖品分配
  • P10400 『STA - R5』消失的计算机
  • loki收集容器日志
  • 完整教程:dlib库关键点定位和疲劳检测
  • VKD233HH触控IC有两种输出方式“直接输出”和“锁存输出”单路触摸检测芯片
  • C# Avalonia 15- Animation- CachingTest
  • Ansible + Docker 部署 MinIO 集群
  • 自动遍历测试利器:开源工具AppCrawler 配置全解析
  • 250928
  • window 安全模式卸载任何软件
  • 定制笔记本电脑工厂排名:从基础代工到联合设计全面分析 - 教程
  • sv 去除字符串行尾空格函数
  • linux执行yum报错: except KeyboardInterrrupt, e
  • grafana如何添加自定义geoJson地图
  • AI元人文:追问与悟空
  • 2025 年纽扣电池厂家:力源电池以 TWS 适配技术与定制服务,打造多场景电源解决方案
  • AWS SageMaker SDK 完整教程:从零开始云端训练你的模型
  • 反转数字-处理溢出的条件-Java
  • Storm-0501威胁组织利用云技术实施勒索攻击的技术分析