基于干扰打分的在线容器调度方法和系统

文档序号:35541083发布日期:2023-09-23 18:04阅读:31来源:国知局
基于干扰打分的在线容器调度方法和系统

本发明涉及调度系统,具体地,涉及一种基于干扰打分的在线容器调度方法和系统。


背景技术:

1、在线服务即向用户提供服务的应用,在线服务通常具有延迟敏感的特点,故也可称为延迟敏感型服务(latency-sensitive service),简称ls服务。常见的ls服务有搜索引擎,电子邮件以及电商网站等。通常情况下,ls服务有如下特点:第一,多个ls服务以微服务(microservice)的形式协同处理用户的请求,形成了一个调用栈。第二,随着业务量的增长,ls服务通常部署在集群中,每个ls服务有几十个到几千个实例(instance)运行着相同的代码,并通过负载均衡器分别处理来自用户的一部分请求。一旦某个ls服务其中的一部分副本的实例性能下降,则会影响到该服务的尾延迟。第三,ls实例以容器的形式运行在集群中的不同主机上,他们的生命周期通常从几个小时到几个月。相对于批处理作业(besteffort jobs),ls服务通常生命周期更长,并且由于面向用户提供服务的特性,对性能的要求更为严格。本发明中使用术语容器或者实例均表示在线服务的单个用于处理请求的副本实体。

2、为了提升资源利用率,通常情况下,一台物理服务器上会运行着多个ls服务的实例。尽管这种部署方式能够提升资源利用率从而减少成本,但是由于对物理资源的竞争,使得它们会互相干扰,进而有可能导致性能下降。为了减少ls实例之间的干扰,现有的方案可以采用独占绑定的方式,即在一台服务器上,将一组vcpu分配给某一个ls实例,而其他的ls实例不能使用这一组vcpu(本文使用小写的vcpu代表linux系统中的一个一个逻辑核,通常intel的cpu在打开了hyperthreading的情况下的一个超线程,使用大写的cpu代表一块处理器,因此在多核处理器中一个cpu中有数十个vcpu)。然而,这种独占绑定的方式仍然不能缓解争用共享的硬件资源带来的干扰,例如llc(last level cache)和内存带宽的争用。由于多socket(cpu插槽)服务器,以及intel的hyperthreading(超线程,一个物理核可以虚拟成两个逻辑核,每个逻辑核都有各自的寄存器,但它们共享l1/l2 cache)等技术的存在。使得ls实例对这种cpu内部资源的竞争导致的干扰变得更为复杂。以一台双socket服务器为例,每台服务器上有两块cpu。每个cpu内部又有n个物理核,这n个物理核虚拟化成了2n个vcpu。共享一个物理核的两个vcpu共享了l1/l2 cache,同一个socket内部的vcpu共享了llc,属于两块cpu之间的vcpu没有共享cache,因此它们之间没有cache争用。这种不同的核共享不同的cache资源的现象给通过优化绑核的策略来降低干扰提供了可能。

3、专利文献cn115562829a(申请号:cn202211211699.7)公开了一种基于任务分类与干扰打分的干扰感知调度系统,包括be任务分类器、主机干扰量化器、干扰感知调度器;所述任务分类器对be任务实例进行类别推断,获得任务类别;所述主机干扰量化器基于欲进行调度的目标主机上的be分布评估候选主机的干扰水平,获得不同候选主机的干扰等级;所述干扰感知调度器将be任务实例调度到指定的干扰等级所对应的候选主机上。

4、现有的调度器,例如kubernetes或者docker swarm的调度器都支持容器的绑核。但这些通用的调度器都无法感知容器中的应用运行的状况、以及它们之间的干扰。因此都没有在调度阶段考虑容器之间的干扰。而现有的其他干扰感知的调度技术,通常也只通过调度到某一台机器上,没有进一步推荐vcpus集合(一个容器不止绑定到一个vcpu,vcpus为一组vcpu集合,例如vcpu 0–vcpu 3这4个vcpu)。因此本发明提出了一种能够评估一个被调度容器在候选主机以及相应的vcpus上部署时的干扰,并基于这种干扰评估推荐出使得干扰最小的候选主机和相应的vcpus。


