一种虚拟机性能优化的方法和设备与流程

专利2022-06-30  57


本领域涉及计算机领域,并且更具体地涉及一种虚拟机性能优化的方法和设备。



背景技术:

随着主机cpu数量的增加,cpu访问内存的速度会因为内存访问冲突而越来越慢,为解决这一问题,引入了numa(nonuniformmemoryaccessarchitecture,非统一内存访问架构)模型,即把主机的cpu和内存分为多块,一部分cpu和指定的一部分内存结合起来,其他的cpu也分别指定一部分内存块,直至所有主机资源均分配完毕,此时cpu与结合的那块内存由于物理距离更小,因此访问速度也更快,并且也极大减少了内存访问的冲突;例如主机分左右两个处理器(cpu1、cpu2),在每个处理器两边放两个内存块(memory(内存)1.1、memory1.2、memory2.1、memory2.2),这样numanode(节点)1的cpu1访问memory1.1和memory1.2就比访问memory2.1和memory2.2更快。所以使用numa的模式如果能尽量保证本node内的cpu只访问本node内的内存块,那这样的效率就是最高的,现阶段主机默认开启numa自动平衡功能,即本numa节点的cpu尽可能访问与之结合的那块内存,若当前节点内存不足,则开始跨numa节点进行远端访问内存,此时性能便降低了一些。

虚拟机可根据主机numa分布以及所属内存块来进行实时调度,在主机numa自动平衡功能关闭后,可使虚拟机只访问本地numa节点所属的内存节点,以避免远端内存调用,提升虚拟机的性能,然而这一方案可能会出现一些问题,如当前numa节点剩余内存已然不足,然而其他numa节点内存充裕,会导致当前numa节点上的虚拟机不得不使用swap内存,性能大大下降,因此单纯的关闭主机numa自动平衡功能具有一定的隐患。



技术实现要素:

有鉴于此,本发明实施例的目的在于提出一种虚拟机性能优化的方法和设备,通过使用本发明的方法,能够在避免numa节点内存溢出的情况下,最大限度地优化了当前numa节点的虚拟机性能。

基于上述目的,本发明的实施例的一个方面提供了一种虚拟机性能优化的方法,包括以下步骤:

每间隔阈值周期获取主机所有numa节点的miss数量(计划使用本节点内存却被调度到其他节点的次数),并根据miss数量计算当前阈值周期较上一个阈值周期的miss数量的增长率;

在以阈值周期和增长率为坐标的坐标系中描绘点,并将每个相邻的点连接起来形成折线;

以最后一点做平行于y轴的第一直线并计算折线、第一直线和坐标轴形成的第一面积,以第一点做平行于x轴的第二直线并计算第一直线、第二直线和坐标轴形成的第二面积;

基于第一面积和第二面积的差值判断当前numa节点是否需要清理以优化虚拟机性能。

根据本发明的一个实施例,根据miss数量计算当前阈值周期较上一个阈值周期的miss数量的增长率包括:

使用公式计算增长率。

根据本发明的一个实施例,在以阈值周期和增长率为坐标的坐标系中描绘点包括:以阈值周期的期数为横坐标,以当前阈值周期的增长率为纵坐标。

根据本发明的一个实施例,基于第一面积和第二面积的差值判断当前numa节点是否需要清理包括:

响应于第一面积大于第二面积,确认当前numa节点需要清理。

根据本发明的一个实施例,还包括:响应于numa节点需要清理,则通过numastat-cqemu-kvm命令查询所有虚拟机进程在各个numa节点的内存使用情况以进行numa节点间的迁移。

本发明的实施例的另一个方面,还提供了一种虚拟机性能优化的设备,设备包括:

获取模块,获取模块配置为每间隔阈值周期获取主机所有numa节点的miss数量,并根据miss数量计算当前阈值周期较上一个阈值周期的miss数量的增长率;

建立模块,建立模块配置为在以阈值周期和增长率为坐标的坐标系中描绘点,并将每个相邻的点连接起来形成折线;

计算模块,计算模块配置为以最后一点做平行于y轴的第一直线并计算折线、第一直线和坐标轴形成的第一面积,以第一点做平行于x轴的第二直线并计算第一直线、第二直线和坐标轴形成的第二面积;

判断模块,判断模块配置为基于第一面积和第二面积的差值判断当前numa节点是否需要清理以优化虚拟机性能。

