云计算环境下IO密集型应用识别方法及装置与流程

文档序号:11133706阅读:637来源:国知局
云计算环境下IO密集型应用识别方法及装置与制造工艺

本发明涉及云计算技术领域,尤其涉及一种云计算环境下IO密集型应用识别方法及装置。



背景技术:

云计算是IT(Information Technology,信息技术)领域的一次重大技术变革,云计算强大的计算能力和海量的存储能力,以及通过虚拟化技术为用户为用户提供按需服务的特性使得它将改变人们IT资源的使用方式和使用习惯。云计算对人们的不仅仅限于技术领域内的改变和影响,在未来也可能影响到社会生活的各个领域。它对传统产业带来的不仅是冲击,而且也是便捷与机遇。

然而,云计算在带来技术革命和应用便捷的同时,本身也带来了不可回避的问题,如能耗问题,特别是在云数据中心,由于大量的服务器及其他各种IT设备的聚集,导致云数据中心的能耗非常巨大,甚至有可能影响到周边的环境。此外,数据中心在为用户请求的应用分配资源时,针对所有类型的应用采用通用的资源分配策略进行资源分配,不仅导致云数据中心的资源利用率较低,还进一步加重了云数据中心的能耗问题。



技术实现要素:

本发明的主要目的在于提供一种云计算环境下IO密集型应用识别方法及装置,旨在提升云数据中心的资源利用率,以降低云数据中心的能耗。

为实现上述目的,本发明提供一种云计算环境下IO密集型应用识别方法,所述云计算环境下IO密集型应用识别方法包括:

确定虚拟机运行的当前应用的应用类型;

在确定所述虚拟机当前应用的应用类型时,获取确定的应用类型所对应的资源分配策略;

根据获取的所述资源分配策略调整所述虚拟机的资源。

可选地,所述确定虚拟机运行的当前应用的应用类型的步骤包括;

采集所述虚拟机运行当前应用时的运行信息;

分析获取的运行信息是否满足预存的I/O密集型应用所对应的判定条件;

在所述运行信息满足所述判定条件时,确定所述虚拟机当前运行I/O密集型应用。

可选地,所述运行信息包括所述虚拟机的上下文切换数量、虚拟内存占用值、阻塞队列的单位任务数、硬盘读写速率、网络传输速率以及其在CPUiowait、CPUuser和CPUsystem状态下的CPU占用值。

可选地,所述判定条件包括:

所述虚拟机的上下文的单位切换数量、虚拟内存占用值、阻塞队列的单位任务数、硬盘读写速率、网络传输速率以及其在CPUiowait状态下的CPU占用值分别大于各自对应的第一预设阈值,且虚拟机在CPUuser和CPUsystem状态下的CPU占用值均小于第二预设阈值。

可选地,在根据获取的所述资源分配策略调整所述虚拟机的资源的同时,还执行以下步骤:

将所述虚拟机当前的应用调度策略更新为预存的I/O密集型应用所对应的应用调度策略。

此外,为实现上述目的,本发明还提供了一种云计算环境下IO密集型应用识别装置,所述云计算环境下IO密集型应用识别装置包括:

确定模块,用于确定虚拟机运行的当前应用的应用类型;

获取模块,用于在确定所述虚拟机当前应用的应用类型时,获取确定的应用类型所对应的资源分配策略;

调整模块,用于根据获取的所述资源分配策略调整所述虚拟机的资源。

可选地,所述确定模块还用于,

采集所述虚拟机运行当前应用时的运行信息;

分析获取的运行信息是否满足预存的I/O密集型应用所对应的判定条件;以及

在所述运行信息满足所述判定条件时,确定所述虚拟机当前运行I/O密 集型应用。

可选地,所述运行信息包括所述虚拟机的上下文切换数量、虚拟内存占用值、阻塞队列的单位任务数、硬盘读写速率、网络传输速率以及其在CPUiowait、CPUuser和CPUsystem状态下的CPU占用值。

可选地,所述判定条件包括:

所述虚拟机的上下文的单位切换数量、虚拟内存占用值、阻塞队列的单位任务数、硬盘读写速率、网络传输速率以及其在CPUiowait状态下的CPU占用值分别大于各自对应的第一预设阈值,且虚拟机在CPUuser和CPUsystem状态下的CPU占用值均小于第二预设阈值。

