CN114625544B - 基于虚拟机业务负载动态分配的内存气球管理方法和装置 - Google Patents
基于虚拟机业务负载动态分配的内存气球管理方法和装置 Download PDFInfo
- Publication number
- CN114625544B CN114625544B CN202210531776.0A CN202210531776A CN114625544B CN 114625544 B CN114625544 B CN 114625544B CN 202210531776 A CN202210531776 A CN 202210531776A CN 114625544 B CN114625544 B CN 114625544B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- memory
- target virtual
- target
- throughput rate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于虚拟机业务负载动态分配的内存气球管理方法和装置,本发明方法包括获取目标虚拟机上的业务应用在当前周期k的吞吐率t k ;当目标虚拟机在当前周期k处于过载状态时,若吞吐率t k 小于业务程序的目标吞吐率t ref 成立,则增大目标虚拟机在下个周期k+1的内存资源分配量n k+1,并利用内存气泡机制,基于下个周期k+1的内存资源分配量n k+1增大下个周期k+1的内存资源分配量。本发明采用动态分配的方式为多个虚拟机分配内存资源,能够在云计算场景中使用基于业务负载动态分配的内存气球管理,能够提升物理服务器的虚拟机集成度,保障物理服务器上虚拟机集合对外提供服务的服务质量,降低单个虚拟机的成本。
Description
技术领域
本发明属于虚拟机技术,具体涉及一种基于虚拟机业务负载动态分配的内存气球管理方法和装置。
背景技术
虚拟机技术是指在物理服务器上,将一个服务器虚拟成多组独立的虚拟服务器,为多个独立的操作系统提供虚拟运行环境。虚拟机技术的核心是虚拟机监控器,虚拟机监控器对物理服务器上运行的多个虚拟机进行管理和调度,可抽象、监控与管理多个虚拟机实例,使同一台物理服务器上可以独立地、互不冲突地运行多个虚拟机。虚拟化技术和云计算技术的结合带来了全新的资源整合和使用模式,虚拟化技术提供的资源按需分配与调度能力,可以提高云计算资源的利用率,提升云计算服务的服务质量,并且可以提供高可用、负载均衡等增值服务,并降低云计算中心租户的总体拥有成本。但是,当多个虚拟机部署在物理服务器的时候,物理服务器的资源分配效率成为影响服务器使用效率的重要问题。
当前影响虚拟机计算效率的最主要两类资源是:CPU资源和内存资源。本专利聚焦于内存资源的管理和分配,既通过高效的内存复用提高内存的使用效率。虚拟化平台下内存复用主要方向包括:(1)增加内存的共享度,提升单位页面的数据量,如以KSM技术为基础的基于内容的页面共享技术,页面压缩和页面补丁技术等;(2)通过释放空闲内存资源来达到资源优化部署的目,例如内存气球技术。此外,交换内存(swap memory)技术通过把内存页面保存到慢速磁盘设备上提高内存资源的实用效率,该技术对提高物理机和虚拟机的内存使用效率都有帮助。
在云计算场景中,虚拟机中通常会运行业务程序,业务程序主要为终端用户提供基于网络的服务。例如,web服务器,ftp服务器,数据库服务器等。这些典型的服务类应用的业务负载随着时间是动态变化的,而且是随着用户需求数量而动态变化。为了满足一定的服务质量,这些服务器通常会预定义一个指标来表示业务程序的服务质量,例如吞吐率,定义为每秒完成的请求数(Request-per-second,简称rps),而内存资源是影响虚拟机性能的重要因素。因此,为了保证虚拟机上运行的业务程序的服务器质量,云平台需要保证虚拟机的内存资源的分配。当一个物理服务器上运行多个虚拟机时,就需要在多个虚拟机中动态的分配内存资源,使得每个虚拟机都满足其预定义的服务器质量。
美国专利文献(US8359451B2)《Management of host physical memoryallocation to virtual machines with a balloon application》提出了一种基于balloon application的物理机内存管理方法,但是没有考虑多个虚拟机之间的协调内存分配策略。美国专利文献(US9529611B2)《Cooperative memory resource management viaapplication-level balloon》面向Java虚拟机场景,提出了基于application-levelballoon的内存气球管理策略,但该策略并不适合虚拟机场景。中国专利文献(CN109684042A)《一种虚拟化平台中虚拟机内存动态调整的方法》公开了一种虚拟化平台中虚拟机内存动态调整的方法,该方法判断目标虚拟机是否运行特殊重要业务;如是,不对所述目标虚拟机运行气球内存技术释放内存。但是,该专利优化的目标仅是运行关键业务的虚拟机,而不是运行在物理服务器上的所有虚拟机,因此使用场景有限。中国专利文献(CN106598697A)《一种虚拟机的虚拟内存动态调配方法》提供一种虚拟机的虚拟内存动态调配的方法,该方法根据各虚拟机的不同内存使用率,采用内存气球技术,配合内存调配算法,实现了虚拟机内存的动态调配。但是该方法的判断依据是内存资源的使用效率,而不是业务程序的吞吐率,因此,存在资源分配不平衡的问题。综上所述,当前未见有基于虚拟机业务负载动态分配的内存气球管理方法。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于虚拟机业务负载动态分配的内存气球管理方法和装置,本发明采用动态分配的方式为多个虚拟机分配内存资源,目的是让在一个物理服务器上运行的多个虚拟机可以高效地、协调分配内存资源,能够在云计算场景中使用基于业务负载动态分配的内存气球管理,能够提升物理服务器的虚拟机集成度,保障物理服务器上虚拟机集合对外提供服务的服务质量,降低单个虚拟机的成本。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于虚拟机业务负载动态分配的内存气球管理方法,包括:
获取目标虚拟机上的业务应用在当前周期k的吞吐率t k ;
判断目标虚拟机在当前周期k是否处于过载状态,当目标虚拟机在当前周期k处于过载状态时,若目标虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 成立,则增大目标虚拟机在下个周期k+1的内存资源分配量n k+1;
利用内存气泡机制,基于下个周期k+1的内存资源分配量n k+1增大目标虚拟机在下个周期k+1的内存资源分配量。
可选地,所述增大目标虚拟机在下个周期k+1的内存资源分配量n k+1的函数表达式为:
上式中,n k+1为目标虚拟机在下个周期k+1的内存资源分配量,n k 为目标虚拟机在当前周期k的内存资源分配量,δ 1为权重系数,t ref 为业务程序的目标吞吐率,t k 为目标虚拟机上的业务应用在当前周期k的吞吐率。
可选地,所述判断目标虚拟机在当前周期k是否处于过载状态是指:获取目标虚拟机在当前周期的虚拟机内存资源使用量m k 、目标虚拟机在当前周期的内存气球大小n k 之间的比值m k /n k ,若m k /n k 等于1,则判定目标虚拟机在当前周期k处于过载状态。
可选地,所述目标虚拟机在当前周期的虚拟机内存资源使用量m k 的获取方法包括:判断目标虚拟机在当前周期是否使用交换内存,若使用交换内存,则通过释放内存命令得到系统当前使用的内存数量作为目标虚拟机在当前周期的虚拟机内存资源使用量m k ;若未使用交换内存,则通过释放内存命令得到系统当前使用的内存数量作为目标虚拟机在当前周期的虚拟机内存资源使用量m k 。
可选地,还包括当目标虚拟机在当前周期k处于非过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于等于业务程序的目标吞吐率t ref 不成立,则减少目标虚拟机在下个周期k+1的内存资源分配量n k+1。
可选地,所述减少目标虚拟机在下个周期k+1的内存资源分配量n k+1的函数表达式为:
上式中,n k+1为目标虚拟机在下个周期k+1的内存资源分配量,n k 为目标虚拟机在当前周期k的内存资源分配量,δ 2为权重系数,t ref 为业务程序的目标吞吐率,t k 为目标虚拟机上的业务应用在当前周期k的吞吐率。
可选地,所述判断目标虚拟机在当前周期k是否处于过载状态时,还包括在目标虚拟机处于过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 不成立,则保持目标虚拟机在下个周期k+1的内存资源分配量n k+1不变;在目标虚拟机处于非过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于等于业务程序的目标吞吐率t ref 成立,则保持目标虚拟机在下个周期k+1的内存资源分配量n k+1不变。
此外,本发明还提供一种基于虚拟机业务负载动态分配的内存气球管理装置,包括:
资源监控程序模块,用于获取目标虚拟机上的业务应用在当前周期k的吞吐率t k ;
资源预测程序模块,用于判断目标虚拟机在当前周期k是否处于过载状态,当目标虚拟机在当前周期k处于过载状态时,若目标虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 成立,则增大目标虚拟机在下个周期k+1的内存资源分配量n k+1;
内存资源管理程序模块,用于利用内存气泡机制,基于下个周期k+1的内存资源分配量n k+1增大目标虚拟机在下个周期k+1的内存资源分配量。
此外,本发明还提供一种基于虚拟机业务负载动态分配的内存气球管理装置,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行所述基于虚拟机业务负载动态分配的内存气球管理方法的步骤。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序用于被微处理器执行以实施所述基于虚拟机业务负载动态分配的内存气球管理方法的步骤。
和现有技术相比,本发明具有下述优点:
1、本发明包括判断目标虚拟机在当前周期k是否处于过载状态,当目标虚拟机在当前周期k处于过载状态时,若目标虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 成立,则增大目标虚拟机在下个周期k+1的内存资源分配量n k+1;利用内存气泡机制,基于下个周期k+1的内存资源分配量n k+1增大目标虚拟机在下个周期k+1的内存资源分配量,通过采用动态分配的方式,为多个虚拟机分配内存资源,目的是让在一个物理服务器上运行的多个虚拟机可以高效地、协调分配内存资源,能够在云计算场景中使用基于业务负载动态分配的内存气球管理,能够提升物理服务器的虚拟机集成度,保障物理服务器上虚拟机集合对外提供服务的服务质量,降低单个虚拟机的成本。
2、本发明既可以针对单个虚拟机进行管理,也可以针对物理服务器上的多个虚拟机进行批量管理。
附图说明
图1为本发明实施例方法的关键流程示意图。
图2为本发明实施例方法的基本流程示意图。
图3为本发明实施例方法应用于多个虚拟机的流程示意图。
图4为本发明实施例系统的结构示意图。
图5为本发明实施例中资源预测程序模块的工作流程示意图。
具体实施方式
下面通过附图,对本发明的实施方案给出进一步的详细阐述。为了便于说明,本实施例中假设虚拟机的业务应用为数据库服务应用,数据库服务类应用的特点是对占用内存较多,内存容量对数据库的性能影响较大。因此,假设本实施方案的虚拟机中都安装了MySQL或者MarialDB(一种开源的数据库)。需要说明的,本发明不依赖于具体的业务应用。
参见图1,本实施例基于虚拟机业务负载动态分配的内存气球管理方法包括:
获取目标虚拟机上的业务应用在当前周期k的吞吐率t k ;
判断目标虚拟机在当前周期k是否处于过载状态,当目标虚拟机在当前周期k处于过载状态时,若目标虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 成立,则增大目标虚拟机在下个周期k+1的内存资源分配量n k+1;
利用内存气泡机制,基于下个周期k+1的内存资源分配量n k+1增大目标虚拟机在下个周期k+1的内存资源分配量。其中,内存气泡机制为现有内存复用技术,其实现方式为虚拟机监控器(VMM)通过挤压其他虚拟机的内存,把内存释放给内存使用率较高的目标虚拟机,从而达到增大目标虚拟机在下个周期k+1的内存资源分配量的目的。
本实施例中,增大目标虚拟机在下个周期k+1的内存资源分配量n k+1的函数表达式为:
上式中,n k+1为目标虚拟机在下个周期k+1的内存资源分配量,n k 为目标虚拟机在当前周期k的内存资源分配量,δ 1为权重系数,t ref 为业务程序的目标吞吐率,t k 为目标虚拟机上的业务应用在当前周期k的吞吐率。
本实施例中,判断目标虚拟机在当前周期k是否处于过载状态是指:获取目标虚拟机在当前周期的虚拟机内存资源使用量m k 、目标虚拟机在当前周期的内存气球大小n k 之间的比值m k /n k ,若m k /n k 等于1,则判定目标虚拟机在当前周期k处于过载状态。
本实施例中,目标虚拟机在当前周期的虚拟机内存资源使用量m k 的获取方法包括:判断目标虚拟机在当前周期是否使用交换内存,若使用交换内存,则通过释放内存命令(free)得到系统当前使用的内存数量(free.total_memory)作为目标虚拟机在当前周期的虚拟机内存资源使用量m k ;若未使用交换内存,则通过释放内存命令(free)得到系统当前使用的内存数量(free.total_memory)作为目标虚拟机在当前周期的虚拟机内存资源使用量m k 。
参见图2,本实施例中还包括当目标虚拟机在当前周期k处于非过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于等于业务程序的目标吞吐率t ref 不成立,则减小目标虚拟机在下个周期k+1的内存资源分配量n k+1。
本实施例中,减小目标虚拟机在下个周期k+1的内存资源分配量n k+1的函数表达式为:
上式中,n k+1为目标虚拟机在下个周期k+1的内存资源分配量,n k 为目标虚拟机在当前周期k的内存资源分配量,δ 2为权重系数,t ref 为业务程序的目标吞吐率,t k 为目标虚拟机上的业务应用在当前周期k的吞吐率。
参见图2,本实施例中判断目标虚拟机在当前周期k是否处于过载状态时,还包括在目标虚拟机处于过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 不成立,则保持目标虚拟机在下个周期k+1的内存资源分配量n k+1不变;在目标虚拟机处于非过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于等于业务程序的目标吞吐率t ref 成立,则保持目标虚拟机在下个周期k+1的内存资源分配量n k+1不变。
需要说明的,本实施例中的目标虚拟机是物理服务器上的一个虚拟机,其既可以是特定的单个虚拟机,即针对特定的单个虚拟机来应用本实施例方法,此外也可以是任何虚拟机,即针对物理服务器上所有虚拟机来应用本实施例方法。当针对物理服务器上所有虚拟机来应用本实施例方法,其流程图如图3所示,参见图3可知,其与单个虚拟机的处理方法基本相同,具体区别为包含了多个虚拟机的处理,包括遍历或并行处理等。
综上所述,本实施例基于虚拟机业务负载动态分配的内存气球管理方法首先,以时间周期为单位监控服务器上所有虚拟机的资源占用情况:包括:内存资源的占用情况、虚拟机上业务程序的吞吐率。其次,根据监控信息,以虚拟机上业务程序的目标吞吐率为目标,调整下一个周期各个虚拟机的内存资源的请求量。再次,根据各个虚拟机的内存资源请求量,在资源综合管理层,综合决策下个周期的内存资源的分配量。最后,根据各个虚拟机内存资源分配量,利用内存气泡机制,给各个虚拟机分配内存资源。本实施例基于虚拟机业务负载动态分配的内存气球管理方法通过采用动态分配的方式,为多个虚拟机分配内存资源,目的是让在一个物理服务器上运行的多个虚拟机可以高效地、协调分配内存资源,能够在云计算场景中使用基于业务负载动态分配的内存气球管理,能够提升物理服务器的虚拟机集成度,保障物理服务器上虚拟机集合对外提供服务的服务质量,降低单个虚拟机的成本。本实施例基于虚拟机业务负载动态分配的内存气球管理方法既可以针对单个虚拟机进行管理,也可以针对物理服务器上的多个虚拟机进行批量管理。
此外,本实施例还提供一种基于虚拟机业务负载动态分配的内存气球管理装置,包括:
资源监控程序模块,用于获取目标虚拟机上的业务应用在当前周期k的吞吐率t k ;
资源预测程序模块,用于判断目标虚拟机在当前周期k是否处于过载状态,当目标虚拟机在当前周期k处于过载状态时,若目标虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 成立,则增大目标虚拟机在下个周期k+1的内存资源分配量n k+1;
内存资源管理程序模块,用于利用内存气泡机制,基于下个周期k+1的内存资源分配量n k+1增大目标虚拟机在下个周期k+1的内存资源分配量。参见图4,本实施例中,内存资源管理程序模块具体为利用物理服务器上裸机操作系统中现有的运行资源决策模块和资源分配模块来实现的。
图4以一个物理服务器为例子说明了本实施例中基于虚拟机业务负载动态分配的内存气球管理装置的各个关键模块的关系。架构图的最下面是一个物理服务器,本发明不假设任何服务器的架构,所以服务器可以是传统的x86服务器,也可以是arm、mips、loongarch等架构服务器。在服务器上运行云操作系统或者服务器操作系统,要求操作系统内核需要打开KVM(kernel virtual machine)的支持,目前主流的云计算平台都是给予kvm技术研发虚拟化技术。在操作系统内核之上,运行了多个系统服务和多个虚拟机实例:虚拟机1、虚拟机2、…、虚拟机N。系统的系统服务我们只列举了和内存管理相关的服务,包括:资源决策模块、资源分配模块,这两个现有模块构成了内存资源管理程序模块。此外,虚拟化服务、云网络服务、云存储服务等也是对云操作系统不可或缺的,但是这些服务和内存管理关联性不强,就没有列举。在每个虚拟机实例中,除了业务应用外,都运行资源监控程序模块和资源预测程序模块。在裸机环境的系统中,运行资源决策模块和资源分配模块。需要说明的是,资源决策模块和资源分配模块仅仅是本实施例中内存资源管理程序模块的一种实现方式,此外本实施例中的内存资源管理程序模块也可以根据需要采用其他基于内存气泡机制的内存管理策略或方式。
资源监控程序模块的功能是监控虚拟机的运行状态信息,包括:内存资源的占用情况、虚拟机上业务程序的吞吐率。资源监控以周期为单位,每个周期结束的时候监控关心的指标。指标定义和描述如下:假设n k 是当前周期的虚拟机内存资源分配量,n k+1是下个周期的虚拟机内存资源分配量,m k 是当前周期的虚拟机内存资源使用量,t ref 是虚拟机上业务应用的目标吞吐率,t k 是虚拟机上业务应用在当前周期的吞吐率。每个周期结束的时候,资源监控程序模块需要通过监控获得m k 和t k 。m k 可以通过free命令在系统中获取,获取公式如下:
其中free.used_memory是释放内存命令(free)得到系统当前使用的内存数量;若系统本周期使用了交换内存,就认为系统在运行过程中使用到了全部内存,m k =free.total_memory,通常n k =free.total_memory,因此,此时m k =n k ;否则若系统本周期未使用交换内存,则m k =free.used_memory。获取t k 需要在业务应用的API接口除加入性能统计计数器,对于MySQL和MarialDB这类程序的软件,本身已经自带性能统计接口,因此,资源监控程序模块只需要调用相应的接口,就可以获得t k 。资源监控程序模块得到m k 和t k ,就把m k 和t k 传给资源预测程序模块。需要说明的是,对于在业务应用的API接口加入性能统计计数器为公知方法,其详细实现在此不再展开说明。
参见图5,资源预测程序模块判断目标虚拟机在当前周期k是否处于过载状态:获取目标虚拟机在当前周期的虚拟机内存资源使用量m k 、目标虚拟机在当前周期的内存气球大小n k 之间的比值m k /n k ,若m k /n k 等于1,则判定目标虚拟机在当前周期k处于过载状态。若m k /n k 小于1,则认为虚拟机没有使用完所分配的内存,虚拟机处于轻载状态。
当虚拟机处于过载状态时,需要判断目标虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 是否成立,当t k <t ref 成立时,说明虚拟机内存不足,且虚拟机上的业务应用吞吐率小于预期,需要给虚拟机增加内存,下个周期虚拟机需要得到的内存为:
当t k <t ref 不成立时,说明虚拟机内存虽然不足,但是虚拟机上的业务应用吞吐率符合预期,此时虚拟机的下个周期的内存应该不变,即:
n k+1=n k 。
当虚拟机处于轻载状态,需要判断t k ≤t ref 的关系,当t k ≤t ref 成立时,说明外界输入的请求数量不足,在本周期,暂时不改变虚拟机内存的分配,即:
n k+1=n k 。
当t k ≤t ref 不成立时,说明虽然虚拟机处于轻载状态,但是业务应用的性能超出了预期,说明可以在满足业务应用服务质量的前提下,适当减少虚拟机的内存,即:
当每个虚拟机内的资源预测模块资源预测程序模块都预测出本虚拟机下个周期的内存占用值n k+1后,都把各自的n k+1传递给资源决策模块。资源决策模块把物理服务器上多个虚拟机内存资源分配问题简化成背包问题,采用贪心策略进行分配。系统内存总的需求量超出了服务器物理内存大小的时候,可以采用热迁移技术把虚拟机迁移到负载交轻的服务器上。资源决策模块计算出每个虚拟机的实际分配内存n k+1后,把n k+1传给资源分配模块,资源分配模块利用内存气泡机制,给各个虚拟机分配内存资源。具体方法为,当需要给虚拟机增大分配内存,就把内存气球的容量降低,当需要让虚拟机减少内存分配,就把内存气球的容量提高。本实施例通过动态监控当前周期各个虚拟机的内存占用情况、各个虚拟机的业务应用吞吐率,以当前虚拟机的内存占用情况、当前虚拟机的业务应用的吞吐率为输入,以目标业务程序的吞吐率为优化目标,动态计算虚拟机在下个周期的预期内存占用量,资源决策模块综合分析物理服务器上各个虚拟机的内存资源需求量和物理服务器上内存资源的占用情况,综合决策下个周期的内存资源的分配量。最后,由资源分配模块给各个虚拟机分配内存资源。该方法的优点是:可以让一个物理服务器上所有虚拟机协同、动态使用内存资源,具有较好的稳定性,并且保证服务质量,此外,该方法可以给不同的虚拟机赋予不同的优先级,在资源决策过程中优先保障高优先级虚拟机的内存资源分配。
此外,本实施例还提供一种基于虚拟机业务负载动态分配的内存气球管理装置,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行所述基于虚拟机业务负载动态分配的内存气球管理方法的步骤。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序用于被微处理器执行以实施所述基于虚拟机业务负载动态分配的内存气球管理方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种基于虚拟机业务负载动态分配的内存气球管理方法,其特征在于,包括:
获取目标虚拟机上的业务应用在当前周期k的吞吐率t k ;
判断目标虚拟机在当前周期k是否处于过载状态,当目标虚拟机在当前周期k处于过载状态时,若目标虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 成立,则增大目标虚拟机在下个周期k+1的内存资源分配量n k+1,且增大目标虚拟机在下个周期k+1的内存资源分配量n k+1的函数表达式为:
上式中,n k+1为目标虚拟机在下个周期k+1的内存资源分配量,n k 为目标虚拟机在当前周期k的内存资源分配量,δ 1为权重系数,t ref 为业务程序的目标吞吐率,t k 为目标虚拟机上的业务应用在当前周期k的吞吐率;当目标虚拟机在当前周期k处于非过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于等于业务程序的目标吞吐率t ref 不成立,则减少目标虚拟机在下个周期k+1的内存资源分配量n k+1,且减少目标虚拟机在下个周期k+1的内存资源分配量n k+1的函数表达式为:
上式中,n k+1为目标虚拟机在下个周期k+1的内存资源分配量,n k 为目标虚拟机在当前周期k的内存资源分配量,δ 2为权重系数,t ref 为业务程序的目标吞吐率,t k 为目标虚拟机上的业务应用在当前周期k的吞吐率;在目标虚拟机处于过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 不成立,则保持目标虚拟机在下个周期k+1的内存资源分配量n k+1不变;在目标虚拟机处于非过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于等于业务程序的目标吞吐率t ref 成立,则保持目标虚拟机在下个周期k+1的内存资源分配量n k+1不变;
利用内存气泡机制,基于下个周期k+1的内存资源分配量n k+1增大、减小或保持目标虚拟机在下个周期k+1的内存资源分配量。
2.根据权利要求1所述的基于虚拟机业务负载动态分配的内存气球管理方法,其特征在于,所述判断目标虚拟机在当前周期k是否处于过载状态是指:获取目标虚拟机在当前周期的虚拟机内存资源使用量m k 、目标虚拟机在当前周期的内存气球大小n k 之间的比值m k /n k ,若m k /n k 等于1,则判定目标虚拟机在当前周期k处于过载状态。
3.根据权利要求2所述的基于虚拟机业务负载动态分配的内存气球管理方法,其特征在于,所述目标虚拟机在当前周期的虚拟机内存资源使用量m k 的获取方法包括:判断目标虚拟机在当前周期是否使用交换内存,若使用交换内存,则将系统的全部内存数量作为目标虚拟机在当前周期的虚拟机内存资源使用量m k ;若未使用交换内存,则通过释放内存命令得到系统当前使用的内存数量作为目标虚拟机在当前周期的虚拟机内存资源使用量m k 。
4.一种基于虚拟机业务负载动态分配的内存气球管理装置,其特征在于,包括:
资源监控程序模块,用于获取目标虚拟机上的业务应用在当前周期k的吞吐率t k ;
资源预测程序模块,用于判断目标虚拟机在当前周期k是否处于过载状态,当目标虚拟机在当前周期k处于过载状态时,若目标虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 成立,则增大目标虚拟机在下个周期k+1的内存资源分配量n k+1,且增大目标虚拟机在下个周期k+1的内存资源分配量n k+1的函数表达式为:
上式中,n k+1为目标虚拟机在下个周期k+1的内存资源分配量,n k 为目标虚拟机在当前周期k的内存资源分配量,δ 1为权重系数,t ref 为业务程序的目标吞吐率,t k 为目标虚拟机上的业务应用在当前周期k的吞吐率;当目标虚拟机在当前周期k处于非过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于等于业务程序的目标吞吐率t ref 不成立,则减少目标虚拟机在下个周期k+1的内存资源分配量n k+1,且减少目标虚拟机在下个周期k+1的内存资源分配量n k+1的函数表达式为:
上式中,n k+1为目标虚拟机在下个周期k+1的内存资源分配量,n k 为目标虚拟机在当前周期k的内存资源分配量,δ 2为权重系数,t ref 为业务程序的目标吞吐率,t k 为目标虚拟机上的业务应用在当前周期k的吞吐率;在目标虚拟机处于过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于业务程序的目标吞吐率t ref 不成立,则保持目标虚拟机在下个周期k+1的内存资源分配量n k+1不变;在目标虚拟机处于非过载状态时,若虚拟机上业务应用在当前周期的吞吐率t k 小于等于业务程序的目标吞吐率t ref 成立,则保持目标虚拟机在下个周期k+1的内存资源分配量n k+1不变;
内存资源管理程序模块,用于利用内存气泡机制,基于下个周期k+1的内存资源分配量n k+1增大、减小或保持目标虚拟机在下个周期k+1的内存资源分配量。
5.一种基于虚拟机业务负载动态分配的内存气球管理装置,包括相互连接的微处理器和存储器,其特征在于,该微处理器被编程或配置以执行权利要求1~3中任意一项所述基于虚拟机业务负载动态分配的内存气球管理方法的步骤。
6.一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其特征在于,该计算机程序用于被微处理器执行以实施权利要求1~3中任意一项所述基于虚拟机业务负载动态分配的内存气球管理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210531776.0A CN114625544B (zh) | 2022-05-17 | 2022-05-17 | 基于虚拟机业务负载动态分配的内存气球管理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210531776.0A CN114625544B (zh) | 2022-05-17 | 2022-05-17 | 基于虚拟机业务负载动态分配的内存气球管理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114625544A CN114625544A (zh) | 2022-06-14 |
CN114625544B true CN114625544B (zh) | 2022-08-30 |
Family
ID=81907225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210531776.0A Active CN114625544B (zh) | 2022-05-17 | 2022-05-17 | 基于虚拟机业务负载动态分配的内存气球管理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114625544B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9910768B1 (en) * | 2016-05-23 | 2018-03-06 | Parallels IP Holdings GmbH | Method for memory management for virtual machines |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010127365A1 (en) * | 2009-05-01 | 2010-11-04 | Citrix Systems, Inc. | Systems and methods for establishing a cloud bridge between virtual storage resources |
CN101593134B (zh) * | 2009-06-29 | 2012-05-30 | 北京航空航天大学 | 虚拟机cpu资源分配方法和装置 |
CN102004671B (zh) * | 2010-11-15 | 2013-03-13 | 北京航空航天大学 | 一种云计算环境下数据中心基于统计模型的资源管理方法 |
CN102567077B (zh) * | 2011-12-15 | 2014-08-13 | 杭州电子科技大学 | 一种基于博弈论的虚拟化资源分配方法 |
CN109684042A (zh) * | 2018-12-27 | 2019-04-26 | 郑州云海信息技术有限公司 | 一种虚拟化平台中虚拟机内存动态调整的方法 |
-
2022
- 2022-05-17 CN CN202210531776.0A patent/CN114625544B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9910768B1 (en) * | 2016-05-23 | 2018-03-06 | Parallels IP Holdings GmbH | Method for memory management for virtual machines |
Non-Patent Citations (1)
Title |
---|
基于虚拟计算环境的内存资源弹性分配研究;张鹏飞;《中国优秀硕士学位论文全文数据库》;20120315;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114625544A (zh) | 2022-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10185592B2 (en) | Network storage device using dynamic weights based on resource utilization | |
EP3254196B1 (en) | Method and system for multi-tenant resource distribution | |
US11231955B1 (en) | Dynamically reallocating memory in an on-demand code execution system | |
JP5939740B2 (ja) | 動的にリソースを割り当てる方法、システム及びプログラム | |
US7945913B2 (en) | Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system | |
EP2863304B1 (en) | Allocation method for central processing unit resources and computation node | |
JP5680619B2 (ja) | 優先度ベースのシステム負荷レベルを管理するためのシステムおよび方法 | |
US9529642B2 (en) | Power budget allocation in a cluster infrastructure | |
US20140082202A1 (en) | Method and Apparatus for Integration of Virtual Cluster and Virtual Cluster System | |
US20120011254A1 (en) | Network-aware virtual machine migration in datacenters | |
JP2005534116A (ja) | 複数の消費者をもつコンピュータシステムで資源を動的に割当てて管理する方法 | |
CN110677499A (zh) | 一种云资源管理应用系统 | |
US11936568B2 (en) | Stream allocation using stream credits | |
KR20100074920A (ko) | 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법 | |
CN108073457B (zh) | 一种超融合基础架构的分层资源管理方法、装置及系统 | |
Qin | Performance comparisons of load balancing algorithms for I/O-intensive workloads on clusters | |
CN113010309B (zh) | 集群资源调度方法、装置、存储介质、设备和程序产品 | |
KR20180096310A (ko) | 성능 제어 방법 및 이를 위한 장치 | |
CN107423114B (zh) | 一种基于服务分类的虚拟机动态迁移方法 | |
CN111190719A (zh) | 优化集群资源分配的方法、装置、介质及电子设备 | |
CN114625544B (zh) | 基于虚拟机业务负载动态分配的内存气球管理方法和装置 | |
CN112954012A (zh) | 基于负载的改进模拟退火算法的云任务调度方法 | |
CN109144664B (zh) | 一种基于用户服务质量需求差异的虚拟机动态迁移方法 | |
Du et al. | A combined priority scheduling method for distributed machine learning | |
CN111104203A (zh) | 虚拟机分散调度方法、装置以及电子设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |