知行合一
为企业打造智能决策的引擎
申请试用专家系统
申请试用专家系统
请添加微信二维码

云服务器调度问题介绍

2022-12-17

秦虎教授团队在云服务器调度问题上研究多年,积累了丰富的研究成果,并且开发出了一套先进的智能算法解决方案。使用秦教授开发的算法后,可以在不增加硬件投入的前提下为云服务器供应商带来更多的利润。

01 问题介绍

要理解什么是云服务器调度问题

我们先来简单介绍一下装箱问题

装箱问题的目标是寻求将一组给定尺寸的物品装入具有固定容量的容器中的最佳方法。根据具体目标的不同,装箱问题可分为两类:背包问题(以装入最大总价值的物品为目标)和装箱问题(以容纳所有物品的容器数量最小为目标)。其中背包问题还可细分为多维背包问题(多维度物理量限制)和多背包问题(多个背包)。

图片

先简单介绍几个概念:

物理服务器:云数据中心通常由大规模的物理服务器集群所组成,通过虚拟化技术,可以对每个物理节点的资源(如CPU、内存、硬盘等)进行隔离,使得每台物理机上可以同时容纳多个虚拟机,这些虚拟机即共享该物理服务器上的所有资源。

虚拟机规格:云平台通常预先定义了各种类型虚拟机的规格(flavor),便于租户选择购买。例如,如果租户对计算要求低,而内存要求相对高,可以选择4个CPU、16GB内存的配置。

资源维度:如上述,虚拟机正常工作需要多个维度的资源同时配合,如CPU、内存、硬盘、网络等等。

云平台为了满足不同租户的需求,提供了一种可随时自助获取、可弹性伸缩的云服务器,即弹性云服务器(Elastic CloudServer,ECS)。为容纳更多的租户请求、并尽可能提高资源利用率、降低成本,自动化、智能化的资源调度管理系统非常关键。

拿2018年华为软件精英挑战赛-初赛赛题简单举例

赛题基本描述:

由于租户对ECS实例(虚拟机,VM)请求的行为具有一定规律,可以通过对历史ECS实例请求的分析,预测到未来一段时间的ECS实例请求,然后对预测的请求分配资源(如图1所示),这样可以找到一个接近最优的分配策略,实现资源最大化利用,同时也能参考预测的结果制定云数据中心的建设计划。原题补充说明:由于云平台通常使用网络共享存储,任何时候只需要考虑CPU和内存两种资源

故这个问题可以分预测和放置两阶段来解决,预测阶段小编便不多说了,放置部分可以从二维背包问题的角度考虑,每个服务器看作是不同容量的背包,虚拟机是物品,虚拟机和物理机都有CPU和内存两个约束维度,问题是要在虚拟机全部装完的情况下,使得CPU和内存两个维度的平均资源利用率最高。这就是一个简单的云服务器问题,而资源是多维的,CPU、内存、硬盘、网络等都可以加入考量,问题便一步步变得复杂。

图片

为什么一定要研究云服务器调度问题呢?

我们可以这样理解。

在云服务器出现之前如果大家想搭建一个网站运行环境,就得购买或者和别人合租服务器,要么选择更实惠一些的虚拟主机。

通俗来讲,传统的租用服务器就相当于租一套三室一厅的房子自己住;与别人合租服务器就是大家凑份子合租这套(每人一室,客厅和其他设施共用)房子;而虚拟主机就相当于把这套三室一厅的房子里放很多单人床,你只能租其中的床位。

以上的比喻相信大家是很容易理解的,在这种环境下,难以避免会受到别人的影响和干扰,而云服务器的出现彻底的改变了这种合租带来的弊端。云服务器是不再搞N室N厅的房子来给大家独立租用或者合租,而是像宾馆一样设置不同的标准间,每个房子所有设施都是独立的,有不同规模的房型供大家选择。

