一种基于云平台的多维度任务识别方法及装置与流程

文档序号:11285952阅读:317来源:国知局
一种基于云平台的多维度任务识别方法及装置与流程

本发明涉及任务识别技术领域,更具体地说,涉及一种基于云平台的多维度任务识别方法及装置。



背景技术:

numa架构为非一致性内存架构(non-uniformmemoryarchitecture),是为了解决传统的对称多处理(symmetricmulti-processor)系统中的可扩展性问题而诞生的。在numa架构中可运行很多不同类型的任务,目前对不同类型任务的识别,一般是通过单一属性进行识别,这种识别方式不准确,并且无法知道不同类型任务的资源消耗情况。

因此,如何对任务进行准确识别,是本领域技术人员需要解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于云平台的多维度任务识别方法及装置,以实现准确对任务进行识别。其具体方案如下:

一种基于云平台的多维度任务识别方法,包括:

检测任务的运行状态及资源需求,并记录所述任务的多维度参数;

利用所述任务的运行状态、资源需求以及多维度参数,生成与所述任务对应的指纹;

判断经验数据库中是否存在与所述指纹一致的目标指纹;若存在,则识别成功;若不存在,则识别失败;所述经验数据库中包括已识别任务的指纹。

其中,所述检测任务的运行状态及资源需求,并记录所述任务的多维度参数;利用所述任务的运行状态、资源需求以及多维度参数,生成与所述任务对应的指纹,包括:

通过计数器对所述任务的预定的硬件采样事件进行信息采集,并记录所述任务的多维度参数;

对采集的信息进行分析挖掘,并利用所述多维度参数生成与所述任务对应的指纹;其中,所述指纹包括:与所述任务对应的多个硬件性能指标,以及与所述任务对应的运行时间及运行地点。

其中,所述识别成功之后,还包括:

从所述经验数据库中获取与所述目标指纹对应的资源调度策略并执行。

其中,所述经验数据库的生成方法包括:

利用指纹以及基于数据挖掘的分类算法,对任务进行分类,生成多个任务分类集合;

通过资源分配器对每个任务分类集合中的每个任务进行动态资源调整,确定每个任务的资源调度策略,生成经验数据库。

其中,所述利用指纹以及基于数据挖掘的分类算法,对任务进行分类,生成多个任务分类集合,包括:

利用指纹及kmeans分类算法对任务进行分类,生成多个任务分类集合。

一种基于云平台的多维度任务识别装置,包括:

检测模块,用于检测任务的运行状态及资源需求;

记录模块,用于记录所述任务的多维度参数;

指纹生成模块,用于利用所述任务的运行状态、资源需求以及多维度参数,生成与所述任务对应的指纹;

判断模块,用于判断经验数据库中是否存在与所述指纹一致的目标指纹;若存在,则识别成功;若不存在,则识别失败;所述经验数据库中包括已识别任务的指纹。

其中,所述检测模块通过计数器对所述任务的预定的硬件采样事件进行信息采集;

所述指纹生成模块通过对采集的信息进行分析挖掘,并利用所述多维度参数生成与所述任务对应的指纹;其中,所述指纹包括:与所述任务对应的多个硬件性能指标,以及与所述任务对应的运行时间及运行地点。

其中,还包括:

执行模块,用于从所述经验数据库中获取与所述目标指纹对应的资源调度策略并执行。

其中,还包括经验数据库生成模块;所述经验数据库生成模块包括:

分类单元,用于利用指纹以及基于数据挖掘的分类算法,对任务进行分类,生成多个任务分类集合;

资源调度策略生成模块,用于通过资源分配器对每个任务分类集合中的每个任务进行动态资源调整,确定每个任务的资源调度策略,生成经验数据库。

其中,所述分类单元利用指纹及kmeans分类算法对任务进行分类,生成多个任务分类集合。

通过以上方案可知,本发明实施例提供的一种基于云平台的多维度任务识别方法,包括:检测任务的运行状态及资源需求,并记录所述任务的多维度参数;利用所述任务的运行状态、资源需求以及多维度参数,生成与所述任务对应的指纹;判断经验数据库中是否存在与所述指纹一致的目标指纹;若存在,则识别成功;若不存在,则识别失败;所述经验数据库中包括已识别任务的指纹;可见,在本实施例中,通过任务的运行状态、资源需求,以及任务的多维参数,可生成与每个任务相对应的指纹,这样在检测到新的任务时,可通过将新任务的指纹与经验数据库中存储的已识别任务的指纹进行对比,实现对新任务的识别;本发明还公开了一种基于云平台的多维度任务识别装置,同样能实现上述技术效果。

附图说明

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

图1为本发明实施例公开的一种基于云平台的任务识别方法流程图;

图2为本发明实施例公开的一种基于云平台的任务识别装置结构示意图;

图3为本发明实施例公开的一种基于云平台的多维度任务识别方法流程图;

图4为本发明实施例公开的一种基于云平台的多维度任务识别装置结构示意图;

图5为本发明实施例公开的一种基于云平台的任务瓶颈确定方法流程图;

图6为本发明实施例公开的一种基于云平台的任务瓶颈确定装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

当前,numa架构作为非一致性内存架构,是为了解决传统的对称多处理系统中的可扩展性问题而诞生的。在numa架构中可运行很多不同类型的任务,目前对不同类型任务的识别,一般是通过单一属性进行识别,这种识别方式不准确,并且无法知道不同类型任务的资源消耗情况。如何对任务进行准确识别,是本领域技术人员需要解决的问题。为此,本发明实施例相应地公开了一种基于云平台的任务识别方法及装置,以实现对基于云平台的任务进行识别。

参见图1,本发明实施例提供的一种基于云平台的任务识别方法,包括:

s101、检测任务的运行状态及资源需求;

具体的,本方案中的运行状态和资源需求与实时统计的硬件事件信息相同,即为整个服务器硬件资源信息,从cpu信息到磁盘信息均可,包括硬件资源信息以及操作系统信息,通过这些信息均可以了解到任务的资源消耗以及资源需求。本方案的运行状态为:当前任务在运行过程中在哪些服务器硬件资源上的消耗情况,资源需求包括整体服务器的硬件资源,网络,计算,存储等。

s102、利用所述任务的运行状态及资源需求,生成与所述任务对应的指纹;

具体的,为了精确了解每个任务的资源请求,在本方案中生成每个任务的指纹,以识别任务的资源需求。首先,需要提取任务的资源指纹,在提取资源指纹时,需要满足如下策略,并且,通过任务的运行状态及资源需求所生成的指纹,可以准确的标注任务的资源消耗,以及当前资源供给与任务资源需要的匹配程度。

无干扰的监测策略:由于云端上一般会运行多个不同的应用任务,在本方案中并不能假设云端所有的接口都是开放的,即,并不是所有的guestvm以及应用任务的信息都是可以在生产环境中直接被获得,因此,设计无干扰式的监测手段并且不依赖生产环境的可用接口变得至关重要;

隔离性策略:为了保证采样的精确性,需要确保应用任务的指纹信息不受其他采样过程的性能影响,并且确保任务指纹的采样精确性不受其他任务的性能干扰;

轻量性策略:采样指纹的过程会不可避免的带来性能开销,本方案设计的代理模块将任务拷贝至采样环境时,需要产生较少的开销以避免给系统带来额外的资源压力。

s103、判断经验数据库中是否存在与所述指纹一致的目标指纹;若存在,则识别成功;若不存在,则识别失败;所述经验数据库中包括已识别任务的指纹。

具体的,本方案中,可以使用底层的指标捕捉负载任务的行为,为不同的任务打上唯一的标签,例如任务的指纹。通过这种方式,无需事先了解任务的信息以及访问行为,便可以在任务运行时对任务进行识别;例如,对于benchmark的行为,本实施例在测试之前通常都已经了解,而生产环境的任务行为通常情况下是无法被事先捕捉的,这样通过设置与不同任务对应的唯一指纹,便可以通过指纹识别该任务。

需要说明的是,虚拟化环境通常都已配置了多种资源监控工具以标注不同的虚拟机资源信息。例如,xeon中的xentop命令可以报告虚拟机的资源信息(cpu,mem,i/o)。此外,现代处理器使用多个特殊的寄存器,用于监测性能计数器,并且产生的性能开销极小。例如:hpc(hardwareperformancecounters,硬件性能计数器)可以用于负载异常现场的监测,以及在线请求的识别。此外,hpc的采样过程可以避免改动guestvm。在vm调度之前读取hpc,再根据hpc值进行下一步调度的建议。

具体的,在本实施例中,为了保证任务的指纹可以适用于任意的采样时间长度,本实施例将指纹采样的值归一化于采样的时间。这样的选择方式可以使得指纹采样系统并不受采样的时间长度所影响。并且,若从经验数据库中能查到与该任务的指纹一样的任务,那么则说明对该任务已识别成功,识别成功后,并可根据该经验数据库确定该任务的类型信息,或者确定与该任务对应的资源调度策略。

基于上述实施例,所述检测任务的运行状态及资源需求,利用所述任务的运行状态及资源需求,生成与所述任务对应的指纹,包括:

通过计数器对所述任务的预定的硬件采样事件进行信息采集,并对采集的信息进行分析挖掘,生成与所述任务对应的指纹;其中,所述指纹中包括多个硬件性能指标。

具体的,由于云环境下服务的多样性,为了保证生成的任务指纹能够准确的识别不同的任务,在本实施例中采用数据挖掘的方式来标注负载任务之间的区别,确定与每个任务的硬件性能指标对应的数值范围,在对任务进行识别时,只要该任务的硬件性能指标的计数值落在相对应的数值区间内,则认为该任务与该区间内的任务属于同一种类型的任务。需要说明的是,如果任务的访问类型(例如,read/write比率)或者负载强度发生了变化,那么计数器采集的硬件性能指标的值会出现差值,并且负载变化越强烈,该值的差异性将会越大,这样,才可以通过不同类型的任务的指纹,对不同访问类型的任务进行识别。此外,负载指纹采样所需的其他计数器值将会降低归类的噪声以确保任务分类精度。

具体的,在本实施例中,使用典型特征的选择过程,即通过分类算法进行指标特征的选择,可帮助本实施例理解任务的主要特性。在本方案中,可以采用weka机器学习工具用于采样数据集的分类,并且,根据以往的经验,可将cfssubseteval技术与greedstepwise搜索方式结合,从而可以获得较高的分类准确性。需要说明的是,本实施例中的任务的指纹可以划分为n个维度,其中每个维度均有hpc事件所表征:

ws={m1,m2,......,mn}

其中mi表示采样的第i个硬件性能指标i。为了保证采样的精确性,本实施例会根据不同的任务类型选择合适的采样指标。例如,以rubis负载请求为例,针对这样模拟电商系统的benchmark,本实施例采用如表1所示的硬件采样事件。这些事件囊括了一系列的性能信息,如cpu,cache,memory以及busqueue。

表1基于硬件底层信息的指纹标签

基于上述实施例,所述经验数据库的生成方法包括:

利用指纹以及基于数据挖掘的分类算法,对任务进行分类,生成多个任务分类集合;通过资源分配器对每个任务分类集合中的每个任务进行动态资源调整,确定每个任务的资源调度策略,生成经验数据库。

其中,所述利用指纹以及基于数据挖掘的分类算法,对任务进行分类,生成多个任务分类集合,包括:利用指纹及kmeans分类算法对任务进行分类,生成多个任务分类集合。