技术实现思路

1、针对现有技术中的缺陷,本发明的目的是提供一种基于干扰打分的在线容器调度方法和系统。

2、根据本发明提供的基于干扰打分的在线容器调度方法,包括:

3、离线训练步骤:监控在线服务的实例运行时的cpu利用率和部署情况,以及根据监控数据进行应用画像、训练cpu利用率预测模型;

4、在线运行步骤:基于cpu利用率预测模型进行候选主机过滤、生成候选集合和干扰打分;

5、所述候选主机过滤包括过滤掉集群中不满足资源要求的主机,得到一批候选主机;

6、所述生成候选集合包括使用滑动窗口法在候选主机上进一步生成候选的vcpu集合,从而生成容器调度时的候选主机和vcpus集合二元组的侯选集;

7、所述干扰打分包括对单个实例打分和综合打分,在调度一个在线服务的实例前,评估该实例如果被调度到候选集中每个候选组中指定的主机和vcpu编号上,该实例受到的干扰,以及候选主机上原有实例受到的干扰;聚合各个实例受到的干扰,得到整块cpu上在线实例的综合干扰,选择综合干扰最小的候选组部署被调度实例。

8、优选的,对于单个实例,需要监控的数据有:

9、(instance_id,node_ip,cpu_list,cpu_util)

10、其中,instance_id,node_ip,cpu_list,cpu_util分别为实例的唯一id、机器的ip、实例绑定的vcpu编号和实例的cpu利用率;

11、(node_ip,cpu_num_total,socket_num)

12、其中,node_ip,cpu_num_total,socket_num分别为机器的ip、机器上总的vcpu的数量和机器上插槽socket的数量。

13、优选的,以服务的平均利用率作为实例对其邻居的干扰的量化指标,表达式为:

14、

15、其中,m表示service i的实例的数量;表示属于service i的每个实例k的cpu利用率;

16、按实例申请的vcpu的数量加权,作为多个实例对其邻居的干扰的量化指标,表达式为:

17、

18、

19、其中,k表示共享核sc邻居的数量;n表示共享槽ss邻居的数量;requests.vcpui表示服务i的实例申请的vcpu的数量;

20、使用多元线性回归训练cpu利用率预测模型,表达式为:

21、cpuinst=b0+k1*cpusc+k2*cpuss

22、其中,b0、k1和k2是线性回归模型参数,通过历史数据拟合得到。

23、优选的,使用滑动窗口选择vcpu候选集,对每个候选主机,按空闲vcpu编号从小到大,使用一个滑动窗口选择候选vcpu集合,从而生成一组候选集合:

24、candidates={(serveri,vcpus)}

25、其中,serveri表示机器的ip;vcpus表示在serveri上可被当前实例独占的vcpu编号的集合。

26、优选的,对候选集中的每个(serveri,vcpus)元组进行干扰评估,其中包括单个实例的干扰打分和多个实例的综合打分:

27、单个实例的干扰打分,以cpu利用率预测模型的一部分作为单个实例的干扰打分,选择由于邻居应用的干扰导致的利用率上涨的部分,表达式为:

28、scoreinst=k1*cpusc+k2*cpusd

29、多个实例的综合打分,即在干扰评估的时候,不仅要考虑到自身的cpu利用率的上涨,还要考虑候选主机上原有实例利用率的上涨,表达式为:

30、

31、其中,requests.vcpui表示实例i申请的vcpu数量;为实例i的干扰打分;cpu_numsocket为单个socket上vcpu的数量。

32、根据本发明提供的基于干扰打分的在线容器调度系统,包括:

33、离线训练模块:监控在线服务的实例运行时的cpu利用率和部署情况,以及根据监控数据进行应用画像、训练cpu利用率预测模型;

34、在线运行模块:基于cpu利用率预测模型进行候选主机过滤、生成候选集合和干扰打分;

35、所述候选主机过滤包括过滤掉集群中不满足资源要求的主机,得到一批候选主机;

