一种云化网络下动态调节虚拟机主频的方法及系统
技术领域
本发明属于云平台技术领域,更具体地,涉及一种云化网络下动态调节虚拟机主频的方法及系统。
背景技术
5G云化网络下,服务器主要部署在DC数据中心,服务器上面运行云平台,云平台运行虚拟机,虚拟机里运行客户的APP,目前运营商非常关注服务器的能效比,在提高服务器利用率,提升APP处理性能的同时,希望有效降低服务器的功耗,提高服务器的能效比。如何提高DC数据中心的服务器能效比,是当今云化网络下的服务器使用的核心和亟待解决的关键技术问题。服务器上运行的虚拟机里运行不同的APP应用,由于服务器的物理CPU和功耗是相对固定的,所以要解决服务器上的虚拟机里APP性能处理不足的问题,一般只能通过修改虚拟机配置,或对虚拟机进行热迁移来解决,但是这样会存在业务宕机,有一个宕机时间,并且云平台只能获取虚拟机CPU的占有率,对CPU运行的主频无法感知和控制,无法实现单物理服务器内部的负载均衡和虚拟机主频的自动监控和调节。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种云化网络下动态调节虚拟机主频的方法及系统,其目的在于动态调节虚拟机不同APP所对应的物理CPU核的主频,可以根据APP的负载情况,对APP所对应的物理CPU核进行动态调节和平衡,更好的利用物理服务器的处理能力,实现对虚拟机主频的动态调节功能,由此解决无法动态调结虚拟机的主频,影响虚拟机上运行的业务的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种云化网络下动态调节虚拟机主频的方法,所述方法应用于云化网络系统,所述云化网络系统包括物理服务器、云平台、BMC和BIOS,其中,所述云平台运行在所述物理服务器上,所述虚拟机运行在所述云平台上,所述虚拟机上运行有多个APP,所述方法包括:
当所述虚拟机的CPU占有率超过设定的阈值时,所述云平台向所述BMC发送告警消息;
所述BMC在接收到所述告警消息后,触发所述物理服务器的操作系统执行BMCagent程序,获取所述虚拟机里各个APP所绑定的物理CPU核的占有率;
所述BMC根据各个APP所绑定的物理CPU核的占有率确定待调节的物理CPU核以及调节比例;
所述BIOS根据所述调节比例调节所述待调节的物理CPU核的电源状态,从而动态调节物理CPU核的主频,以消除告警,进而完成对虚拟机主频的调节。
优选地,每一物理CPU核对应N个电源状态,每一电源状态对应一个主频值,所述方法还包括:
在通过调节物理CPU核的电源状态无法消除告警时,则所述BMC调节VRM芯片输出给物理CPU的电源信号的电流比例,提高每一个电源状态所对应的主频值,从而动态调节物理CPU核的主频,以消除告警,其中,电流比例越低,物理CPU核的主频越高。
优选地,所述方法还包括:
在通过调节VRM芯片输出给物理CPU的电流比例无法消除告警时,通过更改虚拟机的配置消除告警。
优选地,所述方法还包括:
所述BMC在调节VRM芯片输出给物理CPU的电源信号的电流比例的过程中,分别向BIOS查询调节前各个物理CPU核的主频值,并记录为第一主频值;向BIOS查询调节后各个物理CPU核的主频值,并记录为第二主频值;
根据所述第一主频值、所述第二主频值和所述电流比例建立关联关系,以供后续调节电流比例时使用。
优选地,在所述BMC根据各个APP所绑定的物理CPU核的占有率确定待调节的物理CPU核以及调节比例的过程中,调节原则为:调高占有率高的物理CPU核的主频,调低占有率低的物理CPU核的主频。
优选地,所述方法还包括:
所述云平台启动虚拟机时,向所述虚拟机所对应的物理服务器的BMC上报虚拟机的唯一标识码、所述虚拟机的CPU绑核配置和APP绑核配置,其中,所述CPU绑核配置为虚拟CPU核和物理CPU核的绑定关系,所述APP绑核配置为APP与虚拟CPU核的绑定关系。
优选地,所述BMC在接收到所述告警消息后,触发所述物理服务器的操作系统执行BMC agent程序,获取所述虚拟机里各个APP所绑定的物理CPU核的占有率包括:
所述BMC在接收到所述告警消息后,触发所述物理服务器的操作系统执行BMCagent程序,获取各个物理CPU核的占有率;
根据所述CPU绑核配置确定每一物理CPU核所对应的虚拟CPU核,并根据APP绑核确定每一虚拟CPU核所对应的APP,从而确定所述虚拟机里各个APP所绑定的物理CPU核的占有率。
优选地,所述BIOS根据所述调节比例调节所述待调节的物理CPU核的电源状态,从而动态调节物理CPU核的主频,以消除告警包括:
所述BIOS根据所述调节比例调节所述待调节的物理CPU核的电源状态,并向所述BMC发送调节完成的反馈消息;
所述BMC接收到所述反馈消息后,BMC检测云平台所发送的CPU占有率和告警消息,如果依然存在告警,则返回执行所述BMC根据各个APP所绑定的物理CPU核的占有率确定待调节的物理CPU核以及调节比例的步骤。
为实现上述目的,按照本发明的一个方面,提供了一种云化网络系统,所述云化网络系统包括物理服务器、云平台、BMC和BIOS,其中,所述云平台运行在所述物理服务器上,所述虚拟机运行在所述云平台上,所述虚拟机上运行有多个APP;
当所述虚拟机的CPU占有率超过设定的阈值时,所述云平台用于向所述BMC发送告警消息;
所述BMC在接收到所述告警消息后,所述BMC用于触发所述物理服务器的操作系统执行BMC agent程序,获取所述虚拟机里各个APP所绑定的物理CPU核的占有率;所述BMC还用于根据各个APP所绑定的物理CPU核的占有率确定待调节的物理CPU核以及调节比例;
所述BIOS用于根据所述调节比例调节所述待调节的物理CPU核的电源状态,从而动态调节物理CPU核的主频,以消除告警,进而完成对虚拟机主频的调节。
优选地,每一物理CPU核对应N个电源状态,每一电源状态对应一个主频值,在通过调节物理CPU核的电源状态无法消除告警时,则所述BMC调节VRM芯片输出给物理CPU的电源信号的电流比例,提高每一个电源状态所对应的主频值,从而动态调节物理CPU核的主频,以消除告警,其中,电流比例越低,物理CPU核的主频越高。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:本发明提供一种云化网络下动态调节虚拟机主频的方法及系统,所述方法应用于云化网络系统,所述云化网络系统包括物理服务器、云平台、BMC和BIOS,其中,所述云平台运行在所述物理服务器上,所述虚拟机运行在所述云平台上,所述虚拟机上运行有多个APP,所述方法包括:当所述虚拟机的CPU占有率超过设定的阈值时,所述云平台向所述BMC发送告警消息;所述BMC在接收到所述告警消息后,触发所述物理服务器的操作系统执行BMCagent程序,获取所述虚拟机里各个APP所绑定的物理CPU核的占有率;所述BMC根据各个APP所绑定的物理CPU核的占有率确定待调节的物理CPU核以及调节比例;所述BIOS根据所述调节比例调节所述待调节的物理CPU核的电源状态,从而动态调节物理CPU核的主频,以消除告警,进而完成对虚拟机主频的调节。
在本发明中,云平台向BMC发出虚拟机处理能力不足的告警消息,BMC可以根据虚拟机内部的APP负载情况,通过BIOS调节相应物理CPU核的电源状态,从而动态调节虚拟机不同APP所对应的物理CPU核的主频,可以根据APP的负载情况,对APP所对应的物理CPU核进行动态调节和平衡,更好的利用物理服务器的处理能力,实现对虚拟机主频的动态调节功能。
附图说明
图1是本发明实施例提供的一种云化网络系统的结构示意图;
图2是本发明实施例提供的一种云化网络下动态调节虚拟机主频的方法。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
目前的云平台无法获取虚拟机的实时主频,同时无法获取虚拟机里多个APP的实时占有率和负载情况,因而虚拟机内的多个APP无法自动调节主频,从而平衡处理性能,同时在虚拟机配置不变的情况下,无法提升虚拟机的处理性能,从而影响了业务的处理能力,必须重启虚拟机,改变虚拟机的配置和APP的配置,才能提升虚拟机的处理性能,会对业务造成中断,并且需要更改应用APP的配置,无法做到软件的一致性,同时对于对CPU主频敏感的APP,无法彻底解决问题,同时对物理服务器的剩余资源有要求。
为解决前述问题,本实施例提供了一种云化网络下动态调节虚拟机主频的方法,首先参阅图1,图1提供了一种云化网络系统,所述云化网络系统包括物理服务器、云平台、BMC(Baseboard Manager Controller,简称BMC)和BIOS(Basic Input Output System,简写为BIOS),其中,所述云平台运行在所述物理服务器上,所述虚拟机运行在所述云平台上,所述虚拟机上运行有多个APP。
在本实施例中,当所述虚拟机的CPU占有率超过设定的阈值时,所述云平台用于向所述BMC发送告警消息;所述BMC在接收到所述告警消息后,所述BMC用于触发所述物理服务器的操作系统执行BMC agent程序,获取所述虚拟机里各个APP所绑定的物理CPU核的占有率,其中,所述BMC agent程序设置在操作系统(OS)中,所述BMC还用于根据各个APP所绑定的物理CPU核的占有率确定待调节的物理CPU核以及调节比例。其中,调节原则为:调高占有率高的物理CPU核的主频,调低占有率低的物理CPU核的主频。
所述BIOS用于根据所述调节比例调节所述待调节的物理CPU核的电源状态,从而动态调节物理CPU核的主频,以消除告警,进而完成对虚拟机主频的调节。
其中,每一物理CPU核对应N个电源状态,每一电源状态对应一个主频值,在通过调节物理CPU核的电源状态无法消除告警时,所述BMC还用于调节VRM芯片输出给物理CPU的电源信号的电流比例,提高每一个电源状态所对应的主频值,从而动态调节物理CPU核的主频,以消除告警,其中,电流比例越低,物理CPU核的主频越高。
基于图1的云化网络系统,本实施例提供一种云化网络下动态调节虚拟机主频的方法,该方法包括如下步骤:
步骤101:当所述虚拟机的CPU占有率超过设定的阈值时,所述云平台向所述BMC发送告警消息。
在本实施例中,云平台监测虚拟机的CPU占有率,并间隔性向BMC上报虚拟机的CPU占有率,当虚拟机里的CPU占有率查过设定的阈值时,云平台向BMC发送告警消息。
步骤102:所述BMC在接收到所述告警消息后,触发所述物理服务器的操作系统执行BMC agent程序,获取所述虚拟机里各个APP所绑定的物理CPU核的占有率。
在实际应用场景下,所述云平台启动虚拟机时,向所述虚拟机所对应的物理服务器的BMC上报虚拟机的唯一标识码、所述虚拟机的CPU绑核配置和APP绑核配置,其中,所述CPU绑核配置为虚拟CPU核和物理CPU核的绑定关系,所述APP绑核配置为APP与虚拟CPU核的绑定关系。
所述BMC在接收到所述告警消息后,触发所述物理服务器的操作系统执行BMCagent程序,获取各个物理CPU核的占有率;根据所述CPU绑核配置确定每一物理CPU核所对应的虚拟CPU核,并根据APP绑核确定每一虚拟CPU核所对应的APP,从而确定所述虚拟机里各个APP所绑定的物理CPU核的占有率。
步骤103:所述BMC根据各个APP所绑定的物理CPU核的占有率确定待调节的物理CPU核以及调节比例。
对于BMC而言,BMC实时监听云平台所发送的虚拟机的CPU占有率和告警消息,当接收到告警消息后,说明虚拟机的CPU处理能力已经不足,则触发所述物理服务器的操作系统执行BMC agent程序,获取所述虚拟机里各个APP所绑定的物理CPU核的占有率,根据各个APP所绑定的物理CPU核的占有率确定待调节的物理CPU核以及调节比例。
其中,在所述BMC根据各个APP所绑定的物理CPU核的占有率确定待调节的物理CPU核以及调节比例的过程中,调节原则为:调高占有率高的物理CPU核的主频,调低占有率低的物理CPU核的主频,从而对虚拟机内部的APP的处理能力不足进行动态调节和平衡,更好的利用物理服务器的处理能力,实现对虚拟机主频的动态调节功能。
步骤104:所述BIOS根据所述调节比例调节所述待调节的物理CPU核的电源状态,从而动态调节物理CPU核的主频,以消除告警。
其中,每一物理CPU核对应N个电源状态,每一电源状态对应一个主频值,举例而言,物理CPU核的电源状态,一般有P0到P14共15个状态,P0的主频最高,P14的主频最低,动态调节就是根据BMC下发的调节比例,选择合适的一个档位,选择不同的P-state(P0~P14)的值,从而动态配置物理CPU核的主频。
其中,每个物理CPU核均具有唯一的编号,BMC确定了需要调节的物理CPU核后,可以将待调节的物理CPU核的编号和相应的调节比例发送至BIOS。
所述BIOS根据所述调节比例调节所述待调节的物理CPU核的电源状态,从而动态调节物理CPU核的主频,以消除告警。
具体地,所述BIOS根据所述调节比例调节所述待调节的物理CPU核的电源状态,并向所述BMC发送调节完成的反馈消息;所述BMC接收到所述反馈消息后,BMC检测云平台所发送的CPU占有率和告警消息,如果依然存在告警,则返回执行步骤103,以消除告警。
在实际应用场景下,在通过调节物理CPU核的电源状态无法消除告警时,则需要进入VRM芯片调节IMON电流,其中,IMON是VRM芯片输出给CPU的一个电源输入信号,VRM芯片里有一个功能是控制输出给CPU电源的IMON信号的电流比例,电流比例默认是100%,也可以通过寄存器控制,将电流比例调节至95%,90%或者其它比例,电流比例越小,CPU的IMON检测值就越小,CPU的主频就会越高。其中,在调节了IMON电流后,P0~P14对应的主频值均会提高。
结合前述描述,在优选的实施例中,在按照电源状态对主频调节的过程中,在告警还未消除的情况下,所述BMC调节VRM芯片输出给物理CPU的电源信号的电流比例,提高每一个电源状态所对应的主频值,从而动态调节物理CPU核的主频,以消除告警,其中,电流比例越低,物理CPU核的主频越高。即,在通过调节物理CPU核的电源状态无法消除告警时,调小VRM芯片输出给物理CPU的电源信号的电流比例,提高每一个电源状态所对应的主频值,则物理CPU核的各个电源状态所对应的主频也会随之升高,达到动态调节物理CPU核的主频的目的,以消除告警。
举例而言,物理CPU核的电源状态,一般有P0到P14共15个状态,P0的主频最高,P14的主频最低,根据BMC下发的调节比例将物理CPU核的电源状态调到P0,此时告警仍未消除的话,再调小VRM芯片输出给物理CPU的电源信号的电流比例,电源状态P0~P14所对应的主频值均会随之升高,那么物理CPU核的在P14电源状态下的主频值也会随之升高,达到提高物理CPU核的主频的目的。
其中,所述BMC在调节VRM芯片输出给物理CPU的电源信号的电流比例的过程中,分别向BIOS查询调节前各个物理CPU核的主频值,并记录为第一主频值;向BIOS查询调节后各个物理CPU核的主频值,并记录为第二主频值;根据所述第一主频值、所述第二主频值和所述电流比例建立关联关系,以供后续调节电流比例时使用。其中,可以采用BIOS的Runtimeservice,直接对物理CPU核的主频进行上报和调节,不影响OS的功能,相比OS处理,效率更高,调节响应更快。
在主频调节的过程中,所述BMC还与记录相关的日志,可以给云平台运维或服务器运维人员可以通过日志查看所有服务器的当前负载情况和历史负载情况,从而为业务部署提供数据,从而让服务器的能耗和性能达到最优。
其中,BMC记录日志逻辑为:BMC记录云平台下发的虚拟机CPU占用率告警日志;BMC记录虚拟机对应的物理CPU核的占用率日志;BMC记录虚拟机CPU核对应的物理CPU核的主频;BMC记录云平台下发的虚拟机CPU占用率,供CPU处理能力不足预警算法使用;BMC会记录BIOS下发的无法内部调节CPU主频的消息到SEL日志;BMC会记录调节VRM芯片的最终电流比例。
进一步地,在通过调节物理CPU核的电源状态无法消除告警时,向BMC发送提升虚拟机极限主频的请求,由BMC更改虚拟机所在服务器的VRM芯片配置,提高物理服务器的主频,从而提高虚拟机的主频,在此过程中,业务不需要暂停和任何更改,对任何APP都适用,对虚拟机运行的物理服务器剩余资源没要求。
在本实施例中,云平台向BMC发出虚拟机处理能力不足的告警消息,BMC可以根据虚拟机内部的APP负载情况,通过BIOS调节相应物理CPU核的电源状态,从而动态调节虚拟机不同APP所对应的物理CPU核的主频,可以根据APP的负载情况,对APP所对应的物理CPU核进行动态调节和平衡,更好的利用物理服务器的处理能力,实现对虚拟机主频的动态调节功能。
在本实施例中,通过BMC和云平台之间增加接口,BMC可以主动获取虚拟机的配置,包括虚拟机的唯一标识码(UUID)、虚拟机所在的物理服务器,虚拟机的虚拟CPU核和APP的绑定关系,虚拟机的虚拟CPU核和物理服务器的物理CPU核的绑定关系,在云平台检测到虚拟机CPU处理能力不足的时候,主动向BMC发送告警消息,BMC通知BIOS进行虚拟机的主频调节,BIOS调节相应CPU核的P-state进行虚拟机主频调节,BMC向云平台发送通知,反复检测云平台的CPU占有率告警消息,将虚拟机的CPU主频调节到合适的状态,直到告警消除,同时记录相关的日志到BMC的日志存储模块,如果物理CPU的P-state调节依然无法满足的情况下,BMC通过调节服务器的VRM芯片的IMON电流比例,进一步调节虚拟机的主频,从而从物理服务器底层上进一步提高了调频的可靠性。
同时,本方案会根据云平台历史CPU占有率告警消息,BMC会提前对虚拟机主频进行均衡和调节,从而提前避免虚拟机主频不足对业务的影响,提高了服务器在云化网络下的应用智能化和业务可靠性。
本专利可以解决云化网络下,虚拟机内APP处理能力不足的问题,同时可以通过在不改变虚拟机配置,不暂停业务的同时,对虚拟机的内部主频进行监测和调节,调节高负载APP对应的主频,实现虚拟机内部的负载主频平衡,对虚拟机所在物理机的剩余资源没有任何要求。同时对虚拟机的多个APP对应的物理核的占用率和主频进行动态监控,调高占用率高的APP对应物理核的主频,调低占用率低的APP对应物理核的主频,从而对虚拟机内部的APP的处理能力不足进行动态调节和平衡,更好的利用物理服务器的处理能力,实现对虚拟机主频的动态调节功能。
实施例2:
基于前述实施例1,本实施例具体说明一下云化网络系统中各个单元的通信交互逻辑。
一、BMC和云平台之间的通信逻辑:
从云平台这一侧来说,云平台处理逻辑为:
(1)云平台启动虚拟机的时候,上报虚拟机的UUID给虚拟机运行的物理服务器的BMC;(2)云平台上报虚拟机的CPU绑核配置及APP绑核配置给BMC;(3)云平台间隔预设的时间上报虚拟机CPU占用率给BMC;(4)当虚拟机里CPU占有率超过云平台阈值的时候,向BMC发送阈值告警消息。
从BMC这一侧来说,BMC处理逻辑为:
(1)BMC监听云平台发送的虚拟机CPU占有率消息和阈值告警消息;(2)BMC通过虚拟机的CPU占有率和阈值告警信息,执行虚拟机CPU处理能力不足预警算法,进行预测(3)当BMC收到预警信息或预测到CPU处理能力不足的时候,执行BMC agent程序,获取虚拟机里不同APP绑定的物理CPU的占有率。
二、BMC和BIOS之间的通信逻辑:
从BMC这一侧来说,BMC处理逻辑为:(1)BMC获取APP对应的物理CPU核占有率后,执行调节物理CPU核的占有率算法,均衡不同APP对应物理核的主频,发送调节主频的物理CPU核编号和调节比例给BIOS(2)BIOS处理完调频操作后,向BMC发送调节完成消息;(3)BMC接收调节完成消息后,向云平台发送调节完成消息;(4)BMC检测云平台发送过来的CPU占有率消息和阈值告警消息,如果依然有告警,则回到步骤(1)继续执行;(5)如果BMC检测到BIOS发送已经无法调节主频消息,则停止该操作,并向云平台上报内部主频调节完毕消息,如果告警依然存在,则进入VRM调节IMON电流处理逻辑。
从BIOS这一侧来说,BIOS处理逻辑为:(1)BIOS接收BMC下发的调节CPU核的编号和调节比例;(2)BIOS执行调节物理CPU主频指令,动态调节P-state的值,动态调节主频;(3)BIOS向BMC发送调节完毕消息;(4)如果BIOS发现已经到了最高可以调节值,向BMC发送最大调节能力消息。
三、BMC和VRM芯片之间的通信逻辑:
(1)BMC收到BIOS无法调节消息后,向BIOS发送查询物理CPU核主频的消息,并记录此时主频1;(2)BMC通过SMBUS调节VRM芯片的寄存器,调节IMON的电流比例;(3)BMC再次向BIOS发送查询物理CPU核主频的消息;(4)BMC记录此时主频2;(5)BMC检测云平台发送的虚拟机CPU占有率和告警消息,如果告警消除,则停止VRM调节,否则继续到步骤(1),并记录此时的调节前后物理CPU主频和VRM的电流比例。
在本实施例中,可以在云平台检测到虚拟机VM的CPU占有率超过阈值的情况下,由服务器的BMC马上进行虚拟机CPU主频调节功能,实现虚拟机的CPU主频调节,同时可以持续检测云平台上报的VM的CPU占有率,自身可以检测到各个APP的占用率和对应物理核的主频,检测各个APP的由BMC对VM虚拟机的CPU处理能力不足进行预测,提前调节虚拟机主频,减少对虚拟机内部业务的影响,提升了虚拟机的处理智能化及性能。当虚拟机内部CPU主频调节功能依然不能满足的情况下,可以通过调节物理服务器电源芯片的VRM功能,进一步实现虚拟机主频的提升和调节,提高了可靠性。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。