一种虚拟化场景下的服务器集群优化方法
技术领域
[0001]
本发明涉及一种服务器集群优化方法,尤其是一种虚拟化场景下的服务器集群优化方法,属于信息技术领域。
背景技术:
[0002]
它是运行在Linux系统中的常用应用容器,可以用来虚拟化服务端应用,使客户端在与Linux服务端交互时感受不到容器外的操作系统属性。容器提供的跨平台特性被用作 Linux 服务器集群的应用托管服务。但是容器的存在相当于在Linux操作系统和应用程序之间增加了一个中间层,不仅降低了单台服务器的效率,还可能降低服务器集群系统的效率。如何在应用环境的虚拟化场景下调度服务器集群,成为集群运营商面临的难题。
[0003]
现有的linux集群调度系统主要采用lvs架构,包括负载均衡层(load)、服务器组层(array)和数据共享层(data)。现有的lvs架构提供了多种调度方式,类似于单服务器调度算法。
[0004]
但是,它有以下缺点:集群中的多台服务器运行多个容器。在当前的lvs架构下,不同服务器之间的调度算法没有考虑容器的特性,当服务器、容器和进程(线程)频繁切换时,可能会导致系统效率降低。减少。
技术实施要素:
[0005]
针对上述问题,本发明的目的在于提供一种虚拟化场景下的服务器集群优化方法,通过合理的控制,提高集群处理多任务的能力,减少集群的总运行时间。不同服务器和不同容器之间的切换。
[0006]
本发明的目的是通过以下技术方案实现的: 一种虚拟化场景下的服务器集群优化方法,包括以下步骤: (1)通过与操作系统的交互接口函数收集容器的服务器资源使用情况。(2)通过服务器操作系统与集群主控系统的交互接口功能,收集服务器集群的资源使用情况和任务;(3)在集群主控服务器中,建立服务器、容器、进程表,以及集群进程的总调度,计算方法是按照一定的组合执行所有进程,线性相加进程运行时间,加载时间和退出时间;用尽所有组合,计算所有可能的流程执行序列的总执行时间,并将其输入到集群的总流程调度中;(4) 选择集群总执行时间最短的解作为执行的最优解;(5)更新集群主服务器表、服务器、容器和进程表;(6)重复步骤(4)和(5),直到所有流程都执行完毕。
[0007]
步骤(3)中描述的进程表包括进程运行时间、加载时间、退出时间和服务器加载率表。
[0008]
本发明的优点: 本发明的方法在服务器集群层面进行了优化,不单独关注某台服务器。
针对服务器的需求,通过合理控制不同服务器、不同容器的切换,提高集群处理多任务的能力,减少集群总运行时间,区域内运行相对稳定。
图纸说明
[0009]
如图。图1为本发明方法初始时刻程序执行时间的随机化矩阵图。
[0010]
如图。图2为本发明方法与全随机方法的系统平均执行时间对比图。
[0011]
如图。图3为本发明系统总执行时间对比图。
详细方法
[0012]
为使本发明的目的、技术方案和优点更加清楚,下面结合附图并举具体实施例,对本发明作进一步的说明。
[0013]
实施例一:首先,对业务场景进行数学描述。对于服务器、容器、任务(进程或线程),做了如下定义: 服务器集群系统包含 i 个服务器,每个服务器的 id 为 s
一世
; 每个服务器包含 j 个容器,每个容器的 id 为 d
我, j
; 每个容器中有 k 个进程(或线程),记为 p
我, j, k
; 服务器集群的主控服务器存储了一个进程矩阵m(i, j, k)和三个时间矩阵:运行时间矩阵tr(i, j, k),加载时间矩阵tl(i, j, k) , 退出时间矩阵 te(i, j, k),其中 i, j, k 分别代表服务器、容器和进程。
[0014]
例如,tr(i, j, k) 表示第一个服务器的第 j 个容器中第 k 个进程的运行时间。
[0015]
服务器效率矩阵 f(i),代表集群中服务器 i 的效率,集群轻负载时接近 1,集群过载时可由系统管理员设置。例如,单个服务器的效率与服务器中所有进程的运行时间成反比。
[0016]
假设总共有n个进程要执行,集群中总共有i个服务器,第i个服务器中总共有j个容器,容器中总共有k个进程,n远大于一世
×
j
×
ķ。该方法的目标函数是最小化系统运行时间t。
[0017]
本发明方法的具体流程如下: 步骤1:初始化进度矩阵和时间矩阵、进度表和时间片。在集群系统开始运行或该方法启动时执行。此时进程表可能为0(集群系统开始运行时,或者所有服务都已运行),也可能为非零(集群系统已经运行了一段时间,很多程序都在运行)执行);第二步:如果进程表为零,则程序进入等待状态;如果进程表不为零,则需要为每个进程分配服务器资源。遍历过程矩阵m(i,j,k)和运行时间矩阵tr(i,j,k)得到f(i)(tr(i,j,k)+tl(i,j,k)+ te( 我, j, k)) 执行最短的前 i 个进程,分别交给 i 个服务器;第三步:操作完成后,按照执行完成时间的先后顺序移除前i个进程。每次去除后,遍历进程表,计算f(i)(tr(i,j,k)+tl(i,j,k)+te(i,j,k)),得到最小的f(i ) (tr(i, j, k)+tl(i, j, k)+te(i, j, k)),执行第i+1个进程。重复此步骤,直到进度表为零。
[0018]
本发明效果对比示例: 由于服务器集群处理的进程数一般以万为单位,不方便以表格形式显示进程表和时间表。该表是输入服务器集群技术,总运行时间是输出。比较这种方法和随机分配服务器、容器和进程的方法的总运行时间。
[0019]
假设集群中总共有 100 台服务器,每台服务器有 100 台,每台可以容纳 100 个进程。初始时刻共有进程要处理,它们的处理时间矩阵、加载时间矩阵和退出时间矩阵都是0-1秒的随机数,如图1所示,系统效率为1。
[0020]
第一步,最短的时间,前面的流程开始执行。然后,将已经执行的进程按照退出时间的先后顺序移除,每次移除第x个,都会排序为+x进行加载。重复方法描述中的步骤,直到该过程完成。
[0021]
选择,
…
,将每个进程的总处理时间与完全随机无调度算法的结果进行比较。平均执行时间如图2所示。可以看出,本发明方法的平均执行时间呈线性增加,比完全随机的方法更稳定。
[0022]
总执行时间如图 1 所示。在图3中,灰线是本发明使用的总执行时间,黑线是完全随机方法使用的总执行时间。可以看出,本发明系统的平均执行时间比完全随机方法的要短。
[0023]
从两种方法的对比可以看出,本发明的方法在处理多容器多任务时,系统总运行时间较少,在区域内运行比较稳定。
[0024]
上述实施例仅用于说明本发明的原理和方法,并不用于限制本发明。任何具有技术和原理知识的人都可以对上述实施例进行修改和变化而不脱离本发明的精神和范围。因此,本技术领域的普通技术人员在不脱离本发明所揭示的精神和技术思想的情况下所作的等同修改和变化,仍应包含在本发明的权利要求范围内。