36、所述生成候选集合包括使用滑动窗口法在候选主机上进一步生成候选的vcpu集合,从而生成容器调度时的候选主机和vcpus集合二元组的侯选集;

37、所述干扰打分包括对单个实例打分和综合打分,在调度一个在线服务的实例前,评估该实例如果被调度到候选集中每个候选组中指定的主机和vcpu编号上,该实例受到的干扰,以及候选主机上原有实例受到的干扰;聚合各个实例受到的干扰,得到整块cpu上在线实例的综合干扰,选择综合干扰最小的候选组部署被调度实例。

38、优选的,对于单个实例,需要监控的数据有:

39、(instance_id,node_ip,cpu_list,cpu_util)

40、其中,instance_id,node_ip,cpu_list,cpu_util分别为实例的唯一id、机器的ip、实例绑定的vcpu编号和实例的cpu利用率;

41、(node_ip,cpu_num_total,socket_num)

42、其中,node_ip,cpu_num_total,socket_num分别为机器的ip、机器上总的vcpu的数量和机器上插槽socket的数量。

43、优选的,以服务的平均利用率作为实例对其邻居的干扰的量化指标,表达式为:

44、

45、其中,m表示service i的实例的数量;表示属于service i的每个实例k的cpu利用率;

46、按实例申请的vcpu的数量加权,作为多个实例对其邻居的干扰的量化指标,表达式为:

47、

48、

49、其中,k表示共享核sc邻居的数量;n表示共享槽ss邻居的数量;requests.vcpui表示服务i的实例申请的vcpu的数量;

50、使用多元线性回归训练cpu利用率预测模型,表达式为:

51、cpuinst=b0+k1*cpusc+k2*cpuss

52、其中,b0、k1和k2是线性回归模型参数,通过历史数据拟合得到。

53、优选的,使用滑动窗口选择vcpu候选集,对每个候选主机,按空闲vcpu编号从小到大,使用一个滑动窗口选择候选vcpu集合,从而生成一组候选集合:

54、candidates={(serveri,vcpus)}

55、其中,serveri表示机器的ip;vcpus表示在serveri上可被当前实例独占的vcpu编号的集合。

56、优选的,对候选集中的每个(serveri,vcpus)元组进行干扰评估,其中包括单个实例的干扰打分和多个实例的综合打分:

57、单个实例的干扰打分,以cpu利用率预测模型的一部分作为单个实例的干扰打分,选择由于邻居应用的干扰导致的利用率上涨的部分,表达式为:

58、scoreinst=k1*cpusc+k2*cpuss

59、多个实例的综合打分,即在干扰评估的时候,不仅要考虑到自身的cpu利用率的上涨,还要考虑候选主机上原有实例利用率的上涨,表达式为:

60、

61、其中,requests.vcpui表示实例i申请的vcpu数量;为实例i的干扰打分;cpu_numsocket为单个socket上vcpu的数量。

62、与现有技术相比,本发明具有如下的有益效果:

63、(1)本发明通过一种考虑cpu架构的干扰打分模型,能够评估单个ls实例受其邻居实例的干扰大小,并进一步衡量部署在这块cpu上的所有ls实例的综合干扰,根据干扰的评估结果指导调度,能够快速的推荐出干扰最低的候选主机及相应的vcpus集合,从而提升在线应用的性能,降低它们的延迟;

64、(2)本发明根据历史监控数据得到每个ls服务的平均利用率,并给每个ls服务训练一个cpu预测模型,这个模型可以评估单个ls实例受到其邻居的干扰大小,将多个在线应用所受的干扰综合在一起,得到了总体的干扰,在调度时,选择使总体干扰最小的候选主机及相应的vcpus集合,从而能够降低ls实例之间的干扰;

65、(3)本发明提出了一种考虑cpu架构的干扰打分模型,对一个实例,可以分别评估来自共享物理核的对端vcpus中部署的实例和来自共享socket的非对端vcpus中部署的实例的干扰;在调度一个ls实例时,同时考虑了被调度实例受到的干扰和被调度容器对候选主机上原有实例的干扰;在调度时不仅给出了推荐的机器,针对容器绑核场景,进一步给出了推荐的vcpu编号。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1