可选地,所述调整模块还用于将所述虚拟机当前的应用调度策略更新为预存的I/O密集型应用所对应的应用调度策略。

本发明提出的云计算环境下IO密集型应用识别方法及装置,在应用于云数据中心时,能够对用户请求的不同类型的应用针对性的进行计算资源的分配,使得分配的计算资源能够有效满足不同类型应用对计算资源的需求,相较于现有技术采用通用的资源分配策略进行资源分配,本发明能够有效提升云数据中心的资源利用率,达到节能降耗的目的。

附图说明

图1为本发明云计算环境下IO密集型应用识别方法第一实施例的流程示意图;

图2为图1中确定虚拟机运行的当前应用的应用类型的细化流程示例图;

图3为本发明云计算环境下IO密集型应用识别方法第一实施例中分析当前应用是否为I/O密集型应用的流程示例图;

图4为实验一中CPUiowait所占CPU的百分比示意图;

图5为实验一中上下文切换每秒数量示意图;

图6为实验一中虚拟内存使用情况示意图;

图7为实验一中进程阻塞队列数示意图;

图8为实验一中硬盘每秒写文件速度示意图;

图9为实验一中网络每秒接收速度示意图;

图10为实验二中CPUiowait所占CPU的百分比示意图;

图11为实验二中上下文切换每秒数量示意图;

图12为实验二中虚拟内存使用情况示意图;

图13为实验二中进程阻塞队列数示意图;

图14为实验二中硬盘每秒写文件速度示意图;

图15为实验二中网络每秒接收速度示意图;

图16为本发明云计算环境下IO密集型应用识别装置第一实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种云计算环境下IO密集型应用识别方法,参照图1,在本发明云计算环境下IO密集型应用识别方法的第一实施例中,所述云计算环境下IO密集型应用识别方法包括:

步骤S10,确定虚拟机运行的当前应用的应用类型;

需要说明的是,本实施例提出的云计算环境下IO密集型应用识别方法应用于云数据中心中,由云计算环境下IO密集型应用识别装置执行,具体通过云计算环境下IO密集型应用识别装置对用户请求的不同类型的应用针对性的进行计算资源的分配,以提高云计算中心的资源利用率,达到节能降耗的目的。

具体的,在本实施例中,将应用分为两类,分别为I/O密集型应用和CPU密集型应用。其中,操作系统在运行I/O密集型应用时,其CPU效能相对硬盘/内存的效能要好很多,此时,系统运作,大部分的状况是CPU在等硬盘/内存的读/写,此时CPU负荷不高;操作系统在运行CPU密集型应用时,其硬盘/内存效能相对CPU的效能要好很多,此时,系统运作,大部分的状况是CPU满负荷运行。可以看出,不同类型的应用对CPU资源和I/O资源的需求不同。

具体的,云数据中心在接收到用户请求的应用时,会根据用户的请求分 配一定的计算资源,也就是虚拟机。由虚拟机来执行用户请求的应用,而这个虚拟机的位置对用户是透明的,它可以运行在云数据中心的任一服务器上,也可以运行在云数据中心的多台服务器上。

在本实施例中,为实现计算资源的有效分配,云计算环境下IO密集型应用识别装置首先需要确定虚拟机运行的当前应用的应用类型,其中,虚拟机运行的当前应用即用户请求的应用。

例如,云计算环境下IO密集型应用识别装置识别到虚拟机运行当前应用的CPU占用率达到预设占用率且单位时间的I/O操作数小于预设操作数时,确定虚拟机当前运行的是CPU密集型应用;又例如,云计算环境下IO密集型应用识别装置识别到虚拟机运行当前应用的CPU占用率小于预设占用率且单位时间的I/O操作数达到预设操作数时,确定虚拟机当前运行的是I/O密集型应用。其中,本实施例不对前述预设操作数和预设占用率做具体限制,本领域技术人员可根据实际需要进行设置,如本实施例设置预设占用率为80%,设置预设操作数为10000。

步骤S20,在确定所述虚拟机当前应用的应用类型时,获取确定的应用类型所对应的资源分配策略;

步骤S30,根据获取的所述资源分配策略调整所述虚拟机的资源。

需要说明的是,为实现计算资源的有效分配,本实施例根据不同类型的应用分别设置储存有对应的资源分配策略。例如,对应CPU密集型应用的资源分配策略包括增加虚拟机的CPU资源;对应I/O密集型应用的资源分配策略包括增加虚拟机的I/O资源。

