计算密集型并行任务的异常检测方法及系统的制作方法

文档序号:6520020阅读:294来源:国知局
计算密集型并行任务的异常检测方法及系统的制作方法
【专利摘要】本发明提出一种计算密集型并行任务的异常检测方法,包括以下步骤:对程序机器码进行分析以获取程序机器码的函数覆盖信息;根据函数覆盖信息选择任务进度跟踪函数,并对任务进度跟踪函数的入口进行插桩,以获取插桩后的程序机器码;分别由多个计算节点通过插桩后的程序机器码执行作业的多个任务;获取多个计算节点的多个跟踪信息;对多个跟踪信息进行聚类分析,以获取聚类分析结果;根据聚类分析结果判断多个计算节点中的异常节点;判断执行的多个任务是否全部完成,若全部完成,则结束异常节点的检测。本发明的方法,可以高效准确地检测出异常节点。本发明还提出一种计算密集型并行任务的异常检测系统。
【专利说明】计算密集型并行任务的异常检测方法及系统【技术领域】
[0001]本发明涉及分布式、并行计算领域,尤其涉及一种计算密集型并行任务的异常检测方法及系统。
【背景技术】
[0002]云计算的发展为用户提供了丰富的计算资源,一个数据中心通常有数千台服务器用于处理海量并行任务以支持用户应用(如信息检索、统计分析以及科学计算等)。目前,传统的服务器集群规模也得到进一步扩大,一般有数千个CPU核心。在如此大规模的架构下,有效和稳定的计算模型和框架尤为关键。
[0003]在面向SPMD (单程序多数据)并行处理计算框架中,用户通过提交作业的方式使用计算资源。每个作业被切分为计算规模相同的多个任务在各个计算节点上执行,多达数千的计算节点中会有极少数的异常节点出现。在数据中心和集群环境中,物理节点通常是被众多用户共享的,异常节点的产生通常有许多不可预期的因素,例如,不均匀的任务分配、硬件/软件问题、网络拥塞等。异常节点的存在极大地拖慢了整个作业的完成时间,对海量任务处理的性能影响十分严重。
[0004]为了检测异常节点,一些计算框架采用“投机执行”的任务调度方式。“投机执行”通过识别异常节点、在其他健康节点同时执行该任务,在获取执行结果后终止未完成的任务。以典型的MapReduce计算框架为例,通常使用数据的读入量估计任务进度来发现异常节点。但是此框架的实现存在一个前提,即任务进度和数据读入是线性相关的。这类计算框架对于数据密集型任务的异常节点的检测(如Word Count)是合理的,但不适用于计算密集型任务。

【发明内容】

