一种用于对输入数据进行采样的方法和系统的制作方法

文档序号:6577978阅读:268来源:国知局
专利名称:一种用于对输入数据进行采样的方法和系统的制作方法
技术领域
本发明涉及应用测试领域,更具体地涉及一种用于对输入数据进行采样的方法和 系统。
背景技术
流处理是一种需要对海量数据进行实时处理的高性能计算模式,其具有实时性、 输入数据量大等特点。采用流处理,可以一边接收来自数据源的输入数据,一边对已接收的 数据进行处理,并且可以同时输出那些已经处理过的数据。借助于流处理技术,可以获得提 高吞吐率、缩短响应时间以及减小系统的存储开销等方面的优势。在现有技术中,流处理已经具有较为广泛的应用。例如,电子商业服务中的算法交 易、射频识别(Radio Frequency Identification, RFID)事件处理应用、欺诈检测应用、处 理监控应用、电信系统中基于位置的服务应用等,都是涉及到流处理的流应用。与一般的应用不同,流应用通常是一种持续地、长期运行的应用。因此在流应用 中出现错误且该错误仅仅影响到流应用的一部分时,通常期望在不停止整个流应用的情况 下,对流应用中的算子(即,在流处理中用于对数据进行分析和处理的操作模块)进行调 试ο然而,根据现有技术,操作模块在调试模式中运行时的速度比在在线运行模式中 运行时的速度低得多。因此,难以在不影响流应用的情况下执行对特定算子的调试。另外,在现有技术中,在进行测试时,主要依靠人工分析和经验来设计测试用例。 对于经验不足的人员来讲,这并不容易。换句话说,测试用例的有效性很大程度上依赖于人 工分析的能力和经验的水平。对于除流应用之外的具有大量输入数据的其他应用,同样存在与上述类似的问题。

发明内容
有鉴于此,本发明提供了一种用于对输入数据进行采样的方法和系统,以便至少 部分解决上面提到的问题。根据本发明的一个方面,提供了一种用于对输入数据进行采样的方法。该方法可 以包括缓存输入数据;记录被缓存的输入数据在在线操作模块中的执行路径;判断被缓 存的输入数据是否经过期望执行路径,并且响应于该被缓存的输入数据经过期望执行路径 而将该被缓存的输入数据采样到数据集中。根据本发明的另一方面,提供了一种用于对输入数据进行采样的系统,包括缓存 装置,用于缓存输入数据;记录装置,用于记录被缓存的输入数据在在线操作模块中的执行 路径;以及采样装置,用于判断各被缓存的输入数据是否经过期望执行路径,并且响应于该 被缓存的输入数据经过期望执行路径而将该被缓存的输入数据采样到数据集中。通过本发明的方法和系统,可以基于执行路径对输入数据进行采样,进而自动形成例如可以用作测试集的数据集。因此,使得测试集的形成不再依赖于人工分析能力和经 验水平,进而提高了工作效率,增加了测试集的有效性。此外,由于采样得到的测试集中的 输入数据都是实际应用中的输入数据,因此更加符合实际应用的情况。另外,得到的测试集 可以提供给该操作模块的离线版本以便进行调试,因此可以实现在不停止在线应用的情况 下,对操作模块进行调试。