在本发明实施例中,在确定虚拟运行的当前应用的应用类型之后,云计算环境下IO密集型应用识别装置根据确定的应用类型获取对应的资源分配策略,例如,在确定当前应用为CPU密集型应用时,则获取CPU密集型应用对应的资源分配策略;在确定当前应用为I/O密集型应用时,则获取I/O密集型应用对应的资源分配策略。

在获取到当前应用对应的资源分配策略之后,根据获取的资源分配策略调整虚拟机的资源,例如,云计算环境下IO密集型应用识别装置在确定当前当前应用为I/O密集型应用,且获取的对应资源分配策略为“增加I/O资源,并减小CPU资源”时,则增加运行当前应用的虚拟机的I/O资源,同时 减小该虚拟机的CPU资源。

其中,本实施例对资源的调整量不做具体限制,本领域技术人员可根据实际需要进行设置,例如,设置CPU资源的调整量为“0.5GHz”。

本实施例提出的云计算环境下IO密集型应用识别方法,在应用于云数据中心时,能够对用户请求的不同类型的应用针对性的进行计算资源的分配,使得分配的计算资源能够有效满足不同类型应用对计算资源的需求,相较于现有技术采用通用的资源分配策略进行资源分配,本发明能够有效提升云数据中心的资源利用率,达到节能降耗的目的。

进一步地,基于第一实施例,提出本发明云计算环境下IO密集型应用识别方法的第二实施例,参照图2,在本实施例中,步骤S10包括;

步骤S101,采集所述虚拟机运行当前应用时的运行信息;

步骤S102,分析获取的运行信息是否满足预存的I/O密集型应用所对应的判定条件;

步骤S103,在所述运行信息满足所述判定条件时,确定所述虚拟机当前运行I/O密集型应用。

需要说明的是,本实施例在第一实施例的基础上,进一步提出一种更精确的应用类型识别方案,以下以I/O密集型应用的识别为例进行说明,其他可参照前述实施例,此处不再赘述。

在本实施例中,建立了针对I/O密集型应用的特征识别模型,为一特征六元组:

(CPU,Csw,Mem,Process,I/O,Net)

其中,CPU表示CPU状态,Csw表示应用上下文切换状态,Mem表示虚拟内存使用状态,Pro表示进程阻塞状态,I/O表示硬盘读写状态,Net表示网络传输状态,具体的,

CPU:主要考察CPUiowait,CPUuser和CPUsystem状态下的CPU占用值。对于I/O密集型应用,CPUiowait的百分比会大于一个阈值C,根据大量实验,C可取40%,即CPUiowait>40%。CPUuser和CPUsystem的百分比会小于一个阈值U,对于本实施例的实验环境,U取5%。CPU的iowait占用很高的时间,表明CPU在频繁等待某种I/O操作。

Csw:主要考察每秒上下文切换的数量。如果是I/O密集型应用,那么上下文切换很高。通常上下文切换会大于一个阈值W,根据大量实验,W可取10000。系统中大量的上下文切换,可能是系统进程导致也可能是系统因等待某高优先级操作导致。

Mem:主要考察虚拟内存的使用情况。内存分为实际内存和虚拟内存。如果是I/O密集型应用,会使用虚拟内存,并且有大量页面置换产生。虚拟内存会大于一个阈值M,根据大量实验,M可取16MB,说明内存分配了大量资源用于I/O操作。

Process:主要考察每秒阻塞队列中的任务数(block)。当负载较高或资源紧张时,系统就会把一些任务放入阻塞队列中,等待合适的时机去执行。如果是I/O密集型应用,阻塞队列较高,并且会大于一个阈值P,对于IO密集型应用,取P为2。一般情况阻塞队列小于CPU核数,通常单个I/O密集型应用不会导致系统处于高负载状态。

I/O:I/O主要考察每秒硬盘读写速率(disk_write)和(disk_read)。如果是I/O密集型应用读写速率会很高,通常会大于一个阈值V,V可取1MB/s。

Net:主要考察每秒发送和接收的网络流量。如果是I/O密集型应用,那么接收或者发送的流量会很高,通常会大于一个阈值N,N可取1MB/s。网络上监测到大量流量数据,表明正在传输数据,可能是文件上传下载服务或者流媒体服务。