具体的,由于网络相关任务的访问周期性特征,本实施例需要确保较高的“访问cache”命中率。本实施例首先需要确定任务的首选资源,并且还需要保证该资源信息将会在未来具有较高的复用度。而调整任务的资源分配与获得的复用度之间存在一个折中的考虑。其中一个最简易的办法在于将每个任务的特征均进行记录,也就是通过硬件性能指标生成指纹时增加采样的指标,这样会带来较大的访问cache命中率但是这样一来并不现实,会给指纹模块以及分析过程带来很大的性能开销。例如,intelxeonx5472具有4个寄存器并且可以支撑60个不同的采样事件。从实践的角度分析,采样如此之多的hpc事件并不完全实用,在进行任务分类过程时并不能起到区分的功效。从另外一个角度来说,降低采样的数量将会降低样本空间的维度并且可以显著地加速机器学习算法的分类过程,但是如果删除一些典型任务的采样信息,将会导致无法接受的资源分配效率,直接带来性能的下降。

为了解决该问题,在本实施例中采用任务分类以及任务集合的方式进行任务特征类型的标注。首先,一段时间的监测(例如,一天或者一个星期)。在采样时间内,本实施例将会收集硬件的采样事件信息。其次,将采样信息进行分析,挖掘以生成任务的指纹信息,并且将每个任务用n维空间进行标注(n表示指纹的采样种类)。最后,本实施例将任务进行分类。

本实施例具体可以采用标准的分类工具,例如kmeans,生成任务的集合。本实施例希望该分类框架可以自动的确定集合的个数,并且还能够兼顾采样的性能开销以及“访问cache”的命中率。本实施例假设生产环境的负载可以由该任务分类集合进行表征。用集合进行标注生产环境的任务行为的优点在于无需使得生产环境的hpc硬件指标值与采样环境完全相同。本实施例设计负载集合的方案用于将生产环境的任务行为与采样环境的任务行为进行归类标注,例如,在采样环境下,若负载a与负载b的行为更加接近,而与负载c的特性区分比较大,在采样环境下表现的该集合特征同样会在生产环境下出现。

一旦分类器生产了负载的分类集合,资源分配器(tuner)接下来对于集合中的每个任务进行动态资源调整。首先本实施例选择靠近集合中心最近的负载任务。其次,资源调整策略确定高效的,充分的,而非浪费的资源分配方式(如,一系列虚拟化资源)用于确保任务满足其slo(servicelevelobject)。可以通过实验的方式确认最小的资源分配细节。此外,tuner的工作方式既可以是进行人工指定也会进行自适应调整。tuner完成任意任务集合的资源分配之后,本实施例继续设计一个表用于记录任务的倾向性资源分配,生成指纹信息库,即本方案中的经验数据库,用于后续的“访问cache”。对于tuner的设计,本实施例采用线性查找的方式,将一系列的目标负载行为进行“重放”,再针对特定的虚拟机进行动态的增量式资源配给,随后选择可以满足slo的最小资源分配。例如,动态的增量调整cpu以及memory的资源分配直到满足slo。

基于上述任意实施例,所述识别成功之后,还包括:

从所述经验数据库中获取与所述目标指纹对应的资源调度策略并执行。

具体的,在本实施例中,利用先验的资源调度决策生成经验数据库,在相似任务或者相同任务到来时复用该经验数据库的资源调度策略以支持在线资源调度。本设计对于动态变化的负载特征同样具有健壮性,选择不同的,合适的时间点对于任务访问强度进行采样从而捕捉任务在不同需求强度下对于计算资源的需求。

具体的,在本实施例中,通过经验数据库中的指纹对任务进行识别之后,通过自适应资源调度器从经验数据库中调取策略进行分配策略,该调度器需要确定一个可行性方案用于决定新到的任务属于哪个任务分类集合-类似于cache查询操作。本实施例采用前述分类的任务集合用于标注任务,并且将任务集合进行编号,这样可以使得分类器快速选择出任务隶属的任务集合。本实施例采用weka机器学习包中的贝叶斯模型(bayesian)以及决策树(decisiontrees)用于分类器的设计。一旦一个任务出现变化时(例如,强度或者其他资源需求),本实施例仍然需求收集底层的硬件信息去构建新的任务指纹,紧接着查询指纹信息库用于在当前可用指纹信息中寻找最优匹配。在该基础上,本实施例采用先前定义的分类策略并且输出新到的任务类型需要的资源分配策略。