[0005]本发明旨在至少解决上述技术问题之一。
[0006]为此,本发明的第一个目的在于提出一种计算密集型并行任务的异常检测方法。
[0007]本发明的第二个目的在于提出一种计算密集型并行任务的异常检测系统。
[0008]为了实现上述目的,本发明第一方面的实施例提出了一种计算密集型并行任务的异常检测方法,包括以下步骤:对程序机器码进行分析以获取所述程序机器码的函数覆盖信息;根据所述函数覆盖信息选择任务进度跟踪函数,并对所述任务进度跟踪函数的入口进行插桩,以获取插桩后的程序机器码;分别由多个计算节点通过插桩后的所述程序机器码执行作业的多个任务;获取所述多个计算节点的多个跟踪信息;对所述多个跟踪信息进行聚类分析;根据所述聚类结果判断所述多个计算节点中的异常节点;以及判断执行的所述多个任务是否全部完成,若全部完成,则结束所述异常节点的检测。 [0009]根据本发明实施例的计算密集型并行任务的异常检测方法,解决了计算密集型任务没有进度信息的问题,并通过对一个作业同时执行的多个任务的跟踪信息进行聚类分析,可以高效、准确地检测出异常节点。[0010]在一些示例中,所述函数覆盖信息包括所述程序机器码中各个函数在采样执行中的函数调用次数信息。
[0011]在一些示例中,通过如下方法对所述多个跟踪信息进行聚类:二类K均值聚类算法。
[0012]在一些示例中,所述根据聚类结果得到所述多个计算节点中的异常节点,具体包括:将所述聚类结果与预设阈值进行比较;根据比较结果判断所述聚类结果中是否包括异常的聚类群;如果是,则判定所述异常的聚类群对应的计算节点为所述异常节点。
[0013]在一些示例中,还包括:对所述预设阈值进行动态调整,并根据动态调整后的预设阈值判定所述多个计算节点中的异常节点。
[0014]本发明第二方面的实施例提出了一种计算密集型并行任务的异常检测系统,包括:插桩点选择器,用于对程序机器码进行分析以得到所述程序机器码的函数覆盖信息;程序插桩器,用于对任务进度跟踪函数的入口进行插桩,以获取插桩后的程序机器码,其中,插桩代码内容为对程序进度计数器加I;多个计算节点,用于分别通过插桩后的所述程序机器码执行作业的多个任务;收集装置,用于获取所述多个计算节点的多个跟踪信息;聚类分析器,用于对所述多个跟踪信息进行聚类分析,并根据所述聚类结果判断所述多个计算节点中的异常节点。
[0015]根据本发明实施例的计算密集型并行任务的异常检测系统,解决了计算密集型任务没有进度信息的问题,并通过对一个作业同时执行的多个任务的跟踪信息进行聚类分析,可以高效准确地检测出异常节点,可用于生产环境的针对海量计算密集型任务的异常节点的检测。
[0016]在一些示例中,所述函数覆盖信息包括所述程序机器码中各个函数在采样执行中的函数调用次数信息。
[0017]在一些示例中,所述聚类分析器用于利用二类K均值聚类算法对所述多个跟踪信息进行聚类分析。
[0018]在一些示例中,所述聚类分析器用于:将所述聚类结果与预设阈值进行比较;根据比较结果判断所述聚类结果中是否包括异常的聚类群;如果是,则判定所述异常的聚类群对应的计算节点为所述异常节点。
[0019]在一些示例中,还包括:预设阈值调整装置,用于对所述预设阈值进行动态调整,以便所述聚类分析器根据动态调整后的预设阈值判定所述多个计算节点中的异常节点。
[0020]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
【专利附图】