根据本发明的一个实施例,获取模块还配置为使用公式计算增长率。

根据本发明的一个实施例,建立模块还配置为以阈值周期的期数为横坐标,以当前阈值周期的增长率为纵坐标。

根据本发明的一个实施例,判断模块还配置为响应于第一面积大于第二面积,确认当前numa节点需要清理。

根据本发明的一个实施例,还包括清理模块,清理模块配置为响应于numa节点需要清理,则通过numastat-cqemu-kvm命令查询所有虚拟机进程在各个numa节点的内存使用情况以进行numa节点间的迁移。

本发明具有以下有益技术效果:本发明实施例提供的虚拟机性能优化的方法,通过每间隔阈值周期获取主机所有numa节点的miss数量,并根据miss数量计算当前阈值周期较上一个阈值周期的miss数量的增长率;在以阈值周期和增长率为坐标的坐标系中描绘点,并将每个相邻的点连接起来形成折线;以最后一点做平行于y轴的第一直线并计算折线、第一直线和坐标轴形成的第一面积,以第一点做平行于x轴的第二直线并计算第一直线、第二直线和坐标轴形成的第二面积;基于第一面积和第二面积的差值判断当前numa节点是否需要清理以优化虚拟机性能的技术方案,能够在避免numa节点内存溢出的情况下,最大限度地优化了当前numa节点的虚拟机性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

图1为根据本发明一个实施例的虚拟机性能优化的方法的示意性流程图;

图2为根据本发明一个实施例的虚拟机性能优化的设备的示意图;

图3为根据本发明一个实施例的第一面积和第二面积的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

基于上述目的,本发明的实施例的第一个方面,提出了一种虚拟机性能优化的方法的一个实施例。图1示出的是该方法的示意性流程图。

如图1中所示,该方法可以包括以下步骤:

s1每间隔阈值周期获取主机所有numa节点的miss数量,并根据miss数量计算当前阈值周期较上一个阈值周期的miss数量的增长率,比如第一阈值周期miss数为n1,第二阈值周期miss数为n2,第三阈值周期miss数为n3等等,基于n1、n2、n3等计算miss数量的增长率;

s2在以阈值周期和增长率为坐标的坐标系中描绘点,并将每个相邻的点连接起来形成折线,例如第一个点横坐标为0,纵坐标为n1,第二个点横坐标为1,纵坐标为n2,第三个点横坐标为2,纵坐标为n3,依次类推会得到一系列的点,在同一个坐标系中描绘出这些点,并将这些点连线形成一条折线;

s3以最后一点做平行于y轴的第一直线并计算折线、第一直线和坐标轴形成的第一面积,以第一点做平行于x轴的第二直线并计算第一直线、第二直线和坐标轴形成的第二面积,根据第一点做平行于x轴的辅助线,根据最后一点做平行于y轴的辅助线,计算相关辅助线和折线以及坐标轴围成的面积;

s4基于第一面积和第二面积的差值判断当前numa节点是否需要清理以优化虚拟机性能,如果差值为负,则能证明当前numa节点的miss增长率正在下降,反之则当前numa节点的增长率一直处于上升阶段,就需要对该numa节点进行清理。

本文提出优化方法,在不关闭主机numa自动平衡功能的前提下,通过该算法来评估每个numa节点的miss情况进行节点“清理”,即把经常访问远端内存节点的进程调度到其他numa节点上,从而在保证所有numa节点内存均衡使用的同时,虚拟机的性能也有所提升。本发明针对直接关闭主机numa自动平衡进行性能优化方案的局限性,本发明的方法每个周期都会记录一次当前numa节点的miss数量,并计算出本周期相比于上一周期的增长率(即环比增长率),得到一个非连续的环比增长率函数,然后再放在二维坐标轴中连接各点求取它在几何意义上的面积,再减去一个基于环比增长率函数第一个值得到的标准几何面积,得到最终量化后的miss情况,若该值为负,则能证明当前numa节点的miss增长率正在下降,反之则当前numa节点的增长率一直处于上升阶段,就需要对该numa节点进行清理,查出访问远端内存较多的虚拟机,并将之迁移至对应的其他numa节点。

通过本发明的技术方案,能够在避免numa节点内存溢出的情况下,最大限度地优化了当前numa节点的虚拟机性能。

