CN103365700B - 一种面向云计算虚拟化环境的资源监测和调整系统 - Google Patents
一种面向云计算虚拟化环境的资源监测和调整系统 Download PDFInfo
- Publication number
- CN103365700B CN103365700B CN201310264975.0A CN201310264975A CN103365700B CN 103365700 B CN103365700 B CN 103365700B CN 201310264975 A CN201310264975 A CN 201310264975A CN 103365700 B CN103365700 B CN 103365700B
- Authority
- CN
- China
- Prior art keywords
- memory
- virtual machine
- domu
- resource
- vcpu
- 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.)
- Expired - Fee Related
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及一种面向云计算虚拟化环境的资源监测和调整系统,包括资源信息监测模块和资源调整模块;资源信息监测模块从Xenstore获取虚拟机的静态配置信息,通过Xen?Hypervisor获取动态资源信息,从各个DomU上获取资源详细使用信息;资源调整模块包括内存资源调整模块和VCPU资源调整模块,内存资源调整模块提供了内存调整接口,通过按需调整策略或基于平均内存利用率的托管调整策略对内存资源进行调整,VCPU资源调整模块提供了VCPU调整接口,调用Xen?Hypervisor的热插拔模块对VCPU资源进行调整;该系统不仅能实时地监测各虚拟机的资源利用状况,而且可以对多种虚拟机资源进行调整。
Description
技术领域
本发明涉及虚拟机资源监控技术领域,特别是一种基于Xen虚拟机的面向云计算虚拟化环境的资源监测和调整系统。
背景技术
随着云计算的快速发展,虚拟化技术的应用范围越来越广。服务器整合是其一个重要的应用场景,通过在服务器上安装虚拟机,整合各类分散资源,使服务器的资源得到最大限度的利用,降低资源成本开销,减少企业运营成本。服务器整合通常是在一台物理服务器上部署多层服务来实现的,而不同的服务运行在不同的虚拟机中,所执行的任务也各不相同,这就造成了资源需求方面的差异。例如有些运行复杂任务的虚拟机可能需要较多的资源才能提供更好的服务,而有些执行轻便任务的虚拟机只需较少的资源便可提供优质的服务。如果给执行轻便任务的虚拟机分配与执行复杂任务的虚拟机一样多的资源,在执行轻便任务虚拟机这个层面来说就会造成资源的浪费,在执行复杂任务虚拟机这个层面来说就会出现资源不足,导致不能提供优质服务。
虚拟化技术在带来众多好处的同时,各类问题也日益突出,例如虚拟机资源的管理和监控。随着科学技术的发展,计算机系统拥有的资源也越来越多,如何有效快速地管理和控制这些资源成为一个亟待解决的问题。在虚拟化环境中,调度器掌控着资源的分配和调度工作,其对大多数资源的分配只考虑了资源的共享,而忽略了应用程序的紧迫性和优先级,这种分配方式具有一定的盲目性。传统的资源分配方式是固定的,而虚拟化环境下资源的需求往往是动态变化的,这样势必会造成资源的浪费。故必须提供一种能在用户态对虚拟机底层资源进行监测和调整的手段。为了快速有效地管理虚拟硬件资源,提高资源的利用率,需要实时地获取各虚拟机的资源使用状况,为管理员提供可靠的资源监测与调控的数据依据。因此,需要一种高效的监控系统来监测各虚拟机的资源消耗情况,并能够对资源进行再分配。
目前,已有一些学者在虚拟机的资源监测和调整方面作了研究,也产生了一些极具应用价值的商业产品或开源软件。
Xenstore是一个类似于数据库用于多个Domain间共享数据的存储系统,其以键值对的形式存放于/var/lib/xenstored中,同时具有树形目录类似的层次结构,存储了本地虚拟化平台的虚拟机信息,包括每一个虚拟机的配置信息。Dom0作为特权虚拟机,能够访问整个目录结构,而DomU只能查询与自身相关的信息。在Dom0中,读取Xenstore中的数据就能够获得各个虚拟机原始的资源配置信息。应用程序可以通过写Xenstore中的键值来配置各虚拟机,设置在该键值上的监视器会感知到该键值的改变,进而触发绑定在该键值上的回调函数做出相应的回应。
Xentop是Xen虚拟机为管理员提供的一款运行在用户态的性能监控工具,其运行在Dom0上,能够以连续更新的方式对所有虚拟机的内存、VCPU等资源占用信息进行监控,管理员可以为Xentop设定更新频率,使其按设定的频率监控虚拟机的资源。虽然其能监测虚拟机的资源消耗,但是其只能监控当前的资源消耗,不能有效地记录历史信息,更加不能对虚拟机资源进行调整,实现资源的优化配置,这也给管理员进行系统性能分析和资源管理带来很大的不便。
XenMon由Xentrace、Xenbaked、Xenmon三部分组成,其运用Xentrace来实现信息的监测。Xentrace能够用来获取Xen中tracebuffer的数据,Xen中产生的所有事件都将被记录在tracebuffer中。由于Xentrace产生的信息量将非常大,因此不得不要花很长的事件去解析这些信息。XenMon提供了用户空间的处理工具Xenbaked来处理tracebuffer中的新事件,并把这些记录转换成有意义的信息,经Xenbaked处理过的信息须交由Xenmon去呈现给用户。
现有的Xen虚拟机资源监控系统往往存在信息采集不全面、实时性差等缺点,对系统管理员分析虚拟化系统的性能带来极大不便。同时,现有的资源监控系统往往侧重于信息的监测,对于资源的调整与管理所作的工作并不多,只能为系统管理员提供极少的资源调整手段。基于以上问题,有必要开发一种具有资源监测和调整功能的Xen虚拟机资源监控系统。
发明内容
本发明的目的在于提供一种面向云计算虚拟化环境的资源监测和调整系统,该系统不仅能实时地监测各虚拟机的资源利用状况,而且可以对多种虚拟机资源进行调整。
为实现上述目的,本发明的技术方案是:一种面向云计算虚拟化环境的资源监测和调整系统,包括设于Dom0虚拟机上的资源信息监测模块和资源调整模块,以及设于DomU虚拟机上的数据传输模块;
所述资源信息监测模块按如下步骤进行资源信息的收集工作:
步骤a1:读取Xenstore,获取Xenstore中存储的每一个正在运行的虚拟机的静态配置信息;
步骤a2:通过XenHypervisor获取各个虚拟机的动态资源信息,监控虚拟化平台的变化情况,如果有新增的虚拟机,则为其分配数据存储空间,如果有虚拟机被销毁,则释放其数据存储空间;
步骤a3:设于DomU虚拟机上的数据传输模块向共享内存发送其自身的资源详细使用信息,资源信息监测模块实时探测共享内存中的数据,如果发现有新的数据到达,就将其读取出来;
所述资源调整模块包括内存资源调整模块和VCPU资源调整模块;所述内存资源调整模块在用户态为管理员提供了内存调整接口,通过按需调整策略或基于平均内存利用率的托管调整策略对内存资源进行调整;所述VCPU资源调整模块在用户态为管理员提供了VCPU调整接口,调用XenHypervisor的热插拔模块,按如下步骤对VCPU资源进行调整:
步骤b1:管理员通过用户界面向VCPU资源调整模块发出VCPU资源调整请求,并提供虚拟机的id和请求设置的VCPU个数vcpu_count;
步骤b2:VCPU资源调整模块接收VCPU资源调整请求,并读取Xenstore,取得id为domid的虚拟机允许设置的最大VCPU个数vcpu_max,以及已经在线的VCPU个数vcpu_online;
步骤b3:判断请求设置的VCPU个数vcpu_count是否合理,如果vcpu_count大于vcpu_max或者vcpu_count小于1,则流程结束,否则转下一步骤;
步骤b4:判断请求设置的VCPU个数vcpu_count与已经在线的VCPU个数vcpu_online是否相等,如果相等,则流程结束,否则转下一步骤;
步骤b5:设置Xenstore的相应键值,VCPU资源调整流程结束。
进一步的,所述按需调整策略按如下步骤进行:
步骤c1:管理员通过用户界面向内存资源调整模块发出内存资源调整请求,并提供虚拟机的id和请求的内存量memory;
步骤c2:内存资源调整模块解析内存资源调整请求,并读取Xenstore配置,获取该虚拟机允许使用的最大内存max;
步骤c3:判断管理员提交的内存资源调整请求是否合法,如果请求的内存量memory大于该虚拟机允许使用的最大内存max,或者小于一设定值以至于不能支持虚拟机的运行,则视为非法请求不予执行,流程结束,否则转下一步骤;
步骤c4:如果请求合法,则对Xenstore下相应的键target执行写操作,后续的工作交由气球驱动去完成。
进一步的,所述基于平均内存利用率的托管调整策略按如下方法进行:管理员向内存资源调整模块发出内存资源调整请求,并配置三个值:其一是保证虚拟化平台正常工作需要预留的最少空闲内存值min_free_memory,即如果虚拟化平台的空闲内存低于该值,虚拟化平台将会产生内存溢出而不能正常工作;其二是各虚拟机允许设置的最小内存值vm_min_memory,即如果为虚拟机设置的内存值低于该值,虚拟机将会产生内存溢出而不能工作;其三是对虚拟机进行内存资源增加调整的最低内存利用率min_mem_usage,即如果虚拟机的内存利用率高于该值,将为其增加内存,否则不处理;然后分为平台空闲内存充足和平台空闲内存不充足两种情况对内存资源进行调整;
平台空闲内存充足情况的内存资源调整工作流程如下:
步骤d1:遍历每一个DomU虚拟机并计算其内存利用率;
步骤d2:判断DomU虚拟机的内存利用率是否小于设定的min_mem_usage值,是则结束流程,否则从平台的空闲内存资源池中取出部分内存,为其增加内存,然后结束流程;
平台空闲内存不充足情况的内存资源调整工作流程如下:
步骤e1:遍历每一个DomU虚拟机并预测其内存需求;
步骤e2:根据预测的内存需求,计算每一个DomU虚拟机的内存利用率和平台平均内存利用率;
步骤e3:以平台平均内存利用率为标准,结合预测的内存需求和内存利用率,调整每一个DomU虚拟机的内存大小,平衡内存压力。
进一步的,在步骤e1中,遍历每一个DomU虚拟机并预测其内存需求按如下步骤进行:
步骤101:遍历每一个DomU虚拟机,获得其内存资源占用详细信息;
步骤102:根据其内存资源占用详细信息计算其本次调整的内存使用量mem_used,其中;
步骤103:根据本次调整的内存使用量mem_used,结合上一次调整的内存使用量pre_mem_used,计算本次调整的内存增量mem_increment和Swap分区增量swap_increment,其中,;
步骤104:根据本次调整的内存使用量mem_used、内存增量mem_increment和Swap分区增量swap_increment预测内存需求mem_used_predict,其中。
进一步的,步骤e3分为回收空闲内存和为需要内存的DomU虚拟机增加内存两个子步骤,回收空闲内存的工作流程如下:
步骤201:遍历各DomU,并计算其内存利用率与平台平均内存利用率;
步骤202:判断DomU的内存利用率是否小于平台平均内存利用率,是则转下一步骤,否则说明该虚拟机的内存资源不充足,不回收其内存资源,流程结束;
步骤203:以平台平均内存利用率为中心设置一取值范围,判断DomU的内存利用率是否在所述取值范围内,是则说明DomU的内存利用率已经达到了合理水平,也不回收其内存资源,否则转下一步骤;
步骤204:DomU的内存利用率不在所述取值范围内,则说明DomU的内存利用率达不到合理水平,即内存利用率不高,需要进行空闲内存资源回收;
步骤205:计算其内存目标值,对其进行空闲内存资源回收;
为需要内存的DomU虚拟机增加内存的工作流程如下:
步骤301:遍历各DomU,并计算其内存利用率与平台平均内存利用率;
步骤302:判断该DomU的内存利用率是否大于平台平均内存利用率,是则转下一步骤,否则说明该虚拟机的内存资源没有被充分利用,需要回收其部分空闲内存资源;
步骤303:判断DomU的内存利用率是否在所述取值范围内,是则说明DomU的内存利用率是合理的,不会出现内存不足的现象,也不用为其增加内存,否则转下一步骤;
步骤304:DomU的内存利用率超出所述取值范围内,则说明DomU已经出现内存不足的现象,需要为其增加内存资源;
步骤305:计算其内存目标值,为其增加内存资源。
本发明的有益效果是实现了一种基于Xen虚拟机的高效资源监测和调整系统XResMonitor,该系统除了能实时监测各虚拟机的资源占用情况外,同时也为管理员提供了多种对虚拟机资源进行调整方式,管理员通过XResMonitor系统在用户空间提供的虚拟机资源调整方式,屏蔽了底层硬件的复杂性,能轻松地对虚拟机的VCPU资源和内存资源进行调整。实验评估表明,XResMonitor系统能实时地监测各虚拟机的资源利用状况,并提供了对多种资源进行调整的策略,对虚拟化系统带来的性能损失仅为5%,使用效果好,具有广阔的市场应用前景。
下面结合附图及具体实施例对本发明作进一步的详细说明。
附图说明
图1是本发明实施例中资源信息监测模块的工作流程图。
图2是本发明实施例中VCPU资源调整模块的工作流程图。
图3是本发明实施例中按需调整策略的工作流程图。
图4是本发明实施例中基于平均内存利用率的托管调整策略的工作流程图。
图5是本发明实施例中预测内存需求的工作流程图。
图6是本发明实施例中以平台平均内存利用率为标准平衡内存压力的工作流程图。
图7是本发明实施例中回收空闲内存的工作流程图。
图8是本发明实施例中为需要内存的DomU虚拟机增加内存的工作流程图。
具体实施方式
本发明面向云计算虚拟化环境的资源监测和调整系统XResMonitor,包括设于第一虚拟机上的资源信息监测模块和资源调整模块,以及设于第二虚拟机上的数据传输模块。本发明基于Xen虚拟机,所述第一虚拟机为Dom0虚拟机,第二虚拟机为DomU虚拟机。在Xen虚拟机系统中,Dom0虚拟机是Xen的一个具有特权的虚拟机,是唯一运行在XenHypervisor之上的虚拟机,它拥有控制管理物理硬件资源的权限,同时和系统上运行的其他虚拟机进行交互。通过Dom0虚拟机,可以利用一些Xen工具来创建其他虚拟机(DomU虚拟机)。这些DomU虚拟机属于无特权虚拟机。
资源信息监测模块实现对虚拟机资源占用信息的收集、整理和加工,并实时地显示虚拟机资源信息的占用情况,为系统管理员管理系统资源提供数据依据。资源调整模块实现对虚拟机资源的调整,为系统管理员屏蔽了复杂的底层硬件信息,使得对资源的调整与控制只需通过简单的操作就可以实现。
如图1所示,所述资源信息监测模块按如下步骤进行资源信息的收集工作:
步骤a1:读取Xenstore存储模块,获取Xenstore中存储的每一个正在运行的虚拟机的静态配置信息,如虚拟机名字、VCPU个数、配置的内存大小等。Xenstore是Xen提供的一个域间共享的存储系统(数据库),也可以说它是一个由Dom0管理的简单的分层操作系统,其作为虚拟机间的中介通信是基于共享内存页与事件通道来实现的。Xenstore中存储了各个虚拟机的配置信息,例如DomainID,DomainName,UUID,前后端设备,启动时间,虚拟机状态等。
步骤a2:通过XenHypervisor调度模块,获取各个虚拟机的动态资源信息,监控虚拟化平台的变化情况,如果有新增的虚拟机,则为其分配数据存储空间,如果有虚拟机被销毁,则释放其数据存储空间。XenHypervisor是一个介于硬件和操作系统之间的软件层,它负责在各虚拟机之间进行CPU调度和内存分配。XenHypervisor不仅抽象出硬件层,同时控制虚拟机的执行,因为这些虚拟机共享同一个处理环境。
步骤a3:因Xen虚拟机没有提供每一个虚拟机的内存资源占用信息,因此,有必要在DomU内部进行信息的收集工作;设于DomU虚拟机上的数据传输模块向共享内存发送其自身的资源详细使用信息,资源信息监测模块实时探测共享内存中的数据,如果发现有新的数据到达,就将其读取出来。
所述资源调整模块包括内存资源调整模块和VCPU资源调整模块;所述内存资源调整模块在用户态为管理员提供了内存调整接口,通过按需调整策略或基于平均内存利用率的托管调整策略对内存资源进行调整;所述VCPU资源调整模块在用户态为管理员提供了VCPU调整接口,调用XenHypervisor的热插拔模块,如图2所示,按如下步骤对VCPU资源进行调整:
步骤b1:管理员通过用户界面向VCPU资源调整模块发出VCPU资源调整请求,并提供虚拟机的id和请求设置的VCPU个数vcpu_count;
步骤b2:VCPU资源调整模块接收VCPU资源调整请求,并读取Xenstore,取得id为domid的虚拟机允许设置的最大VCPU个数vcpu_max,以及已经在线的VCPU个数vcpu_online;
步骤b3:判断请求设置的VCPU个数vcpu_count是否合理,如果vcpu_count大于vcpu_max或者vcpu_count小于1,则流程结束,否则转下一步骤;
步骤b4:判断请求设置的VCPU个数vcpu_count与已经在线的VCPU个数vcpu_online是否相等,如果相等,则流程结束,否则转下一步骤;
步骤b5:设置Xenstore的相应键值,VCPU资源调整流程结束。
如图3所示,所述按需调整策略按如下步骤进行:
步骤c1:管理员通过用户界面向内存资源调整模块发出内存资源调整请求,并提供虚拟机的id和请求的内存量memory;
步骤c2:内存资源调整模块解析内存资源调整请求,并读取Xenstore配置,获取该虚拟机允许使用的最大内存max;
步骤c3:判断管理员提交的内存资源调整请求是否合法,如果请求的内存量memory大于该虚拟机允许使用的最大内存max,或者小于一设定值以至于不能支持虚拟机的运行,则视为非法请求不予执行,流程结束,否则转下一步骤;
步骤c4:如果请求合法,则对Xenstore下相应的键target执行写操作,后续的工作交由气球驱动去完成。
如图4所示,所述基于平均内存利用率的托管调整策略按如下方法进行:管理员向内存资源调整模块发出内存资源调整请求,并配置三个值:其一是保证虚拟化平台正常工作需要预留的最少空闲内存值min_free_memory,即如果虚拟化平台的空闲内存低于该值,虚拟化平台将会产生内存溢出而不能正常工作;其二是各虚拟机允许设置的最小内存值vm_min_memory,即如果为虚拟机设置的内存值低于该值,虚拟机将会产生内存溢出而不能工作;其三是对虚拟机进行内存资源增加调整的最低内存利用率min_mem_usage,即如果虚拟机的内存利用率高于该值,将为其增加内存,否则不处理;然后分为平台空闲内存充足和平台空闲内存不充足两种情况对内存资源进行调整;
平台空闲内存充足情况的内存资源调整工作流程如下:
步骤d1:遍历每一个DomU虚拟机并计算其内存利用率;
步骤d2:判断DomU虚拟机的内存利用率是否小于设定的min_mem_usage值,是则结束流程,因平台的空闲内存充足,无须回收该虚拟机的空闲内存,故结束;否则从平台的空闲内存资源池中取出部分内存,为其增加内存,然后结束流程;
前面介绍了平台空闲内存充足时的内存资源调整方法。下面将主要介绍平台空闲内存不充足时该如何去调整虚拟机的内存资源。因平台空闲内存不充足,我们无法直接从平台的空闲内存资源池中取出部分内存为需要的虚拟机增加内存,这就要求我们必须回收部分虚拟机的空闲内存来补充平台的空闲内存资源池,即先回收再分配。
平台空闲内存不充足情况的内存资源调整工作流程如下:
步骤e1:遍历每一个DomU虚拟机并预测其内存需求,后面会有具体算法介绍如何去预测其内存需求;
步骤e2:根据预测的内存需求,计算每一个DomU虚拟机的内存利用率和平台平均内存利用率;
步骤e3:以平台平均内存利用率为标准,结合预测的内存需求和内存利用率,调整每一个DomU虚拟机的内存大小,平衡内存压力。
下面将对每一个步骤做更加详细和具体的描述及其算法实现。
步骤e1:如图5所示,遍历每一个DomU虚拟机并预测其内存需求按如下步骤进行:
步骤101:遍历每一个DomU虚拟机,获得其内存资源占用详细信息;
步骤102:根据其内存资源占用详细信息计算其本次调整的内存使用量mem_used,其中;式中,memtotal表示DomU当前占用的总内存,memfree表示DomU当前的空闲内存,buffers表示DomU的设备IO缓冲区,cached表示DomU的文件IO高速缓冲区;
步骤103:根据本次调整的内存使用量mem_used,结合上一次调整的内存使用量pre_mem_used,计算本次调整的内存增量mem_increment和Swap分区增量swap_increment,其中,;式中,now.swaptotal表示本次调整的DomU总的swap分区大小,pre.swaptotal表示上一次调整的DomU总的swap分区大小;
步骤104:根据本次调整的内存使用量mem_used、内存增量mem_increment和Swap分区增量swap_increment预测内存需求mem_used_predict,其中。
步骤e2:计算DomU内存利用率和平台平均内存利用率,因在预测内存需求时便可把内存利用率和平台平均内存利用率计算出来,故这部分的具体实现请参考预测内存需求算法。
步骤e3:以平台平均内存利用率为标准,调整每个domU的内存大小,平衡内存压力,其总体流程如图6所示,即先回收空闲内存,然后从空闲内存资源池中取出部分内存为需要内存的虚拟机增加内存。因此,该步骤可分为回收空闲内存和为需要内存的DomU虚拟机增加内存两个子步骤。
如图7所示,回收空闲内存的工作流程如下:
步骤201:遍历各DomU,并计算其内存利用率与平台平均内存利用率;
步骤202:判断DomU的内存利用率是否小于平台平均内存利用率,是则转下一步骤,否则说明该虚拟机的内存资源不充足,不回收其内存资源,流程结束;
步骤203:以平台平均内存利用率为中心设置一取值范围,判断DomU的内存利用率是否在所述取值范围内,是则说明DomU的内存利用率已经达到了合理水平,也不回收其内存资源,否则转下一步骤;
步骤204:DomU的内存利用率不在所述取值范围内,则说明DomU的内存利用率达不到合理水平,即内存利用率不高,需要进行空闲内存资源回收;
步骤205:计算其内存目标值,对其进行空闲内存资源回收;
如图8所示,为需要内存的DomU虚拟机增加内存的工作流程如下:
步骤301:遍历各DomU,并计算其内存利用率与平台平均内存利用率;
步骤302:判断该DomU的内存利用率是否大于平台平均内存利用率,是则转下一步骤,否则说明该虚拟机的内存资源没有被充分利用,需要回收其部分空闲内存资源;
步骤303:判断DomU的内存利用率是否在所述取值范围内,是则说明DomU的内存利用率是合理的,不会出现内存不足的现象,也不用为其增加内存,否则转下一步骤;
步骤304:DomU的内存利用率超出所述取值范围内,则说明DomU已经出现内存不足的现象,需要为其增加内存资源;
步骤305:计算其内存目标值,为其增加内存资源。
为使本发明的技术方案更加清晰明确,下面对本发明定义的数据结构作相应说明。
为了实现对每个DomU的内存资源的实时监测,必须要存储各DomU内存资源消耗的详细信息,为此本发明的资源监测和调整系统XResMonitor定义了xresmonitor_domain数据结构,其各成员见如下代码片段:
typedefstructxresmonitor_domain{
unsignedintid;
char*name;
char*state;
unsignedintvcpus;
unsignedlonglongmax_mem;
unsignedlonglongmemtotal;
unsignedlonglongmemfree;
unsignedlonglongbuffers;
unsignedlonglongcached;
unsignedlonglongcommitted_as;
unsignedlonglongswapfree;
unsignedlonglongswaptotal;
unsignedlonglongtarget;
unsignedlonglongmemused;
}xresmonitor_domain;
其中成员id为DomU运行时的标识,成员name为DomU的名称,成员state记录着DomU当前的运行状态,成员vcpus表示DomU当前获得的VCPU个数,成员max_mem表明DomU允许访问的最大内存,成员memtotal为DomU当前占用的总内存,成员memfree为DomU当前的空闲内存,成员buffers表明DomU的设备IO缓冲区,成员,cached为DomU的文件IO高速缓冲区,成员committed_as为DomU是否产生内存溢出的临界值,成员swapfree为DomU空闲swap分区大小,成员swaptotal为DomU总的swap分区大小,成员target为DomU的目标值,成员memused表明DomU当前已使用的内存大小。这些信息既有通过Xenstore获取,也有的是通过XenHypervisor获取,还有部分是通过DomU上部署的数据传输模块来获取的。为了能正确反映每个虚拟机内存资源的消耗,还需为其计算内存资源的利用率,以便帮助管理员更加客观地了解每个虚拟机的内存资源消耗,计算内存利用率的步骤如下:
1.获取各虚拟机内存资源占用情况的详细信息。
2.把获取到的详细信息分类整理后存储到为其分配的数据结构中。
3.根据获取到的数据计算内存资源的利用率。
以上是监测每个DomU的内存资源占用情况,本发明的XResMonitor系统还提供了监测整个虚拟化平台的内存资源占用情况的功能,为此定义了xresmonitor_node数据结构,其成员如下代码片段:
typedefstructxresmonitor_node{
xenstat_handle*handle;/*xen设备句柄*/
unsignedlonglongtot_mem;/*系统总内存*/
unsignedlonglongfree_mem;/*系统空闲内存*/
unsignedintnum_domains;/*domU的个数*/
unsignedlonglongvm_totalmem;/*所有domU的总内存*/
xenstat_domain*domains;/*结构体xresmonitor_domain数组*/
}xresmonitor_node;
其中成员handle为操纵Xen底层设备的句柄,tot_mem为虚拟化平台的总内存,free_mem为虚拟化平台的空闲内存,num_domains为虚拟化平台上运行的DomU个数,vm_totalmem为虚拟化平台上运行的所有DomU的内存总和,domains指针指向存储所有DomU的数组。
为了实现对每个DomU的VCPU资源的实时监测,必须要存储VCPU花费在各项任务上的详细时间片信息,为此本发明的XResMonitor系统定义了vcpuinfo数据结构,其各成员见如下代码片段。
typedefvcpuinfo{
unsignedlonguser;
unsignedlongnice;
unsignedlongsystem;
unsignedlongidle;
unsignedlongiowait;
unsignedlongirq;
unsignedlongsoftirq;
}vcpuinfo;
其中成员user表示从系统启动开始累计到当前时刻,消耗在用户态的时间片(不包含nice值为负的进程),成员nice表示nice值为负的进程所占用的时间片,成员system表示处于核心态的时间片,成员idle表示除IO等待时间以外的其它空闲时间片,成员iowait表示IO等待的时间片,成员irq表示硬中断的时间片,成员softirq表示软中断的时间片。这些数据是通过XenHypervisor来获取的。为了能客观反映每个虚拟机VCPU资源的消耗情况,还需计算其VCPU资源的利用率,计算的步骤如下:
1.在足够短的时间间隔t内采样VCPU的两个快照,分别记为vcpuinfo1和vcpuinfo2,即通过XenHypervisor来填充vcpuinfo1和vcpuinfo2这两个数据结构。
2.分别计算这两个采样点VCPU获得的时间片,分别记为cpu_total1和cpu_total2,这两个值的计算是通过累加vcpuinfo数据结构中的成员求和获得的。
3.计算间隔t内VCPU获得的总时间片cputotal=cpu_total2-cpu_total1。
4.计算间隔t内VCPU的空闲时间cpuidle=vcpuinfo2.idle-vcpuinfo1.idle。
5.计算VCPU利用率。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (1)
1.一种面向云计算虚拟化环境的资源监测和调整系统,其特征在于:包括设于Dom0虚拟机上的资源信息监测模块和资源调整模块,以及设于DomU虚拟机上的数据传输模块;
所述资源信息监测模块按如下步骤进行资源信息的收集工作:
步骤a1:读取Xenstore,获取Xenstore中存储的每一个正在运行的虚拟机的静态配置信息;
步骤a2:通过XenHypervisor获取各个虚拟机的动态资源信息,监控虚拟化平台的变化情况,如果有新增的虚拟机,则为其分配数据存储空间,如果有虚拟机被销毁,则释放其数据存储空间;
步骤a3:设于DomU虚拟机上的数据传输模块向共享内存发送其自身的资源详细使用信息,资源信息监测模块实时探测共享内存中的数据,如果发现有新的数据到达,就将其读取出来;
所述资源调整模块包括内存资源调整模块和VCPU资源调整模块;所述内存资源调整模块提供了内存调整接口,通过按需调整策略或基于平均内存利用率的托管调整策略对内存资源进行调整;所述VCPU资源调整模块提供了VCPU调整接口,调用XenHypervisor的热插拔模块,按如下步骤对VCPU资源进行调整:
步骤b1:VCPU资源调整模块接收VCPU资源调整请求,提取虚拟机的id和请求设置的VCPU个数vcpu_count;
步骤b2:VCPU资源调整模块读取Xenstore,取得对应所述id的虚拟机允许设置的最大VCPU个数vcpu_max,以及已经在线的VCPU个数vcpu_online;
步骤b3:判断请求设置的VCPU个数vcpu_count是否大于vcpu_max或者小于1,是则流程结束,否则转下一步骤;
步骤b4:判断请求设置的VCPU个数vcpu_count与已经在线的VCPU个数vcpu_online是否相等,是则流程结束,否则转下一步骤;
步骤b5:设置Xenstore的相应键值,VCPU资源调整流程结束;
所述按需调整策略按如下步骤进行:
步骤c1:内存资源调整模块解析内存资源调整请求,提取虚拟机的id和请求的内存量memory;
步骤c2:内存资源调整模块读取Xenstore配置,获取该虚拟机允许使用的最大内存max;
步骤c3:判断内存资源调整请求是否合法,即如果请求的内存量memory大于该虚拟机允许使用的最大内存max,或者小于一设定值以至于不能支持虚拟机的运行,则视为非法请求不予执行,流程结束,否则转下一步骤;
步骤c4:如果请求合法,则对Xenstore下相应的键target执行写操作,后续的工作交由气球驱动去完成;
所述基于平均内存利用率的托管调整策略按如下方法进行:管理员向内存资源调整模块发出内存资源调整请求,并配置三个值:其一是保证虚拟化平台正常工作需要预留的最少空闲内存值min_free_memory,即如果虚拟化平台的空闲内存低于该值,虚拟化平台将会产生内存溢出而不能正常工作;其二是各虚拟机允许设置的最小内存值vm_min_memory,即如果为虚拟机设置的内存值低于该值,虚拟机将会产生内存溢出而不能工作;其三是对虚拟机进行内存资源增加调整的最低内存利用率min_mem_usage,即如果虚拟机的内存利用率高于该值,将为其增加内存,否则不处理;然后分为平台空闲内存充足和平台空闲内存不充足两种情况对内存资源进行调整;
平台空闲内存充足情况的内存资源调整工作流程如下:
步骤d1:遍历每一个DomU虚拟机并计算其内存利用率;
步骤d2:判断DomU虚拟机的内存利用率是否小于设定的min_mem_usage值,是则结束流程,否则从平台的空闲内存资源池中取出部分内存,为其增加内存,然后结束流程;
平台空闲内存不充足情况的内存资源调整工作流程如下:
步骤e1:遍历每一个DomU虚拟机并预测其内存需求;
步骤e2:根据预测的内存需求,计算每一个DomU虚拟机的内存利用率和平台平均内存利用率;
步骤e3:以平台平均内存利用率为标准,结合预测的内存需求和计算的内存利用率,调整每一个DomU虚拟机的内存大小,平衡内存压力;
在步骤e1中,遍历每一个DomU虚拟机并预测其内存需求按如下步骤进行:
步骤101:遍历每一个DomU虚拟机,获得其内存资源占用详细信息;
步骤102:根据其内存资源占用详细信息计算其本次调整的内存使用量mem_used:
mem_used=memtotal-memfree-buffers-cached;
式中,memtotal表示DomU当前占用的总内存,memfree表示DomU当前的空闲内存,buffers表示DomU的设备IO缓冲区,cached表示DomU的文件IO高速缓冲区;
步骤103:根据本次调整的内存使用量mem_used,结合上一次调整的内存使用量pre_mem_used,计算本次调整的内存增量mem_increment和Swap分区增量swap_increment:
mem_increment=mem_used-pre_mem_used
swap_increment=now.swaptotal-pre.swaptotal;
式中,now.swaptotal表示本次调整的DomU总的swap分区大小,pre.swaptotal表示上一次调整的DomU总的swap分区大小;
步骤104:根据本次调整的内存使用量mem_used、内存增量mem_increment和Swap分区增量swap_increment预测内存需求mem_used_predict,其中mem_used_predict=mem_used+mem_increment+swap_increment;
步骤e3分为回收空闲内存和为需要内存的DomU虚拟机增加内存两个子步骤,回收空闲内存的工作流程如下:
步骤201:遍历各DomU,并计算其内存利用率与平台平均内存利用率;
步骤202:判断DomU的内存利用率是否小于平台平均内存利用率,是则转下一步骤,否则说明该虚拟机的内存资源不充足,不回收其内存资源,流程结束;
步骤203:以平台平均内存利用率为中心设置一取值范围,判断DomU的内存利用率是否在所述取值范围内,是则说明DomU的内存利用率已经达到了合理水平,也不回收其内存资源,否则转下一步骤;
步骤204:DomU的内存利用率不在所述取值范围内,则说明DomU的内存利用率达不到合理水平,即内存利用率不高,需要进行空闲内存资源回收;
步骤205:计算其内存目标值,对其进行空闲内存资源回收;
为需要内存的DomU虚拟机增加内存的工作流程如下:
步骤301:遍历各DomU,并计算其内存利用率与平台平均内存利用率;
步骤302:判断该DomU的内存利用率是否大于平台平均内存利用率,是则转下一步骤,否则说明该虚拟机的内存资源没有被充分利用,需要回收其部分空闲内存资源;
步骤303:判断DomU的内存利用率是否在所述取值范围内,是则说明DomU的内存利用率是合理的,不会出现内存不足的现象,也不用为其增加内存,否则转下一步骤;
步骤304:DomU的内存利用率超出所述取值范围内,则说明DomU已经出现内存不足的现象,需要为其增加内存资源;
步骤305:计算其内存目标值,为其增加内存资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310264975.0A CN103365700B (zh) | 2013-06-28 | 2013-06-28 | 一种面向云计算虚拟化环境的资源监测和调整系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310264975.0A CN103365700B (zh) | 2013-06-28 | 2013-06-28 | 一种面向云计算虚拟化环境的资源监测和调整系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103365700A CN103365700A (zh) | 2013-10-23 |
CN103365700B true CN103365700B (zh) | 2016-01-06 |
Family
ID=49367129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310264975.0A Expired - Fee Related CN103365700B (zh) | 2013-06-28 | 2013-06-28 | 一种面向云计算虚拟化环境的资源监测和调整系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103365700B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9442669B2 (en) | 2014-08-06 | 2016-09-13 | International Business Machines Corporation | Cost-effective IAAS (infrastructure-as-a-service) cloud storage based on adaptive virtual disks (AVD) |
CN104834995B (zh) * | 2015-04-20 | 2018-01-09 | 安徽师范大学 | 基于云计算的工作流双向调度方法 |
CN105279071A (zh) * | 2015-10-28 | 2016-01-27 | 浪潮(北京)电子信息产业有限公司 | 一种虚拟机性能数据采集方法、系统及云计算平台 |
CN105204948B (zh) * | 2015-10-29 | 2019-07-09 | 云宏信息科技股份有限公司 | 虚拟机物理内存配置方法及装置 |
CN106980588A (zh) * | 2016-01-18 | 2017-07-25 | 中兴通讯股份有限公司 | 一种设备热处理方法和装置 |
CN105785824B (zh) * | 2016-04-12 | 2020-02-11 | 上海斐讯数据通信技术有限公司 | 一种向Linux内核传递内存大小参数的方法及系统 |
CN106055410B (zh) * | 2016-06-07 | 2019-05-21 | 南京邮电大学 | 一种云计算内存资源分配方法 |
CN106250209A (zh) * | 2016-08-02 | 2016-12-21 | 浪潮(北京)电子信息产业有限公司 | 一种Xen虚拟环境下的虚拟机内存监控方法及其系统 |
CN106453544B (zh) * | 2016-09-30 | 2020-02-07 | 苏州浪潮智能科技有限公司 | 一种云环境及其监控方法、系统 |
CN106598697A (zh) * | 2016-11-14 | 2017-04-26 | 中国石油化工股份有限公司 | 一种虚拟机的虚拟内存动态调配方法 |
CN108182104B (zh) * | 2016-12-08 | 2021-07-09 | 中国移动通信有限公司研究院 | 一种分配虚拟处理器的方法、设备及系统 |
CN107273212A (zh) * | 2017-06-23 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种动态分配内存的方法及系统 |
CN107341055A (zh) * | 2017-07-03 | 2017-11-10 | 杭州知物数据科技有限公司 | 分布式内存文件系统的实时动态管理方法及系统 |
CN107766122B (zh) * | 2017-09-28 | 2021-01-15 | 苏州浪潮智能科技有限公司 | 一种宿主机的可用内存空间设置方法和装置 |
CN108229191A (zh) * | 2018-01-03 | 2018-06-29 | 江苏神州信源系统工程有限公司 | 一种虚拟机的文件保护方法与装置 |
WO2019196062A1 (zh) | 2018-04-12 | 2019-10-17 | 华为技术有限公司 | 探测虚拟机状态的方法和设备 |
CN110262891B (zh) * | 2018-10-30 | 2020-08-25 | 湖北省农村信用社联合社网络信息中心 | 跨虚拟化平台自动化多功能资源循环利用系统 |
CN110659133B (zh) * | 2019-09-02 | 2024-05-14 | 中国平安人寿保险股份有限公司 | 一种资源分配方法及分配装置、存储介质、电子设备 |
CN114237831A (zh) * | 2022-02-25 | 2022-03-25 | 阿里巴巴(中国)有限公司 | 虚拟中央处理器热插拔方法、物理主机和存储介质 |
CN114924844A (zh) * | 2022-07-18 | 2022-08-19 | 北京城建设计发展集团股份有限公司 | 一种地铁跨线路算力资源共享系统及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222014A (zh) * | 2011-06-16 | 2011-10-19 | 华中科技大学 | 基于内存热插拔的虚拟机动态内存管理系统 |
-
2013
- 2013-06-28 CN CN201310264975.0A patent/CN103365700B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222014A (zh) * | 2011-06-16 | 2011-10-19 | 华中科技大学 | 基于内存热插拔的虚拟机动态内存管理系统 |
Non-Patent Citations (3)
Title |
---|
一种面向虚拟化云计算平台的内存优化技术;李亚琼;《计算机学报》;20110430;第34卷(第4期);全文 * |
基于 Xen 虚拟机的内存资源实时监控与按需调整;胡耀;《计算机应用》;20130101;第33卷(第1期);全文 * |
虚拟机资源监测调整机制研究;陆晓雯;《中国优秀硕士学位论文全文数据库》;20101015(第5期);第2-3节及图2.1、图3.2、图3.5 * |
Also Published As
Publication number | Publication date |
---|---|
CN103365700A (zh) | 2013-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103365700B (zh) | 一种面向云计算虚拟化环境的资源监测和调整系统 | |
Feller et al. | Energy management in IaaS clouds: a holistic approach | |
Bobroff et al. | Dynamic placement of virtual machines for managing SLA violations | |
CN103902885B (zh) | 面向多安全等级虚拟桌面系统虚拟机安全隔离系统及方法 | |
CN102103516B (zh) | 基于虚拟cpu的频率和电压调节 | |
Nishimura et al. | Virtual clusters on the fly-fast, scalable, and flexible installation | |
CN100511151C (zh) | 多路多核服务器及其cpu的虚拟化处理方法 | |
CN102508718A (zh) | 一种虚拟机负载均衡方法和装置 | |
CN102521055B (zh) | 一种虚拟机资源分配方法及其系统 | |
CN102314391A (zh) | 一种基于硬件基础工具监视虚拟化系统性能的架构及方法 | |
CN106020934A (zh) | 一种基于虚拟集群在线迁移的优化部署方法 | |
Jin et al. | A simple cache partitioning approach in a virtualized environment | |
CN101788920A (zh) | 一种基于处理器分区技术的cpu虚拟化方法 | |
CN102081554A (zh) | 云计算操作系统及其内核控制系统及方法 | |
CN104615480A (zh) | 基于numa高性能网络处理器负载的虚拟处理器调度方法 | |
CN103176845A (zh) | 一种虚拟机部署方法、系统和装置 | |
CN103473115A (zh) | 虚拟机放置方法和装置 | |
CN106125888A (zh) | 云数据中心中基于虚拟机迁移的资源利用高效的节能方法 | |
CN105607943A (zh) | 一种云环境下虚拟机动态部署机制 | |
Feller | Autonomic and energy-efficient management of large-scale virtualized data centers | |
CN114490089A (zh) | 云计算资源自动调节方法、装置、计算机设备及存储介质 | |
CN106412094A (zh) | 一种以公有云方式组织管理分散资源的方法 | |
CN105930202B (zh) | 一种三阈值的虚拟机迁移方法 | |
Saravanakumar et al. | An Efficient Technique for Virtual Machine Clustering and Communications Using Task‐Based Scheduling in Cloud Computing | |
Ro | Modeling and analysis of memory virtualization in cloud computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160106 Termination date: 20210628 |