下面对本发明实施例提供的任务识别装置进行介绍,下文描述的任务识别装置与上文描述的任务识别方法可以相互参照。

参见图2,本发明实施例提供的一种基于云平台的任务识别装置,包括:

检测模块201,用于检测任务的运行状态及资源需求;

指纹生成模块202,用于利用所述任务的运行状态及资源需求,生成与所述任务对应的指纹;

判断模块203,用于判断经验数据库中是否存在与所述指纹一致的目标指纹;若存在,则识别成功;若不存在,则识别失败;所述经验数据库中包括已识别任务的指纹。

基于上述实施例,所述检测模块通过计数器对所述任务的预定的硬件采样事件进行信息采集;

所述指纹生成模块通过对采集的信息进行分析挖掘,生成与所述任务对应的指纹;其中,所述指纹中包括多个硬件性能指标。

基于上述实施例,还包括:

执行模块,用于从所述经验数据库中获取与所述目标指纹对应的资源调度策略并执行。

基于上述实施例,还包括经验数据库生成模块;所述经验数据库生成模块包括:

分类单元,用于利用指纹以及基于数据挖掘的分类算法,对任务进行分类,生成多个任务分类集合;

资源调度策略生成模块,用于通过资源分配器对每个任务分类集合中的每个任务进行动态资源调整,确定每个任务的资源调度策略,生成经验数据库。

基于上述实施例,所述分类单元利用指纹及kmeans分类算法对任务进行分类,生成多个任务分类集合。

为了提升任务识别的细分程度,以便能够提高任务识别精确度,本实施例进一步公开了一种基于云平台的多维度任务识别方法进行介绍,该多维度任务识别方法是在上述任意实施例为基础上进行多维度的识别;因此,下文描述的多维度任务识别方法及装置与上文描述的任务识别方法及装置可以相互参照,在本实施例中仅对不同之处进行描述,相同之处便不再赘述。

参见图3,本发明实施例提供的一种基于云平台的多维度任务识别方法,包括:

s301、检测任务的运行状态及资源需求,并记录所述任务的多维度参数;

具体的,本实施例中的运行状态和资源需求与实时统计的硬件事件信息相同,即为整个服务器硬件资源信息,从cpu信息到磁盘信息均可,包括硬件资源信息以及操作系统信息,通过这些信息均可以了解到任务的资源消耗以及资源需求。本方案的运行状态为:当前任务在运行过程中在哪些服务器硬件资源上的消耗情况,资源需求包括整体服务器的硬件资源,网络,计算,存储等;本实施例中的任务的多维度参数具体可以为任务的运行时间和运行地点等信息,通过该多维度参数,能从多角度分析任务,从而为任务匹配到更合适的指纹信息。

s302、利用所述任务的运行状态、资源需求以及多维度参数,生成与所述任务对应的指纹;

具体的,在本方案中通过运行状态、资源需求以及多维度参数生成与所述任务对应的指纹的方法,与上述实施例中描述的指纹生成方式一致,唯一不同的是,在本实施例所生成的指纹中,还包括与任务对应的多维度参数,例如任务时间信息与运行地点信息等。

s303、判断经验数据库中是否存在与所述指纹一致的目标指纹;若存在,则识别成功;若不存在,则识别失败;所述经验数据库中包括已识别任务的指纹。

具体的,任务的运行时间及运行地点的不同,会导致产生的指纹不同;因此,在本实施例中为了提高识别的准确度,可将在检测任务的运行状态及资源需求时,同时采集该任务的多维度参数,该多维度参数可以为任务的运行时间、运行地点等,这样在对任务进行识别时,可优先从经验数据库中运行时间及运行地点一致的指纹开始查找,从而提高了任务识别的准确度。