在本实施例中,为识别虚拟机运行的当前应用的应用类型,首先采集该虚拟机运行当前应用时的运行信息,包括所述虚拟机的上下文的单位切换数量、虚拟内存占用值、阻塞队列的单位任务数、硬盘读写速率、网络传输速率以及其在CPUiowait、CPUuser和CPUsystem状态下的CPU占用值。

在采集到所述虚拟机运行当前应用时的运行信息之后,进一步分析获取的运行信息是否满足预存的I/O密集型应用所对应的判定条件(即前述特征六元组)。

具体的,参照图3,云计算环境下IO密集型应用识别装置首先对CPU数据进行分析,比较当前CPUiowait的CPU占用值和阈值C(即虚拟机在CPUiowait下的CPU占用值所对应的第一预设阈值),以及分别比较当前CPUuser和CPUsystem的CPU占用值与U的大小。如果满足当前CPUiowait 的CPU占用值大于阈值C且CPUuser和CPUsystem的CPU占用值均小于U(即第二预设阈值),那么转到下一步,否则,转到第七步;

其次,云计算环境下IO密集型应用识别装置分析虚拟机每秒钟的上下文切换数量。比较上下文切换数量的数量和阈值W(即上下文的单位切换数量所对应的第一预设阈值)。如果满足上下文切换数大于阈值W,则转到下一步,否则,转到第七步;

第三,云计算环境下IO密集型应用识别装置分析虚拟内存所占的空间大小。比较虚拟内存占用值和阈值M(即虚拟内存占用值所对应的第一预设阈值),如果虚拟内存占用值大于阈值M,则转到下一步,否则,转到第七步;

第四,云计算环境下IO密集型应用识别装置分析每秒钟阻塞队列中的任务数。将该数量和阈值P进行比较,如果每秒钟的阻塞队列中的任务数大于阈值P(即阻塞队列的单位任务数所对应的第一预设阈值),则转到下一步,否则,转到第七步;

第五,云计算环境下IO密集型应用识别装置分析硬盘读写速率。检查硬盘读写速率是否很大并且将其和阈值I(即硬盘读写速率所对应的第一预设阈值)进行比较,如果大于阈值I,则转到下一步,否则,转到第七步;

第六,云计算环境下IO密集型应用识别装置分析网络传输速率。检查是否有大量的网络流量并且和阈值N进行比较,如果大于阈值N(即网络传输速率所对应的第一预设阈值),则确定当前应用是I/O密集型应用,退出,否则,转到第七步;

第七,确定当前应用不是I/O密集型应用,退出。

为验证上述识别方法的正确性及可行性,以下采用了大量的实验来进行模拟验证。

1、实验环境

本实施例的IaaS环境基于CloudStack云计算平台,系统版本4.0,搭建了一个小型的云计算系统,其中有1个管理服务器Management,2个主机节点Host,和1个存储节点Storage。主机节点Host的操作系统为Redhat server5.3,处理器Inter I5 3470@3.60GHz,内存8GB DDR3,硬盘容量1TB。Host上的虚拟机,操作系统为Ubuntu12.04版本,处理器为1GHz*2,内存 为2GB,网络带宽为150Mbs,磁盘转速为7200/分钟。

具体参数如下表:

表1

2、实验内容

实验一:向FTP服务器上传13。6GB的文件,文件一共14个,每个大小1GB左右。FTP服务器是主机Host上的一台虚拟机。实验数据如图4-图9所示。

图4的数据表明,在前1900秒的任务执行时间里,CPU的iowait所占用的百分比一直处于50%以上,而且较为剧烈。1900秒以后,任务结束,CPU消耗趋近于0。

图5的数据表明,在前1900秒的任务执行时间里,上下文切换达到了15000次/秒,说明系统很忙碌,CPU在频繁等待I/O的执行。1900秒以后,任务结束,上下文切换变为0。

图6的数据表明,在前1900秒的任务执行时间里,虚拟内存逐步上升,最后使用了16MB,表明该任务需要消耗虚拟内存。1900秒后,任务执行结束,虚拟空间未释放。

图7的数据表明,在前1900秒的任务执行时间里,阻塞队列达到每秒2。6个左右,表明系统因为某种原因,产生了大量阻塞,同时block<4,即小于CPU核数,表明系统并没有完全满负荷,仍然处于正常状态。1900秒后,任务执行结束,阻塞队列降为0。

