专利名称:评估数据流图的特征的制作方法
技术领域:
本发明涉及评估数据流图的特征。
背景技术:
复杂计算通常可以表达为通过有向图(称为“数据流图”)的数据流,其中,计算的 组件与图的顶点关联,并且组件之间的数据流对应于图的链接(弧,边)。组件可以包括数 据处理组件和数据集组件,数据处理组件在一个或多个输入端口接收数据,处理数据,以及 从一个或多个输出端口提供数据,而数据集组件作为数据流的源或终点(sink)。美国专利5,966, 072 “EXECUTINGCOMPUTATIONS EXPRESSED AS GRAPHS (执行表达为图的计算)”中描 述了实施这种基于图的计算的系统。发明内容
在一个方面中,一般地,通过计算系统执行一种方法,用于评估表示数据流图的一 个或多个特征的一个或多个表达式,所述数据流图包括表示数据处理组件的顶点,所述顶 点由表示所述组件之间的工作元素的流的链接连接。所述方法包括通过所述计算系统 接收评估所述一个或多个表达式的请求,所述一个或多个表达式包括对一个或多个变量的 一个或多个操作;以及通过所述计算系统评估所述一个或多个表达式。所述评估包括定 义包括一个或多个字段的数据结构,在所述数据流图的执行期间,收集与所述数据流图的 一个或多个组件关联的追踪信息,将与所述追踪信息关联的值存储在所述一个或多个字段 中,以及利用存储在所述一个或多个字段中的值替代所述一个或多个表达式的一个或多个 变量,以计算评估所述一个或多个表达式的结果。
方面可以包括以下特征中的一个或多个。
在执行所述数据流图的同时执行所述评估。
所述追踪信息还与所述数据流图的一个或多个子图的一个或多个组件关联。
所述一个或多个变量的至少第一变量在所述表达式中表达为包括对所述一个或 多个子图的第一子图的引用的项。
所述第一变量包括对所述第一子图内的第一组件的引用。
所述一个或多个变量的至少一个对应于所述数据流图、所述一个或多个子图、以 及所述一个或多个组件中的一个或多个的特征。
评估所述一个或多个表达式包括根据预定条件评估所述一个或多个表达式。
所述预定条件包括触发事件的检测。
所述触发事件包括一个或多个处理资源相对于对所述一个或多个处理资源的需要而言是稀少的判定。
定义所述数据结构包括遍历所述数据流图,以识别所述一个或多个字段的类型和 数目中的一个或多个。
遍历所述数据流图包括遍历所述数据流图的与所述一个或多个表达式关联的部 分。
收集与所述数据流图的一个或多个组件关联的追踪信息包括至少部分基于所述 一个或多个表达式过滤所述追踪信息。
所述方法还包括将所述结果与一个或多个阈值进行比较。
所述方法还包括响应于所述比较产生通知。
所述方法还包括至少部分基于所述通知执行一个或多个自动处理。
所述方法还包括从用户界面接收所述一个或多个表达式。
所述方法还包括提供预定表达式的集合,其包括所述一个或多个表达式。
所述评估还包括周期性地评估所述一个或多个表达式。
所述方法还包括使用两个或更多个结果产生与一个或多个特征关联的直方图。
所述方法还包括至少部分基于周期性地评估所述一个或多个表达式的结果更新 存储的历史数据。
所述一个或多个变量的至少一个依赖于在所述计算系统接收到评估所述一个或 多个表达式的请求之前存储在所述历史数据中的值。
所述方法还包括将与所述追踪信息关联的多个值存储在所述一个或多个字段之 一内的矢量中。
所述多个值中的每个与特定参数的不同相应值关联,并且所述多个值中的每个是 在与所述特定参数的相应值关联的追踪信息上聚集的特征的值。
在另一方面,一般地,一种计算机可读存储介质存储用于评估表示数据流图的一 个或多个特征的一个或多个表达式的计算机程序,所述数据流图包括表示数据处理组件的 顶点,所述顶点由表示所述组件之间的工作元素的流的链接连接。所述计算机程序包括使 得计算机执行以下步骤的指令接收评估所述一个或多个表达式的请求,所述一个或多个 表达式包括对一个或多个变量的一个或多个操作;以及评估所述一个或多个表达式。所述 评估包括定义包括一个或多个字段的数据结构,在所述数据流图的执行期间,收集与所述 数据流图的一个或多个组件关联的追踪信息,将与所述追踪信息关联的值存储在所述一个 或多个字段中,以及利用存储在所述一个或多个字段中的值替代所述一个或多个表达式的 一个或多个变量,以计算评估所述一个或多个表达式的结果。
在另一方面,一般地,提供一种计算系统,用于评估表示数据流图的一个或多个特 征的一个或多个表达式,所述数据流图包括表示数据处理组件的顶点,所述顶点由表示所 述组件之间的工作元素的流的链接连接。所述计算系统包括输入设备或端口,配置为接收 评估所述一个或多个表达式的请求,所述一个或多个表达式包括对一个或多个变量的一个 或多个操作;以及至少一个处理器,配置为评估所述一个或多个表达式。所述评估包括定 义包括一个或多个字段的数据结构,在所述数据流图的执行期间,收集与所述数据流图的 一个或多个组件关联的追踪信息,将与所述追踪信息关联的值存储在所述一个或多个字段 中,以及利用存储在所述一个或多个字段中的值替代所述一个或多个表达式的一个或多个变量,以计算评估所述一个或多个表达式的结果。
在另一方面,一般地,提供一种计算系统,用于评估表示数据流图的一个或多个特 征的一个或多个表达式,所述数据流图包括表示数据处理组件的顶点,所述顶点由表示所 述组件之间的工作元素的流的链接连接。所述计算系统包括用于接收评估所述一个或 多个表达式的请求的装置,所述一个或多个表达式包括对一个或多个变量的一个或多个操 作;以及用于评估所述一个或多个表达式的装置。所述评估包括定义包括一个或多个字 段的数据结构,在所述数据流图的执行期间,收集与所述数据流图的一个或多个组件关联 的追踪信息,将与所述追踪信息关联的值存储在所述一个或多个字段中,以及利用存储在 所述一个或多个字段中的值替代所述一个或多个表达式的一个或多个变量,以计算评估所 述一个或多个表达式的结果。
方面可以包括以下优点中的一个或多个。
当在执行环境中执行数据流图时,监视数据流图的执行通常是有用的,例如,用以 追踪正被数据流图的组件执行的各种计算的进度,或者采样与正被执行的数据处理相关的 各种特征。在一些情况中,用户可能想要追踪正被处理的数据量(例如,记录的数目,或数据 的字节数)和/或在数据处理期间正被消耗的资源量(例如组件正使用的CPU时间,或与组 件关联的等待时间)。某些执行环境被配置为提供接收用于表现显示在作为用户界面的一 部分的窗口中的各种特征的追踪数据的流的用户界面。
这里描述的技术中的一些使得用户能够动态地和灵活地提供定义用户可能感兴 趣监视的某些特征的表达式。在某些情况中,用户可以提供用于在数据流图的执行期间监 视数据流图的表达式。特征可以与数据流图的在数据流图的子图内的部分(例如组件或数 据流链接)关联。用户能够使用符号表示法(notation),该符号表示法使得能够指定完全 合格的路径,该路径使得系统能够遍历数据流图的表示的合适部分(例如作为有向图的数 据流图的表示,该有向图的节点表示组件,链接表示数据流)。通过产生数据结构来保持需 要用于评估用户提供的表达式的追踪信息的部分,可以使用从追踪信息的现时流聚集和封 装的合适信息以高效的方式快速评估表达式。用户不需要能够理解或读取追踪信息,而是 可以简单地产生可理解的表达式,基于该表达式,系统能够获取合适的追踪信息,并使用最 近的信息评估该表达式。
根据下面的描述以及权利要求,本发明的其它特征和优点将变得明显。
图1是用于执行基于图的计算的系统的框图。
图2是用于评估数据流图的特征的示例过程的流程图。
图3是用于监视数据流图的系统的框图。
图4是用于评估数据流图的特征的示例过程的流程图。
具体实施方式
图1示出了示例性数据处理系统100,在该系统100中可以使用用于评估数据流图 的特征的技术。系统100包括数据源102,其可以包括一个或多个数据源,诸如存储设备或 对在线数据流的连接,每个数据源可以多种存储格式存储数据(例如,数据库表、电子表格文件、纯文本文件、或大型机使用的本地格式)。执行环境104包括监视模块106和执行模块 112。监视模块106包括用于监视在执行模块112上运行的一个或多个处理的特征的一个 或多个处理。例如,执行模块112可以被配置为执行作为数据流图的应用,该数据流图包括 顶点(表示数据处理组件或数据集),所述顶点由顶点之间的有向链接(表示工作元素的流) 连接。数据处理组件可以具有任意数目的输入端口用于在输入数据流上接收工作元素以及 任意数目的输出端口用于在输出数据流上提供工作元件。监视模块106可以被配置为在执 行一个或多个数据流图时监视它们的特征。执行环境104可以驻留在一个或多个在合适的 操作系统(诸如UNIX操作系统)控制下的通用目的计算机上。例如,执行环境104可以包括 多节点并行计算环境,其包括使用多个中央处理单元(CPU)的计算机系统的配置,可以为本 地的(例如,诸如SMP计算机的多处理器系统),或本地分布的(例如,连接为集群的多个处理 器或MPP),或远程的,或者远程分布的(例如,经由局域网(LAN)和/或广域网(WAN)连接的 多个处理器),或者它们的任意组合。
在某些示例中,监视模块106从数据存储系统116读取数据。例如,监视模块106 可以访问存储在数据存储系统116中的一个或多个表达式114。监视模块106可以使用表 达式114来评估执行模块113正在执行的数据流图的特征。如下面更详细描述的,监视模 块106可以使用与数据流图关联的追踪信息来评估表达式114。执行模块112从数据源103 读取数据作为向正被执行的数据流图的输入,以处理该输入数据。提供数据源102的存储 设备可以是相对于执行环境104本地的,例如存储在连接到运行执行环境104的计算机的 存储介质上(例如硬盘驱动器108),或者可以是相对于执行环境104远程的,例如驻留在通 过远程连接与运行执行环境104的计算机通信的远程系统(例如大型机110)上。
执行模块112可以执行一个或多个计算机处理(例如,与数据流图的组件关联的 处理),并且监视模块106可以在数据流图正被执行模块112执行时监视数据流图的活动 (例如,与执行模块112运行的图处理一起还使用在执行环境中运行的一个或多个监视处 理)。数据存储系统116对于开发环境118也是可被访问的,在开发环境118中,开发者120 能够定义和输入表示数据流图的一个或多个特征的表达式114,或者能够使用被评估的表 达式的结果进行动作,如下所述。可以对一个或多个变量的一个或多个允许的形式定义表 达式114,所述变量表示数据流图的不同特性。操作的结果产生表示用户想要监视的特征 的表达式的值。开发环境118在某些实施方式中是用于开发作为数据流图的应用的系统。 例如,题为 “Managing Parameters for Graph-BasedApplications (管理用于基于图的应 用的参数)”的美国专利公布No. 2007/0011668中描述了这种环境,通过引用将其合并于此。 美国专利 5,966,072 “EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS (执行表达为图的 计算)”中描述了执行这种基于图的计算的系统,通过引用将其合并于此。根据此系统产生 的数据流图提供用于向图组件表示的单独(individual)处理提供信息和从起获取信息、用 于在处理之间移动信息、以及用于定义这些处理的运行顺序的方法。此系统包括选择处理 间的通信方法的算法,例如,根据图的链接的通信路径可以使用TCP/IP或UNIX域套接字, 或者使用共享存储器在处理之间传递数据。
系统100可以从多种类型的系统(包括不同形式的数据库系统)接收数据。数据 可以组织为具有用于各个字段(也称为“属性(attribute)”或“列(column)”)的值的记录, 可能包括空(null)值。当首次从数据源102读取数据时,执行模块112通常从关于该数据源中的记录的一些初始格式信息开始。在某些情形中,数据源的记录结构初始可能不知道, 而是可能在数据源的分析之后确定。关于记录的初始信息可以包括表示区别值的比特的数 目,记录内字段的顺序、以及比特所表示的值的类型(例如,字符串、有符号/无符号整型)。
图2示出用于评估数据流的特征的示例过程200的流程图。当系统(例如系统100 (图1))接收到评估表示数据流图的一个或多个特征的表达式的请求(202)时过程开始。在 接收到评估表达式的请求之后,系统定义包括一个或多个字段的数据结构(204)。在某些示 例中,数据结构是内存(in-memory)数据结构,通过遍历(traverse)正在监视其执行的数 据流图的表示定义该结构的字段。一般地,数据结构中的字段被配置为保持评估表达式所 必须的数据。
系统100通过聚集与数据流图的不同部分关联的追踪信息而收集数据流图的执 行期间的追踪信息(206),如下面更详细描述的。一般地,在执行数据流图的同时产生追踪 信息,并且追踪信息可以提供关于数据流图及其组件和子组件的操作以及各种操作正在消 耗的资源量的信息。一旦已经收集和/或聚集了追踪信息(或者正在收集和/或聚集追踪 信息时),系统将与追踪信息关联的值存储在内存数据结构的字段中(208)。在已经将值存 储在数据结构中之后,使用存储在数据结构的字段中的值替换正被评估的表达式中的变量 (210)。利用已知量值替换变量,系统可以接着评估表达式,以提供结果(212)。如图4的示 例中所示,可以在其它处理任务重使用该结果。也可以将结果存储在可以用于评估其它表 达式的历史数据的集合中,如下面在图3的示例中详细说明的。
可以利用不同层级的抽象规定数据流图。本身是包含组件和链接的数据流图的 “子图”可被表示为在包含数据流图作为单个组件的另一数据流图内,该单个组件显示向子 图内的组件提供输入的输入端口、以及从子图内的组件提供输出的输出端口。子图使得能 够在开发流程图时提供模块性和重用性,并且能够对数据流图的给定层级的开发者隐藏组 件以及它们之间的链接的子集的复杂性,同时允许开发者下钻到更低层级到给定子图中, 以查看该子图内的组件和链接。
图3示出了监视执行模块112执行的数据流图302的特征的示例系统300,包括 数据存储316、表达式评估引擎332和图遍历引擎330,表达式评估引擎332和图遍历引擎 330都被监视模块106用来接收和评估表达式324,以提供表示数据流图302的监视特征的 结果。例如,表达式评估引擎322和图遍历引擎330可以从数据存储系统116中访问表达 式324。数据流图302包括第一子图304和第二子图306,它们由表示数据流(例如,诸如从 数据源102提供并被子图处理的记录的数据元素的流)的链接328连接。子图304包括第 一组件“Cl ” 308和第二组件“C2” 310,它们由表示数据流(例如,诸如从数据源102提供并 被组件处理的记录的数据元素的流)的链接326连接。系统300还包括聚集引擎312,其聚 集与图302的组件和子图的执行关联的追踪信息,并且通信地连接到数据存储316。聚集 引擎312被配置为将与数据流图302及其子图和组件关联的追踪信息传递到表达式评估引 擎322,其也通信地连接到数据存储316,如下面将更详细地描述的。聚集引擎312可以被 实施为执行模块112的一部分,或者替代地作为监视模块106的一部分。
虽然仅示出了一个数据流图和几个子图和组件,但数据流图时模块实体,并且可 以连接到其它数据流图,或与其它数据流图组合。此外,虽然图3的示例是示出相对较少数 目的子图和组件的简化示例,但数据流图302可以包括任何数据的子图,并且每个子图可以包括任何数目的组件。
在某些示例中,数据存储316被存储在数据存储系统116的存储器(例如,易失性 和非易失性存储器)中。数据存储316存储至少一个数据结构318用于存储聚集的追踪信 息。在某些示例中,数据结构318包括一个或多个字段320A、320B、320C和320D,用于将一 个或多个追踪信息值存储在具有这些字段定义的结构的记录中。
在图3的示例中,图遍历引擎330分析表达式324,以确定当遍历数据流图302的 表示时将需要什么信息来确定数据结构318的定义,如下面将更详细描述的。响应于接收 到新的表达式324,此遍历将在数据流图302的执行之前或者在数据流图302的执行期间 发生。在数据流图302的执行期间,聚集引擎312利用聚集的追踪信息填充定义的数据结 构318。表达式评估引擎322使用经填充的数据结构318来评估表达式324。在评估了表 达式324之后,表达式的结果将提供数据流图302的一个或多个特征的表示。结果可以选 择性地存储在数据存储316中的历史数据332的集合中。
在某些示例中,诸如开发者120 (图1)的用户通过用户界面输入表达式324以评 估。用户可以输入用于评估的新表达式(例如用户可以使用某一形式的编程语言或表达式 创建工具定义要被评估的新表达式),或者用户可以输入现有表达式,诸如从保存的表达式 的列表中选择的表达式,诸如预设的表达式或默认的表达式。一般地,用户可以输入表达 式,以便获得关于一个或多个数据流图的特定特征的信息。例如,如果用户希望评估组件Cl 和C2正消耗的资源量(例如,诸如一个或多个CPU执行用于组件的处理所花费的时间的CPU 资源),则用户可以选择或创建以下表达式
CPU 资源消耗=(SG1. Cl. cpu+SGl. C2. cpu)
以上表达式是“点符号表示法”表达式的示例。表达式中的项包括对应于数据流图 的不同部分的名称(例如子图、组件、端口、链接)以及与数据流图的这些部分关联的特征。 表达式中出现在子图或组件的名称之间的“点”指示“点”右边的子图或组件存在于“点” 左边的子图或组件内。表达式中最后的“点”后面的最后名称对应于正被监视的“点”的左 边的元素的特征。项“SG1. Cl. cpu”提供正被组件C1308消耗的CPU资源,并且,类似地,项 “SG1. C2. cpu”提供正被组件C2310消耗的CPU资源。在以上表达式中,将这两个项相加来 获得正被两个组件C1308和C2310消耗的总CPU资源。项SGL Cl. cpu和SG1. C2. cpu是可 以在表达式的评估之前或期间提供来自数据结构318的字段的值的变量。
可以通过特定参数分解包括CPU资源的一些特征,以独立地针对该参数的不同值 监视该特征。例如,可以针对“主机(host)”参数的各个值而在数据结构318的字段中存储 用于CPU资源变量的多个不同值(例如,作为矢量)。特定子图中的特定组件可以具有在不 同主机计算机上并行执行的不同线程。每个主机计算机可以具有超过一个CPU。在此示例 中,聚集引擎312聚集每个主机上的所有CPU上的CPU时间,以产生用于每个主机的CPU时 间的单个值。这些值被存储在数据结构318的字段中的矢量中。当字段被用于向表达式的 变量提供值时,表达式的结果可以被显示给用户,可选地,作为总结果或作为主机分解的结 果。如果表达式的结果被用于附加的处理(例如定义警示),则用户可以选择(例如使用选项 框(checkbox)指示要使用总结果还是要使用被主机分解的单独结果。例如,当定义与表达 式关联的阈值用于确定什么时候触发警示时,如果选中“总”选项框,则提供单个输入界面, 以接收要与表达式的总结果关联的阈值。如果“总”选项框未被选中,则提供多个输入界面,以接收要与用于各个主机的相应值关联的多个阈值。
虽然在以上示例中表达式324定义了关于正被数据流图302的两个组件消耗的 CPU资源的特征,但表达式评估引擎322也可以被用于评估表示其他特征的表达式。例如, 可以评估表达式来提供穿过组件的记录(或字节)的数目、从输入数据集读取或写入到输出 数据集的记录(或字节)的数目、经过的时间,等等。某些特征可以用其他特征表达,例如,记 录数/经过的时间(num_record/elapsed_time)表示平均处理速率(例如,以记录/秒为单 位)。表达式评估引擎322也可以同时评估多个表达式,并且还可以被配置为根据预定安排 评估表达式。例如,表达式评估引擎322可以被配置为每一小时或者在检测到一个或多个 触发时间或条件时评估表达式324,诸如当确定处理资源相对于对这些资源的需要变得稀 缺时。
在接收到要评估表达式324的指示之后,图遍历引擎330基于表达式324的词法 分析以及通过遍历数据流图的表示所确定的数据流图302的分析而在数据存储316内定义 数据结构318。例如,用于引用组件的项将具有依赖于该组件位于数据流图的层级中多深的 结构。点符号表示法提供完全合格的路径用于遍历数据流图的表示以到达感兴趣的组件, 该路径表达为〈子图 >.〈组件〉。用于引用链接的项表达为〈组件〉_至_〈组件〉。数据 结构318包括配置为保持将最终被提供到表达式评估引擎322以取代表达式324中的一个 或多个变量的值的字段。
在产生数据结构318之前,图遍历引擎330遍历(transverse, walk)数据流图302 的表示以确定评估表达式324所需要的字段320A-D的数目和类型。在某些用于遍历数据 流图302的过程中,图遍历引擎330通过以下操作而开始在数据流图302的最高层级(具 有被表示为该最高层级中的节点的组件和子图)检查数据流图302,并且追随连接数据流图 302的节点的数据流链接以将表达式中的变量名与数据流图的部分的名称(例如,组件、端 口、链接)进行比较,以便识别数据流图中与表达式324的评估相关的部分。即,图遍历引 擎330分析表达式324和数据流图302,以定义特定类型(例如,数据类型)的一个或多个字 段。例如,在上述表达式中,数据结构318将具有两个字段,各自具有与CPU资源相关的类 型。数据流图302的拓扑结构(如由图遍历引擎330所确定的)定义数据结果318中包含 的字段的数目和类型。例如,如果数据流图被表示为具有树拓扑结构的节点的有向图,则基 于表达式,图遍历引擎330能够确定从根节点到表示表达式中引用的组件/数据流的节点 /链接应该遍历哪些路径。如果路径不包括表示表达式中引用的组件或数据流的节点或链 接,则图遍历引擎330可能不需要遍历该路径。替代的,在某些实施方式中,图遍历引擎330 可以遍历整个路径。
在定义了数据结构318的情况下,由执行模块112执行数据流图302,并且在执行 期间,监视模块106管理一个或多个表达式的评估。为了评估表达式,基于定义的字段的规 范,产生数据结构的对应实例,以接收追踪信息。聚集引擎312接收指示要从执行模块112 提供的追踪信息的流中提取什么追踪信息的输入。聚集引擎312设法利用与表达式324的 评估相关的值填充所定义的数据结构318的实例的定义字段320A-D。通过在数据流图302 的执行期间执行模块112产生的追踪信息提供这些值。执行模块112在执行各个子图和组 件时可以产生追踪信息,其由聚集引擎312聚集。在某些示例中,可以使用与数据流图302 的处理一起运行的处理实施聚集引擎312,以收集描述单独组件、子图和数据流的特征的追踪信息。
为了利用合适的追踪信息填充字段,聚集引擎312分析所产生的数据结果318的 示例,以便识别数据流的哪些方面与评估表达式324相关。在某些实施方式中,产生数据结 构318的实例的处理包括使用图遍历引擎330在执行期间再次遍历数据流图的表示,以获 得附加信息(在定义的字段之外)或验证数据流图的结构(例如,如果在执行之前从初始遍 历起已经经过了大量时间)。
对于数据流图的不同方面可能需要不同类型的聚集。一种类型的聚集用于为数 据流图的一个层级提供来自更低层级的追踪信息。例如,聚集引擎312将追踪信息内表示 子图内的单独组件的特征(例如,用于每个组件的单独CPU时间)的数相加,并提供总和以 表示子图的特征(例如总CPU时间)。其它类型的聚集涉及数据流图的其它方面。对于并行 数据流图,存在给定组件的多个实例,其处理在输入数据流上并行接收的数据(例如,可以 不同并行实例之间划分输入数据流上的数据,所述不同并行实例例如可以在不同CPU中执 行)。聚集引擎312聚集用于并行组件的每个实例的不同追踪信息,以提供聚集的值(例如 用于每个实例的总CPU时间)。在已经将追踪信息存储在数据结构318中对应于与表达式 324的评估相关的数据流图的部分(例如相关的数据流、组件或子图)的字段中之后,表达式 评估引擎322接收数据结构318并使用存储的信息来评估表达式324(例如关于组件C1308 和C2310的信息)。在某些情况中,聚集引擎312提供比用于表达式324的评估所必须更多 的用于这些组件的信息(例如,聚集引擎312可以提供关于在其它表达式中引用的变量的 追踪信息,诸如穿过组件的记录的数目,以及当前正评估的表达式324中引用的组件的CPU 使用);然而,表达式评估引擎322可被配置为滤除不必要的追踪信息,并仅提取评估表达式 324所必须的追踪信息。
在已经通过聚集引擎312收集了相关的追踪信息之后,将追踪信息存储在数据结 构318中合适的字段中。因为字段320A-D是定义的“类型”,并且因为追踪信息已被过滤 为具有同一类型,所以可以利用具有兼容且合适的类型的追踪信息填充字段320A-D。在字 段320A-D已填充了相关追踪信息(或与该追踪信息关联的值)之后,数据结构318已经获 得可以被表达式评估引擎322评估的记录的形式。此时,表达式评估引擎322可以从字段 320A-D中取值,以替换表达式324中定义的变量。
在表达式324中的变量已被来自字段320A-D的值替换之后,表达式评估引擎322 可以评估表达式324,以产生期望的结果。使用上述示例表达式,评估该表达式的结果将指 示组件C1308和组件C2310的总CPU使用。可以在执行数据流图的同时执行表达式324的 评估。
图4是类似于示例过程200(图2)的示例过程400,区别在于可以在从表达式的评 估获得结果之后执行的两个可选操作414,416。过程400在系统(例如系统100 (图1)接 收到评估表示数据流图的一个或多个特征的表达式的请求时开始(402)。在接收到评估表 达式的请求之后,系统定义包括一个或多个字段的数据结构(404)。在某些示例中,数据结 构是内存数据结构,通过遍历正被评估的数据流图的表示定义所述数据结构的字段。一般 地,数据结构中的字段被配置为保持评估表达式所必须的数据。
系统100通过聚集从数据流图的不同部分产生的追踪信息而从数据流图收集信 息(406)。一般地,追踪信息在执行数据流图的同时产生,并且可以提供关于数据流图及其组件和子组件的操作的信息、以及各种操作正在消耗的资源量。一旦已经收集和/或聚集 了追踪信息(或者当正在收集和/聚集追踪信息时),系统将与追踪信息关联的值存储在内 存数据结构的字段中(408)。在已经将值存储在数据结构中之后,使用存储在数据结构的字 段中的值代替正被评估的表达式中的变量(410)。利用已知量值代替变量,系统可以接着评 估表达式以提供结果(412)。
在已经确定了结果之后,系统可以将结果与一个或多个阈值比较(414)。例如,假 设系统已经评估了前述表达式,以获得表示用于组件C1308和C2310的CPU使用量的结果 (例如,80%的使用)。系统可以将该80%的结果与关于与这两个组件关联的最大CPU使用的 阈值(例如,50%)进行比较。如果结果超过阈值,则可以系统中产生通知,以警示条件的管理 员(416)。该通知可以是警示或警报的形式,或者可以导致执行自动处理(例如,释放附加的 CPU资源,以向组件C1308和C2310提供附加资源)。
在某些示例中,可以使用结果来显示关于时间或关于其它值的一个或多个特征。 例如,可以使用来自评估表达式的结果产生直方图或其它统计值,其表示基于所收集的历 史数据332的一个或多个评估的特征。可以报告的形式周期性地自动产生直方图,或者可 以由系统300的管理员按需要产生直方图。
因为之前评估的表达式的结果被存储在历史数据332中,所以表达式可以包括作 为历史数据332的函数的项,诸如,在变量的预定数目的之前评估上计算的变量平均值。用 户可以写出将执行一个或多个图的作业的性能与该作业的过往性能进行比较的表达式。这 样的表达式可用于产生基于历史的警示(例如,通知用户表达式测量的图度量与其历史值 偏离)。默认的,系统300可以被配置为在历史数据332中存储被评估的每个表达式的指定 数目的过往结果(例如,从最近50个作业执行)。可以由用户配置该指定数目。
可以在其它表达式中引用特定表达式定义的度量的值,包括度量的历史值。以下 是可以由用户用于引用依赖于历史数据332的度量的历史值或统计值的变量的语法的示 例
value (值)用于正被监视的作业的度量的当前值
max_value (最大值)所存储的历史值上的、度量的最大值
min_value (最小值)所存储的历史值上的、度量的最小值
avg_value (平均值)所存储的历史值上的、度量的平均值
stdev_value (标准差)所存储的历史值上的、度量的标准差
使用这些变量,用户可以构建诸如以下的布尔(Boolean)表达式
值 > 平均值+标准差
其可以被用于定义当值大于其历史平均超过标准差时触发的警报通知。
在构建基于历史的表达式时,也可以给用户访问历史数据中底层单独历史值的权 利。例如,度量的单独历史值被被引用为矢量历史[i] (hiStory[i]),其中i表示多近的 时间捕获了该值。例如,如果通过表示作业消耗的CPU时间的表达式定义度量,则最近完成 的作业执行的使用的总CPU时间的值表示为历史[O]。用于次最近完成的执行的值被表示 为历史[I]。此历史矢量的深度被表示为历史_长度(history_length)。在此数目的历史 值上计算诸如最大值(max_value)和平均值(avg_value)的统计值。如果作业已经运行了 少于历史_长度的次数并且示例[i]矢量因此具有小于历史_长度个存储的历史值,则系统300使用所有存储的历史值来计算统计值。可选地,系统300可以在提供统计值前要求 存储最小数目的历史值(例如,至少3个),使得所提供的统计值更合理。使用历史[i]中可 得的单独值,用户能够定义基于历史的警示。例如,以下表达式“值_(历史
+历史[I]) /2”表示度量值中的最近“飘离(drift)”,其是当前值与最后两次作业执行的平均值的差。 可以使用该布尔表达式来例如通知用户图作业什么时候开始在某种程度上偏离刻画其最 近性能的特征的度量。
在某些示例中,数据流图可以产生被调整适应特定用户的兴趣的追踪信息。例如, 虽然许多数据流图将产生与CPU使用相关的数据,但数据流图也可以被配置为产生与穿过 特定组件的美元数相关的追踪信息(例如,如果用户在金融服务行业中)。因此,表达式可以 是用于评估对用户的业务领域重要的特征的强大工具。
可以使用在计算机上执行的软件实施评估上述数据流图特征的方法。例如,软件 形成在一个或多个编程的或可编程的计算机系统(其可以具有各种架构,诸如分布式、客户 /服务器式、或网格式)上执行的一个或多个计算机程序中的过程,每个计算机系统包括至 少一个处理器,至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至 少一个输入设备或端口、以及至少一个输出设备或端口。软件可以形成更大程序的一个或 多个模块,例如该更大程序提供与数据流图的设计和配置相关的其它服务。图的节点和元 素可以被实施为存储在计算机可读介质中的数据结构或符合存储在数据仓库中的数据模 型的其它经组织的数据。
可以在可以由通用或专用目的可编程计算机读取的存储介质(诸如CD-ROM)上提 供软件,或者可以在网络的通信介质上传送(编码为传播信号)软件到执行其的计算机的存 储介质中。可以在专用计算机上或者使用专用硬件(诸如协处理器)执行所有功能。可以分 布的方式实施软件,在该方式中,通过不同计算机执行软件指定的计算的不同部分。每个这 种计算机程序优选存储在或下载到可由通用或专用可编程计算机读取的存储介质或设备 上,用于当存储介质或设备被计算机系统读取时配置和操作计算机,以执行这里所描述的 过程。本发明的系统可以被考虑实施为配置由计算机程序的计算机可读存储介质,其中如 此配置的存储介质使得计算机系统以特定或预定方式执行这里所描述的功能。
已经描述了本发明的多个实施例。然而,将理解,可以在不偏离本发明的精神和范 围的情况下进行各种修改。例如,上述步骤中的一些可以独立地排序,因此可以与所描述的 顺序不同的顺序执行。
将理解,前面的描述意在说明而不是限制本发明的范围,本发明的范围由所附权 利要求限定。例如,上述多个功能步骤可以不同顺序执行而实质影响总体的处理。其它的 实施例也在权利要求的范围内。
权利要求
1.一种由计算系统执行的方法,用于评估表示数据流图的一个或多个特征的一个或多个表达式,所述数据流图包括表示数据处理组件的顶点,所述顶点由表示所述组件之间的工作元素的流的链接连接,所述方法包括通过所述计算系统接收评估所述一个或多个表达式的请求,所述一个或多个表达式包括对一个或多个变量的一个或多个操作;以及通过所述计算系统评估所述一个或多个表达式,所述评估包括定义包括一个或多个字段的数据结构,在所述数据流图的执行期间,收集与所述数据流图的一个或多个组件关联的追踪信息,将与所述追踪信息关联的值存储在所述一个或多个字段中,以及利用存储在所述一个或多个字段中的值替代所述一个或多个表达式的一个或多个变量,以计算评估所述一个或多个表达式的结果。
2.如权利要求1所述的方法,其中在执行所述数据流图的同时执行所述评估。
3.如权利要求1所述的方法,其中所述追踪信息还与所述数据流图的一个或多个子图的一个或多个组件关联。
4.如权利要求3所述的方法,其中所述一个或多个变量的至少第一变量在所述表达式中表达为包括对所述一个或多个子图的第一子图的引用的项。
5.如权利要求4所述的方法,其中所述第一变量包括对所述第一子图内的第一组件的引用。
6.如权利要求3所述的方法,其中所述一个或多个变量的至少一个对应于所述数据流图、所述一个或多个子图、以及所述一个或多个组件中的一个或多个的特征。
7.如权利要求1所述的方法,其中评估所述一个或多个表达式包括根据预定条件评估所述一个或多个表达式。
8.如权利要求7所述的方法,其中所述预定条件包括触发事件的检测。
9.如权利要求8所述的方法,其中所述触发事件包括一个或多个处理资源相对于对所述一个或多个处理资源的需要而言是稀少的判定。
10.如权利要求1所述的方法,其中定义所述数据结构包括遍历所述数据流图,以识别所述一个或多个字段的类型和数目中的一个或多个。
11.如权利要求10所述的方法,其中遍历所述数据流图包括遍历所述数据流图的与所述一个或多个表达式关联的部分。
12.如权利要求1所述的方法,其中收集与所述数据流图的一个或多个组件关联的追踪信息包括至少部分基于所述一个或多个表达式过滤所述追踪信息。
13.如权利要求1所述的方法,还包括将所述结果与一个或多个阈值进行比较。
14.如权利要求13所述的方法,还包括响应于所述比较产生通知。
15.如权利要求14所述的方法,还包括至少部分基于所述通知执行一个或多个自动处理。
16.如权利要求1所述的方法,还包括从用户界面接收所述一个或多个表达式。
17.如权利要求1所述的方法,还包括提供预定表达式的集合,其包括所述一个或多个表达式。
18.如权利要求1所述的方法,其中所述评估还包括周期性地评估所述一个或多个表达式。
19.如权利要求18所述的方法,还包括使用两个或更多个结果产生与一个或多个特征关联的直方图。
20.如权利要求18所述的方法,还包括至少部分基于周期性地评估所述一个或多个表达式的结果更新存储的历史数据。
21.如权利要求18所述的方法,其中所述一个或多个变量的至少一个依赖于在所述计算系统接收到评估所述一个或多个表达式的请求之前存储在所述历史数据中的值。
22.如权利要求1所述的方法,还包括将与所述追踪信息关联的多个值存储在所述一个或多个字段之一内的矢量中。
23.如权利要求22所述的方法,其中所述多个值中的每个与特定参数的不同相应值关联,并且所述多个值中的每个是在与所述特定参数的相应值关联的追踪信息上聚集的特征的值。
24.一种计算机可读存储介质,存储用于评估表示数据流图的一个或多个特征的一个或多个表达式的计算机程序,所述数据流图包括表示数据处理组件的顶点,所述顶点由表示所述组件之间的工作元素的流的链接连接,所述计算机程序包括使得计算机执行以下步骤的指令接收评估所述一个或多个表达式的请求,所述一个或多个表达式包括对一个或多个变量的一个或多个操作;以及评估所述一个或多个表达式,所述评估包括定义包括一个或多个字段的数据结构,在所述数据流图的执行期间,收集与所述数据流图的一个或多个组件关联的追踪信息,将与所述追踪信息关联的值存储在所述一个或多个字段中,以及利用存储在所述一个或多个字段中的值替代所述一个或多个表达式的一个或多个变量,以计算评估所述一个或多个表达式的结果。
25.一种计算系统,用于评估表示数据流图的一个或多个特征的一个或多个表达式,所述数据流图包括表示数据处理组件的顶点,所述顶点由表示所述组件之间的工作元素的流的链接连接,所述计算系统包括输入设备或端口,配置为接收评估所述一个或多个表达式的请求,所述一个或多个表达式包括对一个或多个变量的一个或多个操作;以及至少一个处理器,配置为评估所述一个或多个表达式,所述评估包括定义包括一个或多个字段的数据结构,在所述数据流图的执行期间,收集与所述数据流图的一个或多个组件关联的追踪信息,将与所述追踪信息关联的值存储在所述一个或多个字段中,以及利用存储在所述一个或多个字段中的值替代所述一个或多个表达式的一个或多个变量,以计算评估所述一个或多个表达式的结果。
26.一种计算系统,用于评估表示数据流图的一个或多个特征的一个或多个表达式,所述数据流图包括表示数据处理组件的顶点,所述顶点由表示所述组件之间的工作元素的流的链接连接,所述计算系统包括 用于接收评估所述一个或多个表达式的请求的装置,所述一个或多个表达式包括对一个或多个变量的一个或多个操作;以及 用于评估所述一个或多个表达式的装置,所述评估包括 定义包括一个或多个字段的数据结构,在所述数据流图的执行期间,收集与所述数据流图的一个或多个组件关联的追踪信息, 将与所述追踪信息关联的值存储在所述一个或多个字段中,以及 利用存储在所述一个或多个字段中的值替代所述一个或多个表达式的一个或多个变量,以计算评估所述一个或多个表达式的结果。
全文摘要
评估表示数据流图(302)的一个或多个特征的一个或多个表达式(324),数据流图(302)包括表示数据处理组件(308、310)的顶点,顶点由表示组件之间的工作元素的流的链接(326、328)连接。计算机系统(100)接收评估一个或多个表达式的请求,该表达式包括对一个或多个变量的一个或多个操作。评估表达式包括定义包括一个或多个字段(320A-D)的数据结构,在数据流图的执行期间收集与数据流图的一个或多个组件关联的追踪信息,将与追踪信息关联的值存储在一个或多个字段中,并利用存储在一个或多个字段中的值代替一个或多个表达式的一个或多个变量,以计算评估该一个或多个表达式的结果。
文档编号G06F11/34GK103069394SQ201180040705
公开日2013年4月24日 申请日期2011年8月25日 优先权日2010年8月25日
发明者M.布克斯鲍姆, D.V.费因豪斯, T.瓦克林 申请人:起元技术有限责任公司