在本发明的一个优选实施例中,根据miss数量计算当前阈值周期较上一个阈值周期的miss数量的增长率包括:

使用公式计算增长率。

在本发明的一个优选实施例中,在以阈值周期和增长率为坐标的坐标系中描绘点包括:以阈值周期的期数为横坐标,以当前阈值周期的增长率为纵坐标,例如,第一个点的横坐标为第一阈值周期数0,纵坐标为第一阈值周期对应的增长率,第二个点的横坐标为第二阈值周期数1,纵坐标为第二阈值周期对应的增长率,以此类推在坐标系中形成一系列的点。

在本发明的一个优选实施例中,基于第一面积和第二面积的差值判断当前numa节点是否需要清理包括:

响应于第一面积大于第二面积,确认当前numa节点需要清理,如果第一面积减第二面积的差值为负,则能证明当前numa节点的miss增长率正在下降,反之则当前numa节点的增长率一直处于上升阶段,就需要对该numa节点进行清理。

在本发明的一个优选实施例中,还包括:响应于numa节点需要清理,则通过numastat-cqemu-kvm命令查询所有虚拟机进程在各个numa节点的内存使用情况以进行numa节点间的迁移。

实施例

第一步,周期性地获取主机所有numa节点的miss数量;

第二步,使用公式计算其中一个numa节点在当前周期较之于上一周期的增长率;

第三步,记录从第二个周期开始计算的增长率,得到一个二维数组[[0,y0]、[1,y1]、……、[n,yn]],在坐标轴中记录该二维数组各点并连接,并计算与x轴所围成的面积sn(increase);再根据二维数组的第一个点[0,y0]做一条平行于x轴的直线,并计算至第n个点所围成的长方形面积sn(rec),如图3所示。

第四步,计算sn(increase)-sn(rec)的值,若该值大于0,则当前numa节点需要进行清理,若该值小于0,则不做任何操作,继续计算下一个numa节点的相关miss情况;

第五步,若需要清理该numa节点,则通过numastat-cqemu-kvm命令查询所有虚拟机进程在各个numa节点的内存使用情况,来有针对性地进行numa节点间的迁移。

通过本发明的技术方案,能够在避免numa节点内存溢出的情况下,最大限度地优化了当前numa节点的虚拟机性能。