通过对结合附图所示出的实施方式进行详细说明,本发明的上述以及其他特征将 更加明显,在本发明的附图中,相同的标号表示相同或相似的部件。在附图中,图1示出了根据本发明一个实施方式的用于对输入数据进行采样的方法的流程 图;图2示出了根据本发明的一个实施方式用于记录执行路径的方法的示意图;图3示出了根据本发明的另一实施方式用于记录执行路径的方法的示意图;图4示出了根据本发明的一个实施方式的用于对输入数据进行采样的系统的方 框图;图5示出了根据本发明的另一实施方式的用于对输入数据进行采样的系统的方 框图;以及图6示意性地示出了可以实现根据本发明的实施方式的计算设备的结构方框图。
具体实施例方式下面,将参考附图详细地描述本发明提供的用于对输入数据进行采样的方法和系 统。首先,将参考图1来描述根据本发明的用于对输入数据进行采样的方法。图1示 出了根据本发明一个实施方式的用于对输入数据进行采样的方法的流程图。如图1所示,在步骤101,针对在线运行的应用中的操作模块,记录输入数据的执 行路径。执行路径是输入数据在操作模块中被处理期间所经过的路径。在各操作模块中, 通常存在各种分支点,诸如判断语、多分支语句、函数调用等,因此不同的输入数据在这些 分支点可能会经过不同的分支。每个输入数据所经过的这些分支在整体上构成了输入数据 的执行路径。对输入数据的执行路径的记录可以通过若干方式来实现。下面将以示例性的方式 描述几种实施方式。在根据本发明的一个实施方式中,可以跟踪并记录输入数据在操作模块程序中的 各个分支点的取值,以便确定在各个分支点是否跳转。然后,由发生跳转的分支点的集合来 表示输入数据的执行路径。所述分支点可以是与判断语、多分支语句、函数调用等相关的 点。通过这种方式,就可以记录该输入数据在程序中的执行路径。图2示出了根据该实施方式的用于记录执行路径的方法的示意图。如图2所示, 在图2中,示出了三个分支点,即点1、点2和点3。标记为“是”的路径表示在相应的分支 点处发生跳转的路径,标记为“否”的路径表示在相应的分支点处没有发生跳转的路径。
5
从图2可以看出,其中包括从左到右四条执行路径LI、L2、L3和L4。如果输入数 据经过执行路径L1,则由于输入数据在点1和点2处均发生跳转,因此其执行路径可以用 包括分支点1和2的集合(1,2)来表示;如果输入数据经过执行路径L2,则由于输入数据 在点1处发生跳转而在点2处没有发生跳转,因此其执行路径可以用包括分支点1的集合 (1)来表示;如果输入数据经过执行路径L3,则由于输入数据在点1处没有跳转而在点3处 发生了跳转,因此其执行路径可以用包括分支点3的集合(3)来表示;而如果输入数据经过 了执行路径L4,则由于输入数据在任何点处均未跳转,因此,其执行路径可以由不包括任何 分支点的空集合(null)来表示。需要说明的是,这种记录执行路径分支的方式较为精确,但占用的存储空间很大, 并且所需的记录时间也较多。在根据本发明的另一优选的实施方式中,可以根据应用需求来调整记录执行路径 的粒度。在各操作模块中,通常存在大量的分支,这些分支中有一些相对于整个执行路径 而言重要性较低,诸如层次较深的分支、区分度较低的分支等,这样的分支通常是可以忽略 的。因此,可以只对操作模块程序中的特定分支点的取值情况进行记录,而不考虑对其他重 要性较低的分支点。这种简化的记录方式可以节约存储空间,降低记录时间。在根据本发明的一个实施方式中,记录执行路径的粒度可以根据存储设备的大 小、期望的记录时间、经过执行路径的数据量其中至少一个来调整。例如,可以在开始记录 之前或者在记录过程中,根据存储设备的大小或者期望的记录时间中的任一个对记录的粒 度进行手动调整;存储设备大,则可以使用较细的粒度,存储设备小可以使用较粗的粒度; 期望记录时间较短,可以使用较粗粒度,如果可以接受较长记录时间,则可以使用较细粒 度。此外,还可以例如在记录过程中,根据经过执行路径的输入数据量对记录执行路 径的粒度进行动态调整。在一个实施例中,首先以较粗的粒度记录执行路径,在例如在发现 当前正在记录的执行路径经过的数据量较大时,进一步针对该执行路径以较细的粒度进行 记录,从而区分该执行路径内部的各子路径。而进一步,可以在发现正在记录的一些执行路 径经过的数据量较小时,可以以较粗的粒度来进行记录这些执行路径。在根据本发明的又 一实施方式中,可以针对特定的执行路径来调整记录执行路径的粒度,例如对于被认为较 为可疑的一条或者多条执行路径可以设置较细的粒度,而对于被认为出现错误可能性很小 的执行路径,则可以设置为较大的粒度。除了上文中描述的利用分支点记录执行路径的方式外,还可以通过其他方式来实 现对输入数据的执行路径的记录。在根据本发明的又一实施方式中,可以通过插桩法来实 现对输入数据的执行路径的记录。插桩技术在软件测试领域是公知的,它是一种通过在源 代码中加入记录信息的语句来获得程序在运行时的信息的技术。利用插桩技术,可以在操 作模块程序中插入大量标杆,这些标杆可以插入在分支点之间的路径上,而并非必须插在 分支点处。通过合理地设置插入在程序中标杆,就可以通过标杆的集合来标识每条路径。在 程序执行过程中,通过记录下输入数据所经过的标杆,即可获知该输入数据的执行路径。图3示出了根据本发明的该实施方式采用插桩法来记录执行路径的方法的示意 图。图3与图2所示类似,包括从左到右四条执行路径L1、L2、L3和L4。如图3所示,如果 输入数据经过执行路径L1,则由于输入数据经过了标杆1,因此其执行路径可以用包括标杆1的集合(1)来表示;类似地,如果输入数据经过执行路径L2,则其执行路径可以用包括标杆2的集合(2)来表示;如果输入数据经过执行路径L3,则其执行路径可以用包括标杆3 的集合(3)来表示;如果输入数据经过了执行路径L4,其执行路径可以用包括标杆4的集 合⑷来表示。本领域技术人员应该理解,在图3示出的示意图中,每条路径可以通过一个标杆 来唯一地标识。然而在实际应用中,路径可能非常复杂,通常需要使用包含大量标杆点的集 合来表示。因此,可以适当地插入标杆,以使得能够有效地标识各条路径,同时所使用的标 杆尽可能少,从而减少存储空间。在以上实施方式中,对执行路径的记录主要通过软件来实现。需要说明的是,也可 以在硬件级别上实现该记录。在根据本发明的一个实施方式中,可以通过处理器内部的流水线来记录输入数据 执行的路径。诸如,对于国际商业机器公司(International Business Corporation, IBM) 的Power体系结构而言,流水线是处理器内部执行指令的主要部件。流水线可以包括多个 流水级,其中最后一级通常被称作提交(commit)阶段。所有指令都经过该提交阶段,输入 数据是否跳转在该提交阶段是可以获知的。因此,可以修改流水线中的提交阶段,以便在发 现每条指令时,记录该指令的地址以及是否发生跳转等信息,从而记录输入数据的执行路 径。在采用硬件方式进行记录的情况下,可以增加硬件缓存,以便存储所记录的信息。 在诸如硬件缓存满时或者即将满时,可以产生中断。响应于该中断,可以将该硬件缓存中的 信息保存到存储器中的适当位置,并清空该硬件缓存以便进行随后的记录。另外,也可以利 用计算机系统结构中的常用组件布隆过滤器(bloom filter)来存储所记录的信息。布隆 过滤器是一种简单的省空间的随机化数据结构,尽管在精度方面具有一定的不足,但是其 可以存储大量信息,因此可以用来存储所记录的信息。根据本发明,通常需要针对应用中的特定操作模块,即整个应用的一部分,来记录 输入数据的执行路径。因此,需要采取措施来实现对记录的控制。在采用软件方式进行记录 的情况下,可以通过确定分支点、标杆是否在特定操作模块内,来确定是否执行记录。而在 采用硬件方式实现记录的情况下,可以设置控制开关以便控制记录的开始和记录的结束。 例如,可以设置控制寄存器,通过在到达需记录的指令时以及在离开需要记录的指令时,设 置控制寄存器的值,来实现对记录的控制。需要说明的是,也可以通过现有技术中已知的其他方式来实现对输入数据的执行 路径的记录。下面返回图1,描述根据本发明的用于对输入数据进行采样的方法。如图1所示,在步骤102,根据输入数据的执行路径,对输入数据进行采样,以形成 包含采样的输入数据的数据集。 根据本发明的一个实施方式,设置有缓存装置,用于存储特定数量的输入数据。该 特定数量需要设计为至少能够确保在得到输入数据的执行路径时,该输入数据尚保存在缓 存装置中,以便可以根据该执行路径确定是否该输入数据进行采样。优选地,该缓存装置可 以采用先进先出的存储方式。 因此,在步骤101中通过记录得到输入数据的执行路径后,就可以根据执行路径来确定是否对仍保存在该缓存装置中的输入数据进行采样。如果需要对该输入数据进行采 样,则可以将该输入数据从缓冲区中复制或者提取到用于存储采集的数据的存储区。如果 不需要进行采样,则可以忽略该输入数据,或者可以从缓存装置中删除该输入数据以便为 其它输入数据提供更多的空间。在根据本发明的一个实施方式中,可以采样输入数据,以使得所采样的输入数据 具有不同执行路径。优选地,所采样的输入数据所具有的执行路径能够尽可能地涵盖需要 调试或者测试的特定操作模块的所有执行路径。在根据本发明的另一实施方式中,可以对输入数据进行采样,以便所采样的输入 数据仅涉及一条或多条指定的执行路径,从而得到与指定的执行路径相关的输入数据。例 如,在确定问题可能出现在操作模块的一条或者几条路径中且需要针对这些路径进行集中 调试或测试时,将会出现这种情况。可以提供适当的用户接口,以便用户指定这些路径。对输入数据进行采样的策略可以包括很多种。接下来,将对以示例性的方式介绍 其中的几种。在根据本发明的一个实施方式中,可以以较高的采样权重,对执行路径出现频率 较低的输入数据进行采样。在操作模块的所有执行路径中,有些执行路径会有大量输入数 据通过,因此其出现的频率较高;而有些执行路径所通过的数据较少,因此其出现的频率会 较低。对于出现频率较高的执行路径,要采样的与该执行路径相关的输入数据是比较容易 的,而对于出现频率较低的执行路径,与其相关的输入数据数量也较少。因此,可以对于执 行路径出现频率较高的输入数据,可以以较高的采样权重进行采样,以便得到与该执行路 径相关的尽可能多的采样数据。例如,可以以较高的采样率对执行路径出现频率较低的输 入数据进行采样,而以较低的采样率对执行路径出现频率较高的输入数据进行采样。出于说明的目的,下面将通过实例对该实施方式进行描述。例如,对于涉及图2所 示的执行路径L1、L2、L3和L4的1000个输入数据,经过执行路径L1的为800个数据,经过 执行路径2的为150个数据,经过执行路径3的为30个数据,经过执行路径4的为20个数 据。由此,对于这1000个数据而言,执行路径出现的频率分别为800、150、30、20。因此,可 以以采样率1对经过执行路径4的输入数据进行采用,即全部采集;以采样率2/3对经过执 行路径3的输入数据进行采用;以采样率2/5对经过执行路径2的输入数据进行采样;以采 样率1/40对经过执行路径1的输入数据进行采样。这样就可以分别得到与每条执行路径 相关的20个输入数据。需要说明的是,上述实例只是出于说明的目的,本发明并不仅限于此。在根据本发明的又一实施方式中,可以以较高的采样优先级,对执行路径相同的 输入数据中较新的输入数据进行采样。例如,对于具有相同执行路径的数据,可以采用先进 先出的方式存储采样得到的数据,当有新的采样数据时,则放弃目前存储的最早的采样数 据。从而使得数据集中的数据都是较新的数据。在本发明的一个实施方式中,可以将得到的数据集用作用于调试的测试集,以便 提供给离线运行的应用,以用于调试或者测试目的。 在上面给出的实施方式中,所述应用优选地为流应用。对于流应用,每个操作模块 的输入通常是流,其包含有结构相同的无穷无尽的流数据对象。因此,对这样的流输入数据 中的每个进行调试也是不现实的。另外,在流应用中的操作模块,即算子,通常是无状态的,这意味着对每个流数据对象的处理与其他流数据对象并无关联。因此,根据本发明的实施 方式,只采样其中的一部分来自动形成用于测试的数据集也是非常有利的。本领域技术人员应该理解,该应用也可以是其他具有大量输入数据的、与流应用 类似的应用。在优选的实施方式中,还可以进一步根据记录的输入数据的执行路径来计算该输 入数据的执行路径特征值,以便由执行路径特征值来唯一地标识输入数据的执行路径,从 而根据该执行路径特征值来采样输入数据。在该优选的实施方式中,集合S是需记录的分支点P1,P2,. . .,pn的集合,其中n为 分支点的数目。对于每个流数据对象SD0k,其执行路径Pk为点pkl,pk2,...,Pkm的集合,即 Pk = {pkl, pk2,. . . , pj ,其中 pkl, pk2, ,pkm 是分支点 p2, , pn 中流数据对象 SD0k 发 生跳转的分支点。然后,可以基于下式、通过适当的哈希函数来计算执行路径的执行路径特 征值CVEP。CVEP(k) = H(pkl) V H(pk2) V . V H(pkm)其中,哈希函数H(x)是用于将点映射为一个比特向量的映射,“V”表示或运算。接下来,将继续参考图2和图3示出的记录执行路径的方法来描述如何根据记录 的执行路径来计算执行路径特征值的实例。在采用图2所示的记录方法的情况下,执行路径LI、L2、L3和L4分别由集合(1, 2)、集合(1)、集合(3)以及空集合(null)表示。在该实例中,采用哈希函数H(x) = 1 << x_l,g卩,将1左移x-1位。如果输入数据1经过执行路径L1,由于其通过分支点的集合(1,2)来表示,则输入 数据1的执行路径特征值CVEP可以用下式来计算CVEP(l) = H(l) V H(2) = (01) V (10) = 11S卩,将对集合中各个节点进行散列后得到的值执行逻辑或运算。类似地,如果输入数据2和3分别经过执行路径L2和L3,则输入数据2和3的执 行路径特征值CVEP如下CVEP (2) = H(l) = 1CVEP (3) = H(3) = 100如果输入数据4经过执行路径L4,由于执行路径L4由空的分支点集合来表示,因 此不需进行哈希,因此输入数据4的CVEP值为0,即CVEP (4) = 0通过这样的方式,就可以计算出各条执行路径的CVEP值。因此,就可以通过CVEP 值来表示执行路径,从而基于执行路径来采样输入数据。另外,如图3所示,在采用插桩法来记录执行路径的情况下,四条路径L1、L2、L3和 L4的分别由标杆的集合(1),(2)、(3)和(4)来表示。因此,同样可以采用上述的哈希函数 来计算执行路径的CVEP值。得到的输入数据1、2、3和4的CVEP值如下CVPE(l)=1
CVEP (2)=10
CVPE (3)=100
CVEP (4)=1000
在实际应用中,执行路径可能比图3所示的复杂得多。因此,可以适当地插入标 杆,来减少存储空间并且降低计算时间和计算复杂度。然而,需要说明的是,上面给出的哈希函数只是用于说明的目的,本发明并不局限 于此,而是可以采用任何其他形式的哈希函数,只要能够唯一地标识出每条执行路径。需要说明的是,计算CVEP值并非是必不可少的。在本发明的一个实施方式中,由 该输入数据发生跳转的分支点的有序序列来表示执行路径,例如,图2中的执行路径L1由 序列“1,2”来表示,执行路径L2由序列“1”来表示;对于执行路径L3,由序列“3”来表示; 而对于执行路径L4,由为空的序列来表示。这样,通过比较上述的有序序列,同样可以实现 基于执行路径对输入数据的采样。在另一个优选的实施例中,可以计算CVEP权重,基于该CVEP权重对输入数据进行 采样,以实现上述以较高的采样权重对执行路径出现频率较低的输入数据进行采样的实施 方式。下面描述如何计算CVEP值以及根据CVEP值来对输入数据进行采样。假设有三个跳转点,分别称作点1,点2和点3。已经记录的500个输入数据中,只 在点1和点3发生跳转的数据有490,只在点2和点3跳转的数据有5个,并且在点1、点2 和点3跳转的数据有5个。因此,可以得到在点1发生跳转的数据总量为495,在点2发生 跳转的数据总量为10个,在点3发生跳转的数据总量为500个。另外,根据上述算法,采用用哈希函数H(x) = 1 <<x_l,对于在点1和点3发生 跳转的490个数据,其执行路径的CVEP为H(l) VH(3) = (001) V (100) = 101 ;类似地, 对于在点2和点3发生跳转的5个数据,其执行路径是110,以及对于在点1、点2和点3发 生跳转的5个数据,其执行路径为111。接着可以根据各个执行路径的数据量以及各点处发生跳转的数据数量计算CVEP权重。对于每条执行路径,其CVEP权重为该条执行路径所经过的数据量除以构成该执 行路径的各点处发生跳转的数据量的总和。例如对于CVEP值为“101”的执行路径,CVEP 权重为=490/(495+500) = 490/995 ;类似地,对于CVEP值为“110”的执行路径,CVEP权 重为5/(10+500) = 5/510,以及对于CVEP值为“111”的执行路径CVEP权重值为5/ (495+10+500) = 5/(1005)。然后根据CVEP权重对输入数据进行采样,CVEP权重越大,则对于相应的执行路径 以较低的采样权重进行采样,而CVEP权重越小则以较高的采样权重对其进行采样,以便得 到更多的输入数据。表1示出了对应的CVEP、CVEP权重以及采样的数据的表格。 从该图可以看出,对于CVEP权重较低的执行路径,即CVEP为“110”和“111”的执 行路径,记录了所有出现的输入数据,而时于CVEP权重较高的执行路径,即CVEP为“101” 的执行路径,仅仅记录所有的490个输入数据中最后出现的输入数据5个输入。需要说明的是,该CVEP权重更为精细地反映了执行路径出现的频率,可以进一步 对执行路径出现的次数相同的执行路径进行细分。通过本发明提供的用于对输入数据进行采样的方法,可以基于执行路径对输入数 据进行采样,进而自动形成例如可以用作测试集的数据集。因此,使得测试集的形成不再依 赖于人工分析能力和经验水平,进而提高了工作效率,增加了测试集的有效性。此外,由于 采样得到的测试集中的输入数据都是实际应用中的输入数据,因此更加符合实际应用的情 况。另外,得到的测试集可以用于离线运行的应用以便进行调试,因此可以实现在不停止在 线应用的情况下,对操作模块进行调试。接下来,将参考图4和图5来描述根据本发明的用于对输入数据进行采样的系统 的实例。图4示出了根据本发明的一个实施方式用于对输入数据进行采样的系统400。如 图4所示,系统400可以包括记录装置401,配置用于针对在线运行的应用中的操作模块, 记录输入数据的执行路径;以及采样装置402,配置用于根据输入数据的执行路径,对输入 数据进行采样,以形成包含采样的输入数据的数据集。图4中省略了前述的缓存装置。在根据本发明的一个实施方式中,所述数据集可以包含具有不同执行路径的输入 数据。 在根据本发明的另一实施方式中,所述数据集可以包含具有一条或多条指定的执 行路径的输入数据。在根据本发明的又一实施方式中,所述采样装置可以进一步配置用于以较高的 采样权重,对执行路径出现频率较低的输入数据进行采样;和/或以较高的采样优先级,对 执行路径相同的输入数据中较新的输入数据进行采样。在根据本发明的再一实施方式中,所述数据集可以被提供给离线运行的应用,以 便利用所述数据集对该应用进行调试。在根据本发明的又一实施方式中,所述应用可以是流应用。另外,图5还示出了根据本发明的另一实施方式用于对输入数据进行采样的系统 500。图5所示,系统500包括记录装置501,对应于图4中的记录装置401,配置用于针对 在线运行的应用中的操作模块,记录输入数据的执行路径;以及采样装置502,对应于图4 中的采样装置402,配置用于根据输入数据的执行路径,对输入数据进行采样,以形成包含 采样的输入数据的数据集。与图4所述的系统400不同的是,图5中的系统500可以进一 步包括计算装置503,配置用于根据输入数据的执行路径,计算每个输入数据的执行路径特 征值,其中,所述执行路径由唯一标识该执行路径的执行路径特征值来表示。图5中省略了 前述的缓存装置。关于上述实施方式中的记录装置401、501、采样装置402、502以及计算装置503的 具体操作,可以参考上面结合1至图3对于本发明的方法的各个步骤的描述。通过本发明提供的系统,可以基于执行路径对输入数据进行采样,以自动形成可 以用于诸如调试的数据集。因此,相对于现有技术而言,提高了工作效率,增加了测试集的有效性,并且得到的测试集也更加符合实际应用的情况。另外,得到的测试集可以提供给离 线运行的应用以便进行调试,因此可以实现在不停止在线应用的情况下,对操作模块进行
调试o下面,将参考图6来描述可以实现本发明的计算机设备。图6示意性示出了可以 实现根据本发明的实施方式的计算设备的结构方框图。图6中所示的计算机系统包括CPU(中央处理单元)601、RAM(随机存取存储 器)602、R0M(只读存储器)603、系统总线604、硬盘控制器605、键盘控制器606、串行接 口控制器607、并行接口控制器608、显示器控制器609、硬盘610、键盘611、串行外部设备 612、并行外部设备613和显示器614。在这些部件中,与系统总线604相连的有CPU 601、 RAM 602、ROM 603、硬盘控制器605、键盘控制器606、串行接口控制器607、并行接口控制器 608和显示器控制器609。硬盘610与硬盘控制器605相连,键盘611与键盘控制器606相 连,串行外部设备612与串行接口控制器607相连,并行外部设备613与并行接口控制器 608相连,以及显示器614与显示器控制器609相连。图6所述的结构方框图仅仅为了示例的目的而示出的,并非是对本发明的限制。 在一些情况下,可以根据需要添加或者减少其中的一些设备。此外,本发明的实施方式可以以软件、硬件或者软件和硬件的结合来实现。硬件部 分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如 微处理器或者专用设计硬件来执行。虽然已经参考目前考虑到的实施方式描述了本发明,但是应该理解本发明不限于 所公开的实施方式。相反,本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修 改和等同布置。以下权利要求的范围符合最广泛解释,以便包含所有这样的修改及等同结 构和功能。
权利要求
一种用于对输入数据进行采样的方法,包括缓存输入数据;记录被缓存的输入数据在在线操作模块中的执行路径;判断被缓存的输入数据是否经过期望执行路径,并且响应于被缓存的输入数据经过期望执行路径而将该被缓存的输入数据采样到数据集中。
2.根据权利要求1所述的方法,进一步包括将具有较低出现频率的执行路径作为所述期望执行路径。
3.根据权利要求1或2所述的方法,进一步包括以较高的采样权重采样经过具有较低出现频率的期望执行路径的输入数据,以较低的 采样权重采样经过具有较高出现频率的期望执行路径的输入数据。
4.根据权利要求1所述的方法,进一步包括以较高的采样优先级,对经过相同期望执行路径的输入数据中较新的输入数据进行采样。
5.根据权利要求1所述的方法,其中所述记录被缓存的输入数据在在线操作模块中的 执行路径的步骤包括计算该输入数据在在线操作模块中的执行路径的执行路径特征值,其中所述执行路径 特征值唯一标识该执行路径。
6.根据权利要求1所述的方法,其中,所述数据集被提供给该在线操作模块的离线版 本,以便利用所述数据集对该操作模块进行调试。
7.根据权利要求1所述的方法,其中,所述在线操作模块是流应用的操作模块。
8.根据权利要求1所述的方法,进一步包括调整记录输入数据的执行路径的粒度。
9.根据权利要求8所述的方法,其中,所述调整记录输入数据的执行路径的粒度的步 骤包括针对特定的执行路径来调整记录输入数据的执行路径的粒度。
10.根据权利要求9所述的方法,其中,所述针对特定的执行路径来调整记录输入数据 的执行路径的粒度的步骤包括根据经过执行路径的输入数据量对记录该执行路径的粒度进行动态调整。
11.一种用于对输入数据进行采样的系统,包括 缓存装置,用于缓存输入数据;记录装置,用于记录被缓存的输入数据在在线操作模块中的执行路径;以及 采样装置,用于判断被缓存的输入数据是否经过期望执行路径,并且响应于被缓存的 输入数据经过期望执行路径而将该被缓存的输入数据采样到数据集中。
12.根据权利要求11所述的系统,进一步包括用于将具有较低出现频率的执行路径作为所述期望执行路径的装置。
13.根据权利要求1或2所述的系统,进一步包括用于以较高的采样权重采样经过具有较低出现频率的执行路径的输入数据,以较低的 采样权重采样经过具有较低出现频率的执行路径的输入数据的装置。
14.根据权利要求11所述的系统,其中,进一步包括用于以较高的采样优先级,对经过相同期望执行路径的输入数据中较新的输入数据进 行采样的装置。
15.根据权利要求11所述的系统,所述记录装置包括计算装置,用于计算该输入数据在在线操作模块中的执行路径的执行路径特征值,其 中所述执行路径特征值唯一标识该执行路径。
16.根据权利要求11所述的系统,其中,所述数据集被提供给该在线操作模块的离线 版本,以便利用所述数据集对该操作模块进行调试。
17.根据权利要求11所述的系统,其中,所述在线操作模块是流应用的操作模块。
18.根据权利要求17所述的系统,进一步包括用于调整记录输入数据的执行路径的 粒度的装置。
19.根据权利要求18所述的系统,其中,所述用于调整记录输入数据的执行路径的粒 度的装置包括针对特定的执行路径来调整记录输入数据的执行路径的粒度的装置。
20.根据权利要求19所述的系统,其中,所述针对特定的执行路径来调整记录输入数 据的执行路径的粒度的装置包括根据经过执行路径的输入数据量对记录该执行路径的粒 度进行动态调整的装置。
全文摘要
本发明提供了一种用于对输入数据进行采样的方法和系统。该方法缓存输入数据;记录被缓存的输入数据在在线操作模块中的执行路径;判断被缓存的输入数据是否经过期望执行路径,并且响应于被缓存的输入数据经过期望执行路径而将该被缓存的输入数据采样到数据集中。通过本发明提供的方法和系统,可以基于执行路径对输入数据进行采样,自动形成用于诸如调试的数据集。因此提高了工作效率,增加了用于调试的数据集的有效性。另外,得到的数据集可以提供给离线运行的应用,以便进行调试,因此可以实现在不停止在线应用的情况下,对操作模块进行调试。
文档编号G06F9/38GK101876934SQ200910136950
公开日2010年11月3日 申请日期2009年4月30日 优先权日2009年4月30日
发明者侯锐, 刘之育, 王华勇, 王艳琦, 邹琼, 邹耀 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1