赞
踩
作者田奇,腾讯高级工程师,专注大规模在离线混部,分布式资源管理调度,熟悉Kubernetes,关注云原生大数据、AI。
随着微服务、大数据、人工智能的不断发展,为了满足业务需求,企业的 IT 环境通常运行两大类服务,一类是在线服务,一类是离线作业。
在线服务:往往长时间运行,服务流量存在周期特性,整体资源使用率不高,但是对服务 SLA 却有着极高的要求,如网页搜索服务、电商交易服务等。
离线作业:往往是资源密集型服务,但其可以容忍较高的时延、失败任务重启,如大数据分析服务、机器学习训练服务等。
这两种类型的服务负载在分时复用、资源互补上存在极大的优化空间,使得它成为混部的首选场景,所谓在离线混部,指的就是将离线作业和在线服务部署到同一个节点,以此来提高资源利用率,减少企业对与日俱增的离线计算资源的成本开支。
据 Gartner 统计,全球数据中心平均使用率不足15%,每年会有巨大的资源浪费。
造成资源效率低下的原因,主要是以下几点:
通过在离线混部,可以充分利用节点的空闲资源,从而提高资源利用率。
在离线混部当前在各大中型互联网公司等都有落地,通过混部提升资源利用率,可以获得可观的成本节省,获得规模效应下的巨大经济价值。
下面可以做一个简单的计算分析,我们提升20%的资源利用率,可以大致节省的预算:
假设我们当前所有的机器有10w 核 CPU,平均每台机器的资源使用率是20%, 那么 0.2 * 10w = 2w 核,在业务规模不变的情况下,假设资源平均使用率提高到40%,我们只需要5w 核就可以满足业务需求,假设 CPU 的平均价格是 300元/核/年,就可以节省 5w * 300= 1500w 元/年。
对于有成本控制诉求的企业,在离线混部是降本增效的首选,比如谷歌已经将所有业务混合部署在 Borg(Kubernetes 的前身)系统中,其资源利用率可以达到60%,每年可以节省上亿美金。
传统模式的 Kubernetes 按照业务申请的 request 资源量进行静态调度,如果在线和离线业务都按照 request 进行调度,离线业务先调度,占满了节点的 request 资源,那么在线业务就无法调度了,同理,如果在线业务先调度并占满了节点 request 资源,离线业务就没法调度了,传统模式的调度器将没有办法进行在线业务的资源复用。
传统的资源复用方式,往往会采取分时复用,就是在固定的时间点跑离线业务,比如凌晨以后,就开始调度运行离线业务,在白天开始调度在线业务。这种模式下的资源复用,往往时间粒度过粗,虽然可以在一小段时间内复用在线资源,但是有比较严格的时间限制。
另一种是资源预留,将一个机器的资源整体划分为在线资源、离线资源以及在离线共享资源,该方式采用了静态划分的方法,将整机资源进行了划分,无法进行弹性复用,而是只能将在线业务和离线业务的资源进行提前预留。虽然通过部署离线业务能够一定程度的提高资源利用率,但是复用不够充分,并且需要资源规格大的机器才能将资源进行静态划分。
因此,要想高效的、自动化的进行细粒度的资源分时复用,就必须拥有及时准确的资源预测手段、快速响应资源变化的能力,以及一套可以在资源水位变化的时候进行的服务保障措施。
由于在线业务和
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。