从上下铺到小房子就离不开云服务器调度的优化。由于现在云计算比较火,那些类似于阿里云华为云之类的服务提供商的服务器集群规模是非常非常庞大的,每个用户的服务挂在服务器上就会消耗一定的资源,比如说a顾客他对cpu需求特别高,对gpu没有需求,b顾客对cpu没有需求,对gpu需求特别高,我们就可以把他俩放到同一台服务器上,通过在服务器集群中移动用户的服务达到某些目的,通过优化可以大幅降低集群的成本,比如用最少的服务器承接用户的需求或者通过分析用户习惯实现超卖。超卖的意思就是,比如你在阿里云买了一个16G内存的主机,但是你平时最多只用8G,那我们边就可以把4个像你这样的客户放在一台32G内存的主机上。这样,通过对用户服务进行调度,就可以实现用尽量少的主机服务最多的用户,资源利用率得到提升,对成本的提升也是显而易见。

而问题的难点就在于:

(1)计算集群规模非常大,而且是动态的(时刻都有可能发生变化),所以要求计算时间特别短

(2)服务在计算集群中的迁移链路非常复杂

真正的生产环境的云平台调度主要在做两件事,可用性和低成本,即如何在低成本的情况下满足可用性。解决问题最终的方向是盈利,所有的事情都会基于这一点,所以提高调度的性能,提高资源的使用率或者说降低成本将是主要的功能。所以云服务器调度问题在当今显得十分重要。

02 问题描述

云服务器调度问题可以抽象为vector packing问题。

首先,咱简简单单定义三个集合,主机集合M(m属于M),服务集合P(p属于P),资源集合R(r属于R)。

约束

主机提供服务所需要的资源,所以服务与主机一一映射,而主机m对于资源r的容量也是有限制的,所以主机m上对资源r的消耗情况就是该主机m上部署的需求p1、p2...对资源r的需求之和(如图一)。就此可以引出我们的第一条约束

图片

图一

(1)容量约束:对于任意主机m,对于资源r,其消耗不可超出主机m对资源r的容量。

在Internet上,各主机间通过TCP/IP协议发送和接收数据报,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?端口便是把数据报顺利的传送到目的主机时的一道门,本地操作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,抛开细节来说,服务器可以比作房子,而把端口比作通向不同房间(服务)的门。那么,当两个服务p1、p2,要求相同的端口时,就不能放在同一个主机m上,这便是服务与服务之间的互斥(如图二)。除此之外,服务与主机之间同样存在互斥,比如有些服务对安全性有要求,而有些主机可能因为部分开放端口易遭到入侵,不符合安全性要求。由此可以引出我们的第二条约束

图片

图二

(2)互斥约束,即某些需求不能部署在同一台主机上

对于第三条约束,如下图图三,当我们要将主机A中的容器一中数据迁移至主机B时,主机B剩下的容量并不足,此时就需要一个主机C作为中转,所以我们想将容器1数据复制到主机C中,此时容器1所对应的服务就会消耗两倍的资源。

图片

图三

故普遍的,当需求p从主机m迁移到m‘时,为确保我们们每一步操作可行,就先复制过去一个,完成这样的操作需要消耗两倍的资源。类似于容量约束,就有了第三条约束

(3)迁移约束,对于主机m,迁移前后其上部署的服务集合的并集,这个大的服务集合所需要的资源就不能超过主机m上各资源的容量。

目标

解决问题的目标就是降低成本

(1)负载成本:

首先我们设定主机m对于资源r有一个安全水位,

【安全水位:比如某台主机的磁盘容量为100G,我设定安全水位是80G,超过80G就有溢出的风险】

图片

对于资源r,所有主机上,资源r的消耗情况超出各自安全水位的部分之和便为资源r的负载成本。

(2)迁移成本:

其一,是迁移这个服务要花的时间;

其二,对于部分比较重要的服务,就给它设置一个比较大的迁移成本,降低其被迁移的概率。

而所有服务的迁移成本之和就是总迁移成本。

(3)资源均衡成本:

资源均衡成本就是尽量要求各资源成一定的比例关系,避免某一资源闲置,亦或者是对主机上可部署的服务有很大限制,可安排的服务多样性减少。

文案:朱正雄(华中科技大学管理学院本科二年级)

指导老师:秦虎老师(华中科技大学管理学院)

排版:程欣悦(荆楚理工学院本科四年级)

如对文中内容有疑问,欢迎交流。PS:部分资料来自网络。

如有需求,可以联系:

秦虎老师(华中科技大学管理学院:professor.qin@qq.com)

朱正雄(华中科技大学管理学院本科二年级:2627889552@qq.com)

程欣悦(荆楚理工学院本科四年级:1293900389@qq.com)

最新热门文章