【附图说明】
[0021]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
[0022]图1是根据本发明一个实施例的计算密集型并行任务的异常检测方法流程图;
[0023]图2是根据本发明一个实施例的计算密集型并行任务的异常检测系统的结构框图;和
[0024]图3是根据本发明一个实施例的计算密集型并行任务的异常检测系统的工作过程图。
【具体实施方式】
[0025]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0026]在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0027]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,这应被本发明的实施例所属【技术领域】的技术人员所理解。
[0028]下面参考附图描述根据本发明实施例的计算密集型并行任务的异常检测方法及系统。
[0029]本发明的一个实施例提出了一种计算密集型并行任务的异常检测方法,包括以下步骤:对程序机器码进行分析以获取程序机器码的函数覆盖信息;根据函数覆盖信息选择任务进度跟踪函数,并对任务进度跟踪函数的入口进行插桩,以获取插桩后的程序机器码;分别由多个计算节点通过插桩后的程序机器码执行作业的多个任务;获取多个计算节点的多个跟踪信息;对多个跟踪信息进行聚类分析,以获取聚类分析结果;根据聚类分析结果判断多个计算节点中的异常节点;判断执行的多个任务是否全部完成,若全部完成,则结束异常节点的检测。
[0030]图1根据本发明一个实施例的计算密集型并行任务的异常检测方法流程图。下面结合图1详细描述本发明的计算密集型并行任务的异常检测方法的实现过程:
[0031]步骤SlOl:对程序机器码进行分析以获取程序机器码的函数覆盖信息。本发明实施例的函数覆盖信息主要包括程序机器码中各个函数在采样执行中的函数调用次数信息。
[0032]优选地,在函数覆盖信息分析之初,需先建立一个函数覆盖信息表func-hits.tbl,即key-value表,用于存储函数调用次数信息。其中,key为函数名,value为函数调用次数。
[0033]具体地,函数覆盖信息分析的过程如下:
[0034](I)对作业要执行的程序机器码进行静态插桩,将每个函数的入口设置为跟踪占.[0035](2)执行插桩后的程序,统计函数调用次数信息。[0036]步骤S102:根据函数覆盖信息选择任务进度跟踪函数,并对任务进度跟踪函数的入口进行插桩,以获取插桩后的程序机器码,其中,插桩代码内容为将程序进度计数器加I。具体实现过程如下:
[0037](I)根据函数调用次数的量级,选出小于等于IOn量级(η根据生产环境中可承受的系统开销范围选取,一般取η=1)的函数,作为任务进度跟踪函数加入到跟踪函数集;
[0038](2)对作业要执行的程序机器码,即任务进度跟踪函数,进行静态插桩,并将任务进度跟踪函数的入口设置为跟踪点。
[0039]步骤S103:分别由多个计算节点通过插桩后的程序机器码执行作业的多个任务。
[0040]步骤S104:获取多个计算节点的多个跟踪信息。
[0041]具体地,计算节点的跟踪信息是由程序进度计数器获得的计数信息,表示当前运行任务已执行过的跟踪点数,存储在内存中。
[0042]步骤S105:对多个跟踪信息进行聚类分析。
[0043]在本发明的一个实施例中,采用二类K均值聚类法对跟踪信息进行聚类分析,以获取聚类分析结果。
[0044]步骤S106:根据聚类分析结果判断多个计算节点中的异常节点。
[0045]判断异常节点的具体步骤如下:
[0046](I)将聚类结果与预设阈值进行比较;
[0047](2)根据比较结果判断聚类结果中是否包括异常的聚类群,如果是,则判定异常的聚类群对应的计算节点为异常节点。
[0048]优选地,对预设阈值进行动态调整,并根据动态调整后的预设阈值判定多个计算节点中的异常节点。例如:
[0049](I)求出聚类后2个类的均值Ml,M2 ;
[0050](2)若|Μ1-Μ2|>Τ,Τ为预设阈值,选取Ml和M2中较小的一类节点作为异常节点。
[0051]优选地,由于异常节点的检测需要在程序执行过程中定期进行,检测周期根据具体任务长短及系统可承受开销确定,如5秒。因此随时间的推移,计算节点的跟踪信息是不断变化的。故通过下列动态的方式来确定预设阈值T:
[0052]Tti=IV1.InA
[0053]其中,Tti表示第t次聚类第i类的阈值LIV1表示第t-Ι次聚类中节点数较多的类的阈值,Im表示跟踪点计数器的平均增量,Ii表示第i个任务的跟踪点计数器增量。
[0054]步骤S107:判断上述步骤中执行的多个任务是否全部完成,若全部完成,则结束异常节点的检测,反之,则继续执行步骤S104。
[0055]本发明实施例的计算密集型并行任务的异常检测方法,解决了计算密集型任务没有进度信息的问题,并通过对一个作业同时执行的多个任务的跟踪信息进行聚类分析,可以高效准确地检测出异常节点。
[0056]本发明的一个实施例提出了一种计算密集型并行任务的异常检测系统。图2是根据本发明一个实施例的计算密集型并行任务的异常检测系统的结构框图。
[0057]结合图2,本发明一个实施例的计算密集型并行任务的异常检测系统具体包括:插桩点选择器100、程序插桩器200、多个计算节点300、收集装置400和聚类分析器500。
[0058]其中,插桩点选择器100,用于对程序机器码进行分析以得到程序机器码的函数覆盖信息。程序插桩器200,用于对任务进度跟踪函数的入口进行插桩,以获取插桩后的程序机器码中,其中,插桩代码内容为对程序进度计数器加I。多个计算节点300,用于分别通过插桩后的程序机器码执行作业的多个任务。收集装置400,用于获取多个计算节点的多个跟踪信息。聚类分析器500,用于对多个跟踪信息进行聚类分析,并根据聚类结果判断多个计算节点中的异常节点。
[0059]图3是根据本发明一个实施例的计算密集型并行任务的异常检测系统的工作过程图。下面结合图3详述本发明实施例的计算密集型并行任务的异常检测系统的工作过程。
[0060]插桩点选择器100对程序机器码进行分析得到程序机器码的函数覆盖信息,并将函数覆盖信息以函数覆盖表func-hits.tbl,即key-value表的形式发送给程序插桩器200。其中,函数覆盖信息主要指程序机器码中各个函数在采样执行中的函数调用次数信息,key表示程序机器码中的各个函数的函数名,value为函数调用次数。
[0061]插桩点选择器100对程序机器码进行分析的具体过程为:
[0062](I)对作业要执行的程序机器码进行静态插桩,将每个函数入口设置为跟踪点;
[0063](2)执行插桩后的程序,统计函数调用次数信息。
[0064]程序插桩器200根据获取的函数覆盖信息选择任务进度跟踪函数,并对任务进度跟踪函数的入口进行插桩,以获取插桩后的程序机器码。其中,插桩代码内容为对程序进度计数器加I。程序插桩器200的具体工作过程如下:
[0065](I)根据函数调用次数的量级,选出小于等于IOn量级(η根据生产环境中可承受的系统开销范围选取,一般取η=1)的函数,作为任务进度跟踪函数加入到跟踪函数集;
[0066](2)对作业要执行的程序机器码,即任务进度跟踪函数进行静态插桩,并将任务进度跟踪函数的入口设置为跟踪点。
[0067]多个计算节点300,分别通过插桩后的程序机器码执行作业的多个任务。
[0068]收集装置400,用于获取多个计算节点的多个跟踪信息,并将跟踪信息发送给聚类分析器500。具体地,多个计算节点的跟踪信息是由程序进度计数器获得的计数信息,表示当前运行任务已执行过的跟踪点数,存储在内存中。
[0069]聚类分析器500,用于对多个跟踪信息进行聚类分析,并根据聚类结果判断多个计算节点中的异常节点。在本发明的一个实施例中,采用二类K均值聚类法对跟踪信息进行聚类分析,以获取聚类分析结果。具体的分析及判断过程如下:
[0070](I)将聚类结果与预设阈值进行比较;
[0071](2)根据比较结果判断聚类结果中是否包括异常的聚类群,如果是,则判定异常的聚类群对应的计算节点为异常节点。
[0072]优选地,聚类分析器500通过动态阈值调整装置501对预设阈值进行动态调整,并根据动态调整后的预设阈值判定多个计算节点中的异常节点。例如:
[0073](I)求出聚类后2个类的均值Ml,M2 ;
[0074](2)若|Μ1-Μ2|>Τ,Τ为预设阈值,选取Ml和M2中较小的一类节点作为异常节点。
[0075]优选地,由于异常节点的检测需要在程序执行过程中定期进行,检测周期根据具体任务长短及系统可承受开销确定,如5秒。因此随时间的推移,计算节点的跟踪信息是不断变化的。故通过下列动态的方式来确定预设阈值T:[0076]Tti=IV1.Im/Ii
[0077]其中,Tti表示第t次聚类第i类的阈值T,!^表示第t-Ι次聚类中节点数较多的类的阈值,Im表示跟踪点计数器的平均增量,Ii表示第i个任务的跟踪点计数器增量。
[0078]进一步地,判断上述执行的多个任务是否全部完成,若全部完成,则结束异常节点的检测,反之,则继续应用收集装置400获取多个计算节点300的多个跟踪信息,并将跟踪信息发送给聚类分析器500进行聚类分析以判断异常节点。
[0079]本发明实施例的计算密集型并行任务的异常检测系统,解决了计算密集型任务没有进度信息的问题,并通过对一个作业同时执行的多个任务的跟踪信息进行聚类分析,可以高效准确地检测出异常节点,可用于生产环境的针对海量计算密集型任务的异常节点的检测。
[0080]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示 例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0081]尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
【权利要求】
1.一种计算密集型并行任务的异常检测方法,其特征在于,包括以下步骤: 对程序机器码进行分析以获取所述程序机器码的函数覆盖信息; 根据所述函数覆盖信息选择任务进度跟踪函数,并对所述任务进度跟踪函数的入口进行插桩,以获取插桩后的程序机器码; 分别由多个计算节点通过所述插桩后的程序机器码执行作业的多个任务; 获取所述多个计算节点的多个跟踪信息; 对所述多个跟踪信息进行聚类分析,以获取聚类分析结果; 根据所述聚类分析结果判断所述多个计算节点中的异常节点;以及 判断执行的所述多个任务是否全部完成,若全部完成,则结束所述异常节点的检测。
2.根据权利要求1所述的方法,其特征在于,所述函数覆盖信息包括所述程序机器码中各个函数在采样执行中的函数调用次数信息。
3.根据权利要求1所述的方法,其特征在于,通过如下方法对所述多个跟踪信息进行聚类:二类K均值聚类算法。
4.根据权利要求1所述的方法,其特征在于,所述根据聚类结果得到所述多个计算节点中的异常节点,具体包括: 将所述聚类结果与预设阈值进行比较; 根据比较结果判断所述聚类结果中是否包括异常的聚类群; 如果是,则判定所述异常的聚类群对应的计算节点为所述异常节点。
5.根据权利要求4所述的方法,其特征在于,还包括: 对所述预设阈值进行动态调整,并根据动态调整后的预设阈值判定所述多个计算节点中的异常节点。
6.一种计算密集型并行任务的异常检测系统,其特征在于,包括: 插桩点选择器,用于对程序机器码进行分析以得到所述程序机器码采样执行中的函数覆盖信息,并据此选择任务进度跟踪函数; 程序插桩器,用于对所述任务进度跟踪函数的入口进行插桩,以获取插桩后的程序机器码,其中,插桩代码内容为对程序进度计数器加I ; 多个计算节点,用于分别通过插桩后的所述程序机器码执行作业的多个任务; 收集装置,用于获取所述多个计算节点的多个跟踪信息; 聚类分析器,用于对所述多个跟踪信息进行聚类分析,并根据所述聚类结果判断所述多个计算节点中的异常节点。
7.根据权利要求6所述的系统,其特征在于,所述函数覆盖信息包括所述程序机器码中各个函数在采样执行中的函数调用次数信息。
8.根据权利要求6所述的系统,其特征在于,所述聚类分析器用于利用二类K均值聚类算法对所述多个跟踪信息进行聚类分析。
9.根据权利要求6所述的系统,其特征在于,所述聚类分析器用于: 将所述聚类结果与预设阈值进行比较; 根据比较结果判断所述聚类结果中是否包括异常的聚类群; 如果是,则判定所述异常的聚类群对应的计算节点为所述异常节点。
10.根据权利要求9所述的系统,其特征在于,还包括:预设阈值调整装置,用于对所述预设阈值进行动态调整,以便所述聚类分析器根据动态调整后的预设阈值判定所述多个计算节点中的异常节点。
【文档编号】G06F9/38GK103645961SQ201310590574
【公开日】2014年3月19日 申请日期:2013年11月20日 优先权日:2013年11月20日
【发明者】武永卫, 郑纬民, 陈康, 郭维超 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1