前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何提高集群资源利用率?

如何提高集群资源利用率?

原创
作者头像
jhonye
修改2023-10-07 14:57:01
3800
修改2023-10-07 14:57:01
举报
文章被收录于专栏:随手写个文章随手写个文章

场景说明

当我们手里有一个固定资源的集群时,需要做两件事:1. 资源管理,2. 成本效率管理;为了让进程跑在合适的机器我们需要任务调度器(深度学习任务跑在带GPU的物理机上),为了提高资源利用率(降本提效)则需要资源调度器(根据标签、算法进行调度)。

图1 业界集群调度器的5种分类
图1 业界集群调度器的5种分类

参考论文:The evolution of cluster scheduler architectures

如图1,是集群调度器架构的演进的5种分类,从中心化调度、两级调度、分布式调度到混合调度。这些调度器主要解决的问题是在同一个时刻(秒级/分钟级)选择最优的调度策略,匹配最优的资源并且把资源给到位。

无论是公司内基于Kubernetes/yarn等管理的集群,还是云上的弹性计算资源本质上都是一个大的固定集群,在某一时刻没被使用的资源也是需要向所有使用该集群的用户进行收费。只有提高集群整体的利用率才能让大家都降本提效,超卖不在本话题讨论内(本质上在蹭人家花钱没用的资源,具体节省的钱有没有回馈给用户仅取决于市场的竞争惨烈度)。

图2 资源使用量随着时间进行周期波动
图2 资源使用量随着时间进行周期波动

如图2,是一个业界常见的场景,资源的使用率随着时间进行周期变化,虽然一个周期内目标总资源使用量是1000,但是由于波峰是1500,所以最终总资源池为1500。

图3 削峰填谷
图3 削峰填谷

如图3,其实大家是希望可以达到削峰填谷的效果的,将波峰时间执行的作业移动到波谷执行,让总资源池降到目标总资源量,达到成本效率最高。

问题说明

首先明确图2发生的原因不是技术引起的而是业务,2/8定律基本在各个场景都有,大家在处理同一类型的作业偏向于在某个周期固定的节点进行处理;例如大数据场景每天夜间都要做ETL把数据预加工好,第二天早上出报表或给其他下游任务使用。

虽然图3 的解法是大家都想做的,但是很难做,为什么呢?

  • 业务特性决定一定要在特定时间执行
  • 对用户的约束力差,无法将低优先级的任务主动放在波谷执行
  • 在一个集群混合不同业务场景是很麻烦的,首先是人的问题、利益不一致,其次复杂度高、不同负载作业会互相影响
  • 其他

那么我们用什么方法来达到图3的目标呢?

解决方案

一种解法:把规则从自顶向下改为自底向上,让用户根据自己的利益进行投票。

基本要素:

  • 任务打标签,维度越多越好,支持精细化调度,例如执行时间范围、优先级、预期资源使用量等。
  • 支持特定标签任务可杀、可重跑,例如低优先级、最终执行完的时刻等。
  • 支持按集群资源的繁忙度收费(周期时段等),例如普通价格1,繁忙时间为3,波谷为0.5。

上述基本要素中最核心的是可以收费,如果共享资源对于用户看起来都是免费的情况下,就不会有人主观原因花时间进行任务成本管理。其次就是要有足够多的低优先级可被杀、重跑,将这些负载迁移到波谷阶段。最后才是用户根据自己的诉求,根据任务标签进行精细化调度。

根据上述要素就会有以下几个场景:

  • 如果用户都是高优先级任务或者有钱,那么就配置全量的资源运行就好,价格的上限也就是固定机器的价格。
  • 如果用户预算不足,也只能选在波谷运行,不然固定周期的作业都跑不完估计问题更大。
  • 如果用户今年有降本提效的指标,通过配置一些标签就可以达到,这么简单的情况下用户基本都会主动去做。

上述解决方案其实大家日常就能见到,例如网约车、餐厅、机票等。资源有限情况下,服务提供商根据资源在不同时段的利用率进行价格波动,来达到收益最高;用户则是根据手里的现金进行投票来满足不同时段的需求。从简单模型上来说,是可以达到最优结果的,不过模型要是引入了其他变量就不好聊了,例如大数据价格歧视等。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

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