基于上述实施例,所述检测任务的运行状态及资源需求,并记录所述任务的多维度参数;利用所述任务的运行状态、资源需求以及多维度参数,生成与所述任务对应的指纹,包括:

通过计数器对所述任务的预定的硬件采样事件进行信息采集,并记录所述任务的多维度参数;

对采集的信息进行分析挖掘,并利用所述多维度参数生成与所述任务对应的指纹;其中,所述指纹包括:与所述任务对应的多个硬件性能指标,以及与所述任务对应的运行时间及运行地点。

需要说明的是,为了保证生成的任务指纹能够准确的识别不同的任务,在本实施例中采用数据挖掘的方式来标注负载任务之间的区别,确定与每个任务的硬件性能指标对应的数值范围,以及该类型的任务所对应的运行时间信息或者运行地点信息;在对任务进行识别时,只要该任务的硬件性能指标的计数值落在相对应的数值区间内,以及与该区间内的任务的运行时间和运行地点相同,则认为该任务与该区间内的任务属于同一种类型的任务;在本实施例中对指纹的生成与上述实施例中的指纹生成方式相同,在此不再赘述。

基于上述实施例,所述经验数据库的生成方法包括:

利用指纹以及基于数据挖掘的分类算法,对任务进行分类,生成多个任务分类集合;

通过资源分配器对每个任务分类集合中的每个任务进行动态资源调整,确定每个任务的资源调度策略,生成经验数据库。

基于上述实施例,所述利用指纹以及基于数据挖掘的分类算法,对任务进行分类,生成多个任务分类集合,包括:

利用指纹及kmeans分类算法对任务进行分类,生成多个任务分类集合。

需要说明的是,本实施例中的经验数据库的生成方法与上述实施例中的生成方式一致,在此不再赘述。

基于上述实施例,所述识别成功之后,还包括:

从所述经验数据库中获取与所述目标指纹对应的资源调度策略并执行。

具体的,在本实施例中,首先利用先验的资源调度决策生成经验数据库,在相似任务或者相同任务到来时复用该经验数据库的资源调度策略以支持在线资源调度。

需要说明的是,通过经验数据库中的指纹对任务进行识别之后,通过自适应资源调度器从经验数据库中调取策略进行分配策略,该调度器需要确定一个可行性方案用于决定新到的任务属于哪个任务分类集合-类似于cache查询操作。本实施例采用前述分类的任务集合用于标注任务,并且将任务集合进行编号,这样可以使得分类器快速选择出任务隶属的任务集合。本实施例采用weka机器学习包中的贝叶斯模型(bayesian)以及决策树(decisiontrees)用于分类器的设计。一旦一个任务出现变化时(例如,强度或者其他资源需求),本实施例仍然需求收集底层的硬件信息去构建新的任务指纹,紧接着查询指纹信息库用于在当前可用指纹信息中寻找最优匹配。在该基础上,本实施例采用先前定义的分类策略并且输出新到的任务类型需要的资源分配策略。

参见图4,本发明实施例提供的一种基于云平台的多维度任务识别装置,包括:

检测模块401,用于检测任务的运行状态及资源需求;

记录模块402,用于记录所述任务的多维度参数;

指纹生成模块403,用于利用所述任务的运行状态、资源需求以及多维度参数,生成与所述任务对应的指纹;

判断模块404,用于判断经验数据库中是否存在与所述指纹一致的目标指纹;若存在,则识别成功;若不存在,则识别失败;所述经验数据库中包括已识别任务的指纹。

基于上述实施例,所述检测模块通过计数器对所述任务的预定的硬件采样事件进行信息采集;

所述指纹生成模块通过对采集的信息进行分析挖掘,并利用所述多维度参数生成与所述任务对应的指纹;其中,所述指纹包括:与所述任务对应的多个硬件性能指标,以及与所述任务对应的运行时间及运行地点。

基于上述实施例,还包括:

执行模块,用于从所述经验数据库中获取与所述目标指纹对应的资源调度策略并执行。

基于上述实施例,还包括经验数据库生成模块;所述经验数据库生成模块包括:

分类单元,用于利用指纹以及基于数据挖掘的分类算法,对任务进行分类,生成多个任务分类集合;

资源调度策略生成模块,用于通过资源分配器对每个任务分类集合中的每个任务进行动态资源调整,确定每个任务的资源调度策略,生成经验数据库。

基于上述实施例,所述分类单元利用指纹及kmeans分类算法对任务进行分类,生成多个任务分类集合。

综上可见,在本方案中,通过任务的运行状态、资源需求以及多维度运行参数,可生成与每个任务相对应的指纹,这样在检测到新的任务时,可通过将新任务的指纹与经验数据库中存储的已识别任务的指纹进行对比,实现对新任务的识别。

为了找到提升系统整体性能的技术方案,有必要准确地对任务的瓶颈进行确定,由此,本发明实施例进一步公开了一种基于云平台的任务瓶颈确定方法,需要说明的是,下文描述的任务瓶颈确定方法及装置与上文描述的任务识别方法及装置可以相互参照,仅对不同之处进行描述。

参见图5,本发明实施例提供的一种基于云平台的任务瓶颈确定方法,包括:

s501、检测每个任务的运行状态及资源需求;

具体的,本方案中的运行状态和资源需求与实时统计的硬件事件信息相同,即为整个服务器硬件资源信息,从cpu信息到磁盘信息均可,包括硬件资源信息以及操作系统信息,通过这些信息均可以了解到任务的资源消耗以及资源需求。本方案的运行状态为:当前任务在运行过程中在哪些服务器硬件资源上的消耗情况,资源需求包括整体服务器的硬件资源,网络,计算,存储等。

s502、根据每个任务的运行状态及资源需求生成与每个任务对应的指纹;

其中,所述检测每个任务的运行状态及资源需求;根据每个任务的运行状态及资源需求生成与每个任务对应的指纹,包括:

通过计数器对预定的硬件采样事件进行信息采集;

对采集的信息进行分析挖掘,生成与所述任务对应的指纹;其中,所述指纹中包括多个硬件性能指标

需要说明的是,在本实施例中对指纹的生成,与上述实施例中对指纹的生成方式一致,在此不再赘述。

s503、从经验数据库中获取与每个任务的指纹对应的资源调度策略并执行;

其中,所述从经验数据库中获取与每个任务的指纹对应的资源调度策略并执行,包括:

判断经验数据库中是否存在与指纹一致的目标指纹;

若存在,则从所述经验数据库中获取与所述目标指纹对应的资源调度策略并执行;若不存在,则根据任务的指纹更新经验数据库。

具体的,在本实施例中,对于新达到的任务,如果分类系统发现该任务与经验库的任务指纹相同,则采用经验库中采纳的调度策略。如果分类系统发现无法与经验库内缓存数据进行匹配,则执行新的资源配置策略。如果分类系统无法监测新达到的任务,本实施例将给该任务最大的可用资源。该设计策略可以极大程度地降低不必要的资源配给以及保证任务的性能需求。

s504、监测运行的任务间是否存在资源竞争;若存在,则对系统的资源瓶颈进行确定。

其中,所述对系统的资源瓶颈进行确定之后,包括:

确定不满足目标服务水平slo的目标任务;

根据所述目标任务的资源瓶颈、任务类型以及任务指标,对所述目标任务的资源调度策略进行调整;其中,所述任务指标包括硬件性能指标及任务固有性能指标。