需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,上述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储器(read-onlymemory,rom)或随机存取存储器(randomaccessmemory,ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。

此外,根据本发明实施例公开的方法还可以被实现为由cpu执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被cpu执行时,执行本发明实施例公开的方法中限定的上述功能。

基于上述目的,本发明的实施例的第二个方面,提出了一种虚拟机性能优化的设备,如图2所示,设备200包括:

获取模块201,获取模块201配置为每间隔阈值周期获取主机所有numa节点的miss数量,并根据miss数量计算当前阈值周期较上一个阈值周期的miss数量的增长率;

建立模块202,建立模块202配置为在以阈值周期和增长率为坐标的坐标系中描绘点,并将每个相邻的点连接起来形成折线;

计算模块203,计算模块203配置为以最后一点做平行于y轴的第一直线并计算折线、第一直线和坐标轴形成的第一面积,以第一点做平行于x轴的第二直线并计算第一直线、第二直线和坐标轴形成的第二面积;

判断模块204,判断模块204配置为基于第一面积和第二面积的差值判断当前numa节点是否需要清理以优化虚拟机性能。

在本发明的一个优选实施例中,获取模块201还配置为使用公式计算增长率。

在本发明的一个优选实施例中,状态信息包括:建立模块202还配置为以阈值周期的期数为横坐标,以当前阈值周期的增长率为纵坐标。

在本发明的一个优选实施例中,判断模块204还配置为响应于第一面积大于第二面积,确认当前numa节点需要清理。

在本发明的一个优选实施例中,还包括清理模块,清理模块配置为响应于numa节点需要清理,则通过numastat-cqemu-kvm命令查询所有虚拟机进程在各个numa节点的内存使用情况以进行numa节点间的迁移。

需要特别指出的是,上述系统的实施例采用了上述方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到上述方法的其他实施例中。

此外,上述方法步骤以及系统单元或模块也可以利用控制器以及用于存储使得控制器实现上述步骤或单元或模块功能的计算机程序的计算机可读存储介质实现。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。

上述实施例,特别是任何“优选”实施例是实现的可能示例,并且仅为了清楚地理解本发明的原理而提出。可以在不脱离本文所描述的技术的精神和原理的情况下对上述实施例进行许多变化和修改。所有修改旨在被包括在本公开的范围内并且由所附权利要求保护。


技术特征:

1.一种虚拟机性能优化的方法,其特征在于,包括以下步骤:

每间隔阈值周期获取主机所有numa节点的miss数量,并根据所述miss数量计算当前所述阈值周期较上一个所述阈值周期的所述miss数量的增长率;

在以所述阈值周期和所述增长率为坐标的坐标系中描绘点,并将每个相邻的点连接起来形成折线;

以最后一点做平行于y轴的第一直线并计算所述折线、所述第一直线和坐标轴形成的第一面积,以第一点做平行于x轴的第二直线并计算所述第一直线、所述第二直线和所述坐标轴形成的第二面积;

基于所述第一面积和所述第二面积的差值判断当前所述numa节点是否需要清理以优化所述虚拟机性能。

2.根据权利要求1所述的方法,其特征在于,根据所述miss数量计算当前所述阈值周期较上一个所述阈值周期的所述miss数量的增长率包括:

使用公式计算所述增长率。

3.根据权利要求1所述的方法,其特征在于,在以所述阈值周期和所述增长率为坐标的坐标系中描绘点包括:以所述阈值周期的期数为横坐标,以当前所述阈值周期的所述增长率为纵坐标。

4.根据权利要求1所述的方法,其特征在于,基于所述第一面积和所述第二面积的差值判断当前所述numa节点是否需要清理包括:

响应于所述第一面积大于所述第二面积,确认当前所述numa节点需要清理。

5.根据权利要求1所述的方法,其特征在于,还包括:响应于所述numa节点需要清理,则通过numastat-cqemu-kvm命令查询所有虚拟机进程在各个所述numa节点的内存使用情况以进行所述numa节点间的迁移。

6.一种虚拟机性能优化的设备,其特征在于,所述设备包括:

获取模块,所述获取模块配置为每间隔阈值周期获取主机所有numa节点的miss数量,并根据所述miss数量计算当前所述阈值周期较上一个所述阈值周期的所述miss数量的增长率;

建立模块,所述建立模块配置为在以所述阈值周期和所述增长率为坐标的坐标系中描绘点,并将每个相邻的点连接起来形成折线;

计算模块,所述计算模块配置为以最后一点做平行于y轴的第一直线并计算所述折线、所述第一直线和坐标轴形成的第一面积,以第一点做平行于x轴的第二直线并计算所述第一直线、所述第二直线和所述坐标轴形成的第二面积;

判断模块,所述判断模块配置为基于所述第一面积和所述第二面积的差值判断当前所述numa节点是否需要清理以优化所述虚拟机性能。

7.根据权利要求6所述的设备,其特征在于,所述获取模块还配置为使用公式计算所述增长率。

8.根据权利要求6所述的设备,其特征在于,所述建立模块还配置为以所述阈值周期的期数为横坐标,以当前所述阈值周期的所述增长率为纵坐标。

9.根据权利要求6所述的设备,其特征在于,所述判断模块还配置为响应于所述第一面积大于所述第二面积,确认当前所述numa节点需要清理。

10.根据权利要求6所述的设备,其特征在于,还包括清理模块,所述清理模块配置为响应于所述numa节点需要清理,则通过numastat-cqemu-kvm命令查询所有虚拟机进程在各个所述numa节点的内存使用情况以进行所述numa节点间的迁移。

技术总结
本发明提供了一种虚拟机性能优化的方法和设备,该方法包括以下步骤:每间隔阈值周期获取主机所有numa节点的miss数量,并根据miss数量计算当前阈值周期较上一个阈值周期的miss数量的增长率;在以阈值周期和增长率为坐标的坐标系中描绘点,并将每个相邻的点连接起来形成折线;以最后一点做平行于Y轴的第一直线并计算折线、第一直线和坐标轴形成的第一面积,以第一点做平行于X轴的第二直线并计算第一直线、第二直线和坐标轴形成的第二面积;基于第一面积和第二面积的差值判断当前numa节点是否需要清理以优化虚拟机性能。通过使用本发明的方法,能够在避免numa节点内存溢出的情况下,最大限度地优化了当前numa节点的虚拟机性能。

技术研发人员:解琰
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2019.12.31
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-59754.html

最新回复(0)