图8的数据表明,在前1900秒的任务执行时间里,在硬盘上监测到大量的写数据,均值大于1MB/s,这表明硬盘正在保存大量数据。1900以后,任务执行结束,速率降为0。

图9的数据表明,在前1900秒的任务执行时间里,网络接收监测到了大量数据,均值大于1MB/s,表明网络中有大量数据向本机发送。1900以后,任务执行结束,速率将为0。

由图4-图9所示的参数,根据本发明所提出的六元组模型F(t)=(CPU,Csw,Mem,Process,I/O,Net)进行判定:

CPU:user<5%,system<5%,iowait>40%。CPUiowait占用很高的资源,表明CPU在频繁等待某种I/O操作。

Csw:中断不高,上下文切换>15000。系统中大量的上下文切换,表明系统级操作使用较高,可能是系统进程导致也可能是系统因等待某高优先级操作导致。

Mem:监测到使用了虚拟内存,有16MB,同时有页面置换产生,说明内存分配了大量资源用于I/O操作。

Process:阻塞队列中任务数为2。8个/秒,同时均小于4,4为CPU核数,表明系统不是满负荷状态,此虚拟机还能承受其他任务。

I/O:硬盘写速率大于10MB/s,硬盘读速率不高。I/O写有大量数据,这表明,I/O上有大量写操作。

Net:网络接收速率大于10MB/s,网络发送速率不高。网络上监测到大量接收数据,表明正在有大量数据从外部来到本机,且刚好等于硬盘写的速率。

结论:通过以上可以判断该应用为I/O密集型应用。

实验二:在科学计算服务器上运行计算并输出2亿以内质数的运算。科学计算服务器是主机Host上的一台虚拟机。实验数据如图10至图所示。

图10的数据表明,在整个执行过程中,iowait非常低,大部分时间为0,远小于阈值40%。

图11的数据表明,在整个执行过程中,上下文切换非常低,只有100左右,远小于10000。

图12的数据表明,在整个执行过程中,虚拟内存没有使用,表明该任务没有消耗虚拟内存。

图13的数据表明,在整个执行过程中,阻塞队列达到每秒0。8个左右,非常低,小于阈值2。系统处于正常状态。

图14的数据表明,在整个执行过程中,在硬盘上没有监测到硬盘读写的大量读写,在大多数时间内,I/O速率都为0。

图15的数据表明,在整个执行过程中,同时网络也没有监测到很大的数据,只有40B/s左右,该应用基本不消耗网络资源。

由图10-图15所示的参数,根据六元组F(t)=(CPU,Csw,Mem,Pro,I/O,Net)分析:

CPU:iowait<10%。CPU的iowait所占百分比很低,表明系统的CPU并没有等待I/O的操作。

Csw:上下文切换<100。表明系统并没有使用系统调度操作。

Mem:没有虚拟内存分配,也没有页面置换发生。

Process:阻塞队列中的任务数<1,表明系统正常状态,较为空闲。

I/O:硬盘上没有监测到大量读和写的数据,表明没有I/O操作的执行,该任务不消耗系统硬盘资源。

Net:网络上未监测到大量数据,表明该任务不消耗网络带宽资源。

结论:通过以上可以判断该应用不是I/O密集型应用。

3、分析

通过使用两组不同的实验来验证I/O密集型应用六元组的使用情况。首先用户向云计算中心的虚拟机上传文件来模拟典型的I/O密集型应用的类型,获取虚拟机执行该任务的运行信息,并记录下来,如果该运行信息符合I/O密集型应用六元组所规定的阈值范围以内,则说明I/O密集型应用六元组模型可以正确判断一个未知应用的符合该模型所表示的特征,从而判断该应用是I/O密集型应用。

通过用户在云计算中心的虚拟机上运行2亿以内的质数统计运算并打印输出,这是非I/O密集型应用,获取该任务运行时系统状态值并记录下来。由于这个应用模拟的是科学计算,它们在运行时会消耗大量的CPU资源和内存资源,对于I/O设备的抢占程度很低,因此它们所表现出来的状态特征会和I/O密集型应用六元组模型有明显差异,通过计算从而说明I/O密集型应用六元组可以计算一个未知应用不在I/O密集型应用六元组所规定的范围以内,从而判断该应用是非I/O密集型应用。

