监测应用执行性能的方法、装置及高性能计算系统与流程

文档序号:12747911阅读:189来源:国知局
监测应用执行性能的方法、装置及高性能计算系统与流程

本发明涉及云计算领域,尤其涉及监测应用执行性能的方法、装置及高性能计算系统。



背景技术:

在例如高性能计算等云计算领域中,用户通常将待执行的应用(例如高性能计算的一项计算作业)分配到服务器集群中一个或多个计算节点来执行。目前,执行计算应用的硬件性能越来越高,这极大提高了对作业的执行效率。另外,在一项作业被提交到服务器集群后,用户还需要了解关于该作业的执行情况。

现有的作业管理系统通常只能查询关于应用的总体运行状态(即,退出、挂起、排队和运行)。换言之,现有的作业管理系统并不能监测应用执行性能。

因此,本发明提供一种新的监测应用执行性能的技术方案。



技术实现要素:

为此,本发明提供一种新的监测应用执行性能的方案,有效的解决了上面至少一个问题。

根据本发明的一个方面,提供一种监测应用执行性能的方法,适于在计算设备中执行。该应用适于在服务器集群中执行。该服务器集群包括多个计算节点。每个计算节点包括一个或多个适于被进程占用的计算单元。该方法包括下述步骤。获取与执行应用的计算节点对应的节点列表。基于该节点列表,获取执行应用的每个计算节点对应的进程列表和函数列表。基于所获取的每个进程列表,提取其中与应用关联的进程项。从每个关联的进程对应的函数列表中,提取与该进程项关联的函数项。根据所提取与应用关联的进程项和与每个提取的进程项关联的函数项,监测应用的执行性能。

可选地,在根据本发明的监测应用执行性能的方法中,进程项包括下述中至少一部分:进程标识、进程名称、进程状态、对所占用的计算单元的使用率、内存使用量、内存占用率、进程持续时间、父进程标识、所占用的计算单元的标识、交换区(swap)的使用量和进程创建时间。函数项包括:函数名称、该函数所属的执行模块的名称、单位时间内对该函数累计的采样次数、和该函数的采样次数占执行该函数的进程所在的计算节点在该单位时间内对函数采样的总次数的比例。

可选地,根据本发明的监测应用执行性能的方法还包括获取执行应用的计算节点的异常运行状态,其中,每个计算节点的异常运行状态包括下述中至少一种:内存使用量超过第一阈值并使用交换区(swap),代码向量化(VEC)比率低于第二阈值,指令集执行(AVX)比率低于第三阈值,CPU使用率超过第四阈值且浮点运算速率(Gflops)低于第五阈值。

在获取到执行应用的任一个计算节点的异常运行状态时,根据本发明的监测应用执行性能的方法还包括根据所提取与所述应用关联的进程项和与每个提取的进程项关联的函数项,判断引起该计算节点运行异常的进程项和函数项,以便定位应用的性能瓶颈。

可选地,在根据本发明的监测应用执行性能的方法中,从每个关联的进程项所占用的计算单元所对应的函数列表中,提取与该进程项关联的函数项的步骤包括:根据进程项的进程标识,从所对应的函数列表中提取与该进程名称相关联的函数项。服务器集群为高性能计算集群。

根据本发明的又一个方面,提供一种监测应用执行性能的装置,适于驻留在计算设备中。该应用适于在服务器集群中执行。服务器集群例如为高性能计算集群。该服务器集群包括多个计算节点。每个计算节点包括一个或多个适于被进程占用的计算单元。该装置包括第一获取单元、第二获取单元、第一筛选单元、第二筛选单元和监测单元。其中,第一获取单元适于获取与执行应用的计算节点对应的节点列表。第二获取单元基于该节点列表,适于获取执行应用的每个计算节点对应的进程列表和函数列表。第一筛选单元基于所获取的每个进程列表,提取其中与应用关联的进程项。第二筛选单元从每个关联的进程对应的函数列表中,提取与该进程项关联的函数项。监测单元适于根据所提取与应用关联的进程项和与每个提取的进程项关联的函数项,监测应用的执行性能。

根据本发明的又一个方面,提供一种高性能计算系统,包括服务器集群、作业管理设备和驻留有根据本发明的监测应用执行性能的装置的计算设备。其中,服务器集群包括多个计算节点。每个计算节点中驻留有获取计算节点中进程信息和函数信息的性能收集器。作业管理设备适于接收应用提交终端所提交的待执行的应用,并将该待执行的应用分配给至少一个计算节点。计算设备适于从性能收集器获取进程列表和函数列表。

综上,根据本发明的监测应用(作业)执行性能的技术方案,能够获取多个执行应用的计算节点中每个计算单元的进程列表和函数列表。进而,本发明的技术方案,可以从进程列表和函数列表中提取与本应用相关的进程项和函数项。在此基础上,本发明的技术方案可以从执行性能角度,监测应用的执行过程。进一步,本发明的技术方案还可以获取执行应用的计算节点的异常运行状态,根据所提取的进程项和函数项,确定引起计算节点运行异常的进程项和函数项,以便定位应用的性能瓶颈。

附图说明

为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。

图1示出了根据本发明一些实施例的高性能计算系统100的示意图;

图2示出了根据本发明一些实施例的监测应用执行性能的装置200的示意图;

图3A示出了一个处于异常运行状态的计算节点的性能指标界面示意图;

图3B示出了又一个处于异常运行状态的计算节点的性能指标界面示意图;

图3C示出了又一个处于异常运行状态的计算节点的性能指标界面示意图;

图4示出了根据本发明一些实施例的监测应用执行性能的方法400的流程图;以及

图5示出了根据本发明一些实施例的监测应用执行性能的方法500的流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了根据本发明一些实施例的高性能计算系统100的示意图。如图1所示,系统100包括作业管理设备110、用于监测应用执行性能的计算设备120和多个执行计算任务的计算节点130-1、130-2...130-N。这里,每个计算节点可以是一个独立的计算实体(例如一台高性能计算机或者云网络中一台服务器实体)。总体而言,系统100可以将用户提交的应用(作业),分配给至少一个计算节点来执行。

取决于期望的配置,每个计算节点可以包括一个或多个处理器。每个处理器可以是单核或多核配置。这里,处理器的每个核可以称为一个计算单元。一个或多个进程可以占用一个计算单元来执行运算。本发明的计算节点可以驻留有性能收集器。这里,性能收集器可以收集关于计算节点的各种性能指标特征。性能指标特征例如包括处理器(或者以处理器每个核为单位)使用率、内存使用率、网络发送和接收速度、磁盘读写速度、代码向量化比率和指令集执行比率等,但不限于此。

在根据本发明一个实施例中,驻留在一个计算节点的性能收集器可以被配置为通过调用该计算节点的操作系统(例如Linux或Windows server等)提供的标准接口(API)来获取性能指标特征。另外,性能收集器还可以是公知的各种可以收集计算节点性能数据的应用,这里不再赘述。

另外,根据本发明的性能收集器还可以收集进程信息和函数信息。进程是计算节点上操作系统进行资源分配和调度的基本的单位。进程是执行程序的实体。程序是由源代码组成的资源文件。源代码由一系列的函数组成。一般而言,源代码可以按照代码模块进行划分。一个源代码文件可以包括一个或多个代码模块,即执行模块。每个代码模块可以包括一个或多个函数。每个进程对应一条进程信息(即一个进程项)。进程信息例如可以包括进程ID、进程状态、该进程对其占用的计算单元的使用率、内存占用率、进程持续时间、父进程标识、所占用的计算单元的标识、交换区(swap)的使用量,进程创建时间等。这里,取决于计算节点中操作系统的版本,进程状态可以有不同的分类标准。以Linux为例,进程状态可以包括R、S、D、T、Z和X。其中,R表示TASK_RUNNING,即可执行状态。S表示TASK_INTERRUPTIBLE,即可中断的睡眠状态。D表示TASK_UNINTERRUPTIBLE,即不可中断的睡眠状态。T表示TASK_STOPPED,即暂停状态。Z表示TASK_ZOMBIE,即僵死状态。X表示TASK_DEAD,即退出状态。

函数信息(即函数项)可以包括:函数名称、名称标识。该函数所属的执行模块的名称、单位时间内对该函数累计的采样次数和该函数的采样次数占执行该函数的计算单元在该单位时间内对函数采样的总次数的比例等。需要说明的是,总的函数采样次数是对单位时间(例如1分钟)内所采集到的所有函数的总数。

作业管理设备110或者其他的性能数据收集服务器(图中未示出)可以从每个计算节点的性能收集器获取到进程信息和函数信息。用于监测应用执行性能的计算设备120可以从作业管理设备110或者性能收集服务器获取到进程信息和函数信息。在此基础上,计算设备120可以提取一个应用相关的进程信息和函数信息,以定位该应用的性能瓶颈。下面结合图2对监测应用执行性能的装置进行示例性说明。

图2示出了根据本发明一些实施例的监测应用执行性能的装置200的示意图。装置200适于驻留在计算设备(120)中。这里,计算设备例如可以被实现为桌面计算机或笔记本计算机配置的个人计算机。计算设备也可以被实现为服务器设备或者移动终端(例如手机、个人数字设备或者可穿戴智能设备等),这里不再赘述。待监测的应用可以在服务器集群(100)中执行。

装置200包括第一获取单元210、第二获取单元220、第三获取单元230、第一筛选单元240和监测单元250。

为了对一个应用的执行性能进行监测,第一获取单元210可以获取对应执行该应用的计算节点的节点列表。这里,第一获取单元210例如是从作业管理设备(110)获取到该节点列表。在一个实施例中,应用对应的节点列表的数据示例如下:

上文示出了1个节点列表。该节点列表的第1个字段(13010)为应用标识。第2个字段(named2)为应用名称。第3个字段及以后的内容为执行应用13010的计算节点的标识(例如node023.pa)。

第二获取单元220根据节点列表,获取节点列表中每个计算节点对应的进程列表和函数列表。在根据本发明一个实施例中,第二获取单元220可以获取每个计算节点(其标识例如node023.pa)对应的性能指标文件。该文件包括了这个计算节点中执行的每个作业与相关联的进程项的对应关系、每个计算节点对应的进程列表(即这个计算节点中执行的所有进程项组成的列表)和对应的函数列表(即该计算节点中执行的所有函数项组成的列表)。

根据本发明一个实施例,进程列表的数据示例如下:

{55958wugh 2215744 D 0.3 3.8 0:15.72 55929 0 17 0.3 2265784 2015/10/29-21:24:4opa deea37eade087537f0e6499426957c5b}

{55960wugh 2174616 D 0.3 3.8 0:14.30 55929 0 19 0.3 2306908 2015/10/29-21:24:4opa deea37eade087537f0e6499426957c5b}

{55941wugh 2437192 D 0.2 4.2 0:12.65 55929 0 0 0.2 2042588 2015/10/29-21:24:4opa deea37eade087537f0e6499426957c5b}

上述进程列表示出了进程标识分别为55958、55960和55941的进程项。以标识为55958的进程项为例,进程项包括进程标识(55958)、该进程的内存使用量(2215744字节)、进程状态(D)、对所占用的计算单元的使用率(0.3%)、内存使用率(3.8%)、进程持续时间(0:15.72,即0分15.72秒)、父进程标识(55929)、所占用的计算单元的标识(17)、交换区的使用量(2265784字节)、进程创建时间(2015/10/29-21:24:4)、进程名称(opa)和MD5校验码(deea37eade087537f0e6499426957c5b)。这里对进程项的部分字段进行了示例性说明。本发明对进程项的字段数不做过多限制。

根据本发明一个实施例,函数列表的数据示例如下:

在上述函数列表中,第1行中451162131为本次所统计的总的函数采样次数。第2-5行分别为函数名称为tanh.L、scan_swap_map、scan_swap_map和intel_idle的4个函数项。以tanh.L的函数项为例,该函数在总的函数采样次数中占比为23.222181%,采样次数为451162131,所属的执行模块名称为nemo.exe。

上述对函数列表和进程列表进行了示例性说明。但不限于此,根据本发明的实施例可以使用其他格式的函数列表和进程列表。总之,函数列表和进程列表被配置为可以从其中提取与应用相关的函数项和进程项。

第一筛选单元230可以基于第二获取单元220所获取的每个进程列表,提取与应用(作业)相关的进程项。在一个实施例中,第一筛选单元230可以从对应一个计算节点的性能指标文件中提取与应用相关的进程项,但不限于此。

第二筛选单元240可以基于第一筛选单元230所提取的进程项,从函数列表中提取与进程项关联的函数项。即,第二筛选单元240提取与应用关联的函数项。在一个实施例中,第二筛选单元240基于每个函数项中进程标识字段,从函数列表中提取与进程名称相关联的函数项。

这样,监测单元250可以根据所提取的与应用关联的进程项和函数项,监测应用的执行性能。取决于具体的规则配置,监测单元250可以通过详细的进程项和函数项内容,从性能评价的角度来分析应用的执行过程,以便优化应用。

可选地,监测单元250还可以获取执行应用的计算节点的异常运行状态。在一个例子中,监测单元250可以直接根据来自计算节点的性能指标(例如,性能收集器所提供的数据)来确定是否处于异常运行状态。在又一个例子中,监测单元250可以接收异常判断模块(图中未示出)在确定计算节点异常时所发出的关于异常运行状态的报警消息。

这里,一个计算节点的异常运行状态可以有多种。例如,一个计算节点的异常运行状态可以是内存使用量超过第一阈值并使用交换区(swap)。如图3A示出了一个处于异常运行状态的计算节点的性能指标界面示意图。

在又一个例子中,计算节点的异常运行状态为代码向量化(VEC)比率低于第二阈值和\或指令集执行(AVX)比率低于第三阈值。图3B示出了又一个处于异常运行状态的计算节点的性能指标界面示意图。

在又一个例子中,计算节点的异常运行状态为CPU使用率超过第四阈值且浮点运算速率(Gflops)低于第五阈值。图3C示出了又一个处于异常运行状态的计算节点的性能指标界面示意图。需要说明的是,上述仅仅是对异常运行状态的示例性说明,本发明对异常运行状态的种类和规则不作过多限制。