具体的,对于多任务处理系统,会产生资源干扰,并且资源干扰会带来性能的降级,从而使slo无法被满足。因此,本实施例需要评估任务资源竞争对于性能的影响,并且考虑性能瓶颈资源的分配。在本实施例中,对系统的资源瓶颈进行确定时,是根据每个任务的特定硬件性能指标对系统的资源瓶颈进行确定。即采用服务器的硬件计数器,对于计数器监测的特定单元的性能参数进行统计,用于判断资源瓶颈。并且在对目标任务进行瓶颈资源调度时,需要根据任务类型进行合理的调度,比如说a,b两个任务同时运行时的瓶颈资源为cache,本实施例判断当前ab任务的需求以及优先级,进行cache级的任务调度以便a或者b都可以拿到合适的资源以满足性能需求。

具体的,在本方案中,自适应调度器需要实时的监测任务的性能结果,例如:延迟,吞吐量或者任务完成时间等信息。如果slo无法被满足,则需要进一步调整瓶颈资源的分配。任务资源的干扰需要与负载的变化进行区隔,因为资源干扰带来的性能降级与负载强度的变化具有本质的不同,负载强度变化可以从任务分类中体现出来。本实施例采用如下的公式标识资源竞争带来的性能影响:

该index表示在完成资源分配之后,资源竞争对于性能的影响。值得说明的是,本实施例并不仅仅依赖于底层硬件信息作为任务的性能指标,还依赖于任务本身固有的性能指标,例如,响应时间与吞吐量。因此,当任务竞争确实存在时,资源竞争分析器指定资源竞争的瓶颈,例如,共享cache以及i/o;并且,在运行调度策略后,如果任务固有的性能指标无法被满足,本实施例对资源调度策略进行调整,例如:调整最低的资源分配用于满足任务的性能需求。此外,调度器通过任务的指纹从经验数据库中查询当前瓶颈资源的分配建议,如果当前的指纹信息库中不包含到来任务的对应指纹信息,调度器在指纹库中找到类似的指纹索引,找出类似的资源分配策略用于执行调度过程。

需要说明的是,如果资源竞争带来的性能降级唤起资源的重新分配,那么分析器将会根据cpi的结果指定导致性能降级的瓶颈资源。cpi的结果可以很好的捕捉vm到底花了多长时间用于处理任务。性能干扰将会使得vm承受更多的stallcycles以及处理更少的工作。

本实施例进一步分析运行态的性能指标:

toverall=tcore+toff_core+tdisk+tnet

其中tcore表示在cpu核心上运行的指令数,toff_core表示内存访问导致的额外cpu停顿,tdisk表示磁盘访问的停顿时间,tnet表示网络相关的运行时间。

参见图6,本发明实施例提供的一种基于云平台的任务瓶颈确定装置,包括:

检测模块601,用于检测每个任务的运行状态及资源需求;

指纹生成模块602,用于根据每个任务的运行状态及资源需求生成与每个任务对应的指纹;

执行模块603,用于从经验数据库中获取与每个任务的指纹对应的资源调度策略并执行;

资源瓶颈确定模块604,用于监测运行的任务间是否存在资源竞争;若存在,则对系统的资源瓶颈进行确定。

基于上述任意实施例,所述指纹生成模块通过计数器对预定的硬件采样事件进行信息采集,对采集的信息进行分析挖掘,生成与所述任务对应的指纹;其中,所述指纹中包括多个硬件性能指标。

基于上述任意实施例,所述执行模块,包括:

判断单元,用于判断经验数据库中是否存在与指纹一致的目标指纹;

执行单元,用于在所述经验数据库中存在与指纹一致的目标指纹时,从所述经验数据库中获取与所述目标指纹对应的资源调度策略并执行;

更新单元,用于在所述经验数据库中不存在与指纹一致的目标指纹时,根据任务的指纹更新经验数据库。

基于上述任意实施例,所述资源瓶颈确定模块根据每个任务的特定硬件性能指标对系统的资源瓶颈进行确定。

基于上述任意实施例,本方案还包括:

目标任务确定模块,用于确定不满足目标服务水平slo的目标任务;

资源调度策略调整模块,用于根据所述目标任务的资源瓶颈、任务类型以及任务指标,对所述目标任务的资源调度策略进行调整;其中,所述任务指标包括硬件性能指标及任务固有性能指标。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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