此外,还做了其他应用的大量实验,来进一步验证本发明的正确性和可行性,结果如表2所示:

表2

分析上表可得出,FTP服务器上的文件上传和下载等应用,各项参数都符合I/O密集型应用特征模型,因此系统判定它们为I/O密集型应用。然而对于矩阵乘法计算,π的计算等应用,由于在I/O读写上,基本监测不到I/O设备的读写,系统判定它们为非I/O密集型应用。对于视频服务和爬虫应用,由于在CPU上,CPUiowait所占百分比很小,因此系统判定它们为非I/O密集型应用。以上多组实验表明,本文提出的I/O密集型六元组代表了I/O密集型应用的共性特征,未知应用通过该模型的判定,能够很好地识别出是否为I/O密集型应用,具有很高的成功率,达到了预期的目的。

进一步地,基于第二实施例,提出本发明云计算环境下IO密集型应用识别方法的第三实施例,在本实施例中,在执行步骤S30的同时,还执行以下步骤:

将所述虚拟机当前的应用调度策略更新为预存的I/O密集型应用所对应的应用调度策略。

需要说明的是,本实施例为进一步增加云计算中心的资源利用效率,在第二实施例的基础上,增加了对虚拟机的应用调度策略的调整操作。以下仅针对该区别进行说明,其他可参照前述第二实施例,此处不再赘述。

在本发明实施例中,云计算环境下IO密集型应用识别装置在根据获取的资源分配策略调整虚拟机的资源的同时,还将虚拟机当前的应用调度策略更新为预存的I/O密集型应用所对应的应用调度策略。其中,I/O密集型应用所对应的应用调度策略包括:将I/O密集型应用对应的进程设置为不可抢占。

以本实施例所述的当前应用的进程为A进程进行说明:

如果A进程在运行期间,有一个优先级更高的进程到来,此时并不抢占A进程的运行权,而是将A进程的need_shed置位,等A进程运行完毕让出CPU资源后,立即进行调度,以保证A进程在运行期间不可抢占。其中,need_shed为标识进程是否需要执行调度的标识位。

本发明还提供一种执行前述云计算环境下IO密集型应用识别方法的云计算环境下IO密集型应用识别装置,参照图16,对应于前述云计算环境下IO密集型应用识别方法的第一实施例,在本发明云计算环境下IO密集型应用识别装置的第一实施例中,所述云计算环境下IO密集型应用识别装置包括:

确定模块10,用于确定虚拟机运行的当前应用的应用类型;

需要说明的是,本实施例提出的云计算环境下IO密集型应用识别装置应用于云数据中心中,通过云计算环境下IO密集型应用识别装置对用户请求的不同类型的应用针对性的进行计算资源的分配,能够提高云计算中心的资源利用率,达到节能降耗的目的。

具体的,在本实施例中,将应用分为两类,分别为I/O密集型应用和CPU密集型应用。其中,操作系统在运行I/O密集型应用时,其CPU效能相对硬盘/内存的效能要好很多,此时,系统运作,大部分的状况是CPU在等硬盘/内存的读/写,此时CPU负荷不高;操作系统在运行CPU密集型应用时,其硬盘/内存效能相对CPU的效能要好很多,此时,系统运作,大部分的状况是CPU满负荷运行。可以看出,不同类型的应用对CPU资源和I/O资源的需求不同。

具体的,云数据中心在接收到用户请求的应用时,会根据用户的请求分配一定的计算资源,也就是虚拟机。由虚拟机来执行用户请求的应用,而这个虚拟机的位置对用户是透明的,它可以运行在云数据中心的任一服务器上,也可以运行在云数据中心的多台服务器上。

在本实施例中,为实现计算资源的有效分配,云计算环境下IO密集型应用识别装置的确定模块10首先需要确定虚拟机运行的当前应用的应用类型,其中,虚拟机运行的当前应用即用户请求的应用。

例如,确定模块10识别到虚拟机运行当前应用的CPU占用率达到预设占用率且单位时间的I/O操作数小于预设操作数时,确定虚拟机当前运行的是CPU密集型应用;又例如,确定模块10识别到虚拟机运行当前应用的CPU占用率小于预设占用率且单位时间的I/O操作数达到预设操作数时,确定虚 拟机当前运行的是I/O密集型应用。其中,本实施例不对前述预设操作数和预设占用率做具体限制,本领域技术人员可根据实际需要进行设置,如本实施例设置预设占用率为80%,设置预设操作数为10000。