在获取到一个计算节点处于异常运行状态时,监测单元250可以根据所提取的、对应这个异常的计算节点的函数项和进程项,判断引起这个计算节点运行异常的进程项和函数项,以定位应用的性能瓶颈。

图4示出了根据本发明一些实施例的监测应用执行性能的方法400的流程图。方法400适于在计算设备中执行。待监测的应用适于在服务器集群中执行。该服务器集群包括多个计算节点。该服务器集群例如为高性能计算集群。每个计算节点包括一个或多个适于被进程占用的计算单元。

方法400始于步骤S410,获取与执行应用的计算节点对应的节点列表。步骤S410的具体实施方式与上文中第一获取单元210一致,这里不再赘述。

基于步骤S410中获取的节点列表,方法400执行步骤S420。在步骤S420中,获取执行应用的每个计算节点对应的进程列表和函数列表。步骤S420的具体实施方式与上文中第二获取单元220一致,这里不再赘述。

基于步骤S420中获取的每个进程列表,方法400执行步骤S430。在步骤S430中,提取每个进程列表中与应用关联的进程项。步骤S430的具体实施方式与上文中第一筛选单元230一致,这里不再赘述。在一个实施例中,每个进程项包括下述中至少一部分:进程标识、进程名称、进程状态、对所占用的计算单元的使用率、内存使用量、内存占用率、进程持续时间、父进程标识、所占用的计算单元的标识、交换区(swap)的使用量和进程创建时间。

基于步骤S430中每个关联的进程项,方法400进入步骤S440。在步骤S440中,从相关联的每个进程项所对应的函数列表中,提取与该进程项关联的函数项。根据一个实施例,在步骤S440中,根据进程项的进程标识,从所对应的函数列表中提取与该进程标识相关联的函数项。步骤S440的更具体实施方式与上文中第二筛选单元240一致,这里不再赘述。在一个实施例中,每个函数项包括:函数名称、该函数所属的执行模块的名称、单位时间内对该函数累计的采样次数、和该函数的采样次数占执行该函数的进程所在的计算节点在该单位时间内对函数采样的总次数的比例。

根据步骤S430的到的进程项和步骤S440得到的函数项,方法执行步骤S450,监测应用的执行性能。步骤S450的具体实施方式与上文中监测单元250一致,这里不再赘述。

图5示出了根据本发明一些实施例的监测应用执行性能的方法500的流程图。方法500适于在计算设备中执行。

方法500包括步骤S510、S520、S530、S540和S550。步骤S510至S550分别对应上文中步骤S410至S450,这里不再赘述。

方法500还包括步骤S560。在步骤S550中,获取执行应用的计算节点的异常运行状态。其中,每个计算节点的异常运行状态包括下述中至少一种:内存使用量超过第一阈值并使用交换区(swap),代码向量化(VEC)比率低于第二阈值,指令集执行(AVX)比率低于第三阈值,CPU使用率超过第四阈值且浮点运算速率(Gflops)低于第五阈值。步骤S550获取计算节点的异常运行状态的方式与上文中监测单元250一致,这里不再赘述。

在步骤S560中获取到一个计算节点的异常运行状态时,方法500进入步骤S570。在步骤S570中,根据所提取与应用关联的进程项和函数项,判断引起该计算节点运行异常的进程项和函数项,以便定位应用的性能瓶颈。

A10、如A8或A9所述的装置,其中,所述函数项的函数信息包括:函数名称、该函数所属的执行模块的名称、单位时间内对该函数累计的采样次数、和该函数的采样次数占执行该函数的进程所在的计算节点在该单位时间内对函数采样的总次数的比例。A11、如A8-A10中任一项所述的装置,其中,所述监测单元还适于获取所述执行所述应用的计算节点的异常运行状态,其中每个计算节点的异常运行状态包括下述中至少一种:内存使用量超过第一阈值并使用交换区(swap),代码向量化(VEC)比率低于第二阈值,指令集执行(AVX)比率低于第三阈值,CPU使用率超过第四阈值且浮点运算速率(Gflops)低于第五阈值。A12、如A11所述的装置,在获取到执行所述应用的任一个计算节点的异常运行状态时,该监测单元还适于:根据所述第一筛选单元所获取的进程项和第二筛选单元所获取的函数项,判断引起该计算节点运行异常的进程项和函数项,以便定位所述应用的性能瓶颈。A13、如A8-A12中任一项所述的装置,其中,所述第二筛选单元适于根据下述方式从相关联的每个进程项所占用的计算单元所对应的函数列表中,提取与该进程项关联的函数项:根据进程项的进程标识,从所对应的函数列表中提取与该进程名称相关联的函数项。A14、如A8-A13中任一项所述的装置,其中,所述服务器集群为高性能计算集群。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。

如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。

尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

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