获取模块20,用于在确定所述虚拟机当前应用的应用类型时,获取确定的应用类型所对应的资源分配策略;

调整模块30,用于根据获取的所述资源分配策略调整所述虚拟机的资源。

需要说明的是,为实现计算资源的有效分配,本实施例根据不同类型的应用分别设置储存有对应的资源分配策略。例如,对应CPU密集型应用的资源分配策略包括增加虚拟机的CPU资源;对应I/O密集型应用的资源分配策略包括增加虚拟机的I/O资源。

在本发明实施例中,在确定模块10确定虚拟运行的当前应用的应用类型之后,获取模块20确定的应用类型获取对应的资源分配策略,例如,在确定模块10确定当前应用为CPU密集型应用时,获取模块20获取CPU密集型应用对应的资源分配策略;在确定模块10确定当前应用为I/O密集型应用时,获取模块20获取I/O密集型应用对应的资源分配策略。

在获取模块20获取到当前应用对应的资源分配策略之后,调整模块30根据获取模块20获取的资源分配策略调整虚拟机的资源,例如,在确定模块10确定当前当前应用为I/O密集型应用,且获取模块20获取的对应资源分配策略为“增加I/O资源,并减小CPU资源”时,则调整模块30增加运行当前应用的虚拟机的I/O资源,同时减小该虚拟机的CPU资源。

其中,本实施例对资源的调整量不做具体限制,本领域技术人员可根据实际需要进行设置,例如,设置CPU资源的调整量为“0.5GHz”。

本实施例提出的云计算环境下IO密集型应用识别装置,在应用于云数据中心时,能够对用户请求的不同类型的应用针对性的进行计算资源的分配,使得分配的计算资源能够有效满足不同类型应用对计算资源的需求,相较于现有技术采用通用的资源分配策略进行资源分配,本发明能够有效提升云数据中心的资源利用率,达到节能降耗的目的。

进一步地,基于第一实施例,提出本发明云计算环境下IO密集型应用 识别装置的第二实施例,对应于前述云计算环境下IO密集型应用识别方法的第二实施例,在本实施例中,所述确定模块10还用于,

采集所述虚拟机运行当前应用时的运行信息;

分析获取的运行信息是否满足预存的I/O密集型应用所对应的判定条件;以及

在所述运行信息满足所述判定条件时,确定所述虚拟机当前运行I/O密集型应用。

需要说明的是,本实施例在第一实施例的基础上,进一步提出一种更精确的应用类型识别方案,以下以I/O密集型应用的识别为例进行说明,其他可参照前述实施例,此处不再赘述。

在本实施例中,建立了针对I/O密集型应用的特征识别模型,为一特征六元组:

(CPU,Csw,Mem,Process,I/O,Net)

其中,CPU表示CPU状态,Csw表示应用上下文切换状态,Mem表示虚拟内存使用状态,Pro表示进程阻塞状态,I/O表示硬盘读写状态,Net表示网络传输状态,具体的,

CPU:主要考察CPUiowait,CPUuser和CPUsystem状态下的CPU占用值。对于I/O密集型应用,CPUiowait的百分比会大于一个阈值C,根据大量实验,C可取40%,即CPUiowait>40%。CPUuser和CPUsystem的百分比会小于一个阈值U,对于本实施例的实验环境,U取5%。CPU的iowait占用很高的时间,表明CPU在频繁等待某种I/O操作。

Csw:主要考察每秒上下文切换的数量。如果是I/O密集型应用,那么上下文切换很高。通常上下文切换会大于一个阈值W,根据大量实验,W可取10000。系统中大量的上下文切换,可能是系统进程导致也可能是系统因等待某高优先级操作导致。

Mem:主要考察虚拟内存的使用情况。内存分为实际内存和虚拟内存。如果是I/O密集型应用,会使用虚拟内存,并且有大量页面置换产生。虚拟内存会大于一个阈值M,根据大量实验,M可取16MB,说明内存分配了大量资源用于I/O操作。

Process:主要考察每秒阻塞队列中的任务数(block)。当负载较高或资 源紧张时,系统就会把一些任务放入阻塞队列中,等待合适的时机去执行。如果是I/O密集型应用,阻塞队列较高,并且会大于一个阈值P,对于IO密集型应用,取P为2。一般情况阻塞队列小于CPU核数,通常单个I/O密集型应用不会导致系统处于高负载状态。

I/O:I/O主要考察每秒硬盘读写速率(disk_write)和(disk_read)。如果是I/O密集型应用读写速率会很高,通常会大于一个阈值V,V可取1MB/s。

Net:主要考察每秒发送和接收的网络流量。如果是I/O密集型应用,那么接收或者发送的流量会很高,通常会大于一个阈值N,N可取1MB/s。网络上监测到大量流量数据,表明正在传输数据,可能是文件上传下载服务或者流媒体服务。

在本实施例中,为识别虚拟机运行的当前应用的应用类型,确定模块10首先采集该虚拟机运行当前应用时的运行信息,包括所述虚拟机的上下文的单位切换数量、虚拟内存占用值、阻塞队列的单位任务数、硬盘读写速率、网络传输速率以及其在CPUiowait、CPUuser和CPUsystem状态下的CPU占用值。

在采集到所述虚拟机运行当前应用时的运行信息之后,确定模块10进一步分析获取的运行信息是否满足预存的I/O密集型应用所对应的判定条件(即前述特征六元组)。

具体的,参照图3,确定模块10首先对CPU数据进行分析,比较当前CPUiowait的CPU占用值和阈值C(即虚拟机在CPUiowait下的CPU占用值所对应的第一预设阈值),以及分别比较当前CPUuser和CPUsystem的CPU占用值与U的大小。如果满足当前CPUiowait的CPU占用值大于阈值C且CPUuser和CPUsystem的CPU占用值均小于U(即第二预设阈值),那么转到下一步,否则,转到第七步;

其次,确定模块10分析虚拟机每秒钟的上下文切换数量。比较上下文切换数量的数量和阈值W(即上下文的单位切换数量所对应的第一预设阈值)。如果满足上下文切换数大于阈值W,则转到下一步,否则,转到第七步;

第三,确定模块10分析虚拟内存所占的空间大小。比较虚拟内存占用值和阈值M(即虚拟内存占用值所对应的第一预设阈值),如果虚拟内存占用值大于阈值M,则转到下一步,否则,转到第七步;

第四,确定模块10分析每秒钟阻塞队列中的任务数。将该数量和阈值P进行比较,如果每秒钟的阻塞队列中的任务数大于阈值P(即阻塞队列的单位任务数所对应的第一预设阈值),则转到下一步,否则,转到第七步;

第五,确定模块10分析硬盘读写速率。检查硬盘读写速率是否很大并且将其和阈值I(即硬盘读写速率所对应的第一预设阈值)进行比较,如果大于阈值I,则转到下一步,否则,转到第七步;

第六,确定模块10分析网络传输速率。检查是否有大量的网络流量并且和阈值N进行比较,如果大于阈值N(即网络传输速率所对应的第一预设阈值),则确定当前应用是I/O密集型应用,退出,否则,转到第七步;

第七,确定当前应用不是I/O密集型应用,退出。

进一步地,基于第二实施例,提出本发明云计算环境下IO密集型应用识别装置的第三实施例,对应于前述云计算环境下IO密集型应用识别方法的第三实施例,在本实施例中,所述调整模块30还用于将所述虚拟机当前的应用调度策略更新为预存的I/O密集型应用所对应的应用调度策略。

需要说明的是,本实施例为进一步增加云计算中心的资源利用效率,在第二实施例的基础上,增加了对虚拟机的应用调度策略的调整操作。以下仅针对该区别进行说明,其他可参照前述第二实施例,此处不再赘述。

在本发明实施例中,调整模块10在根据获取的资源分配策略调整虚拟机的资源的同时,还将虚拟机当前的应用调度策略更新为预存的I/O密集型应用所对应的应用调度策略。其中,I/O密集型应用所对应的应用调度策略包括:将I/O密集型应用对应的进程设置为不可抢占。

以本实施例所述的当前应用的进程为A进程进行说明:

如果A进程在运行期间,有一个优先级更高的进程到来,此时并不抢占A进程的运行权,而是将A进程的need_shed置位,等A进程运行完毕让出CPU资源后,立即进行调度,以保证A进程在运行期间不可抢占。其中,need_shed为标识进程是否需要执行调度的标识位。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间 接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1