利用同步多线程进行数据处理的方法及其系统的制作方法

文档序号:6503508阅读:141来源:国知局
利用同步多线程进行数据处理的方法及其系统的制作方法
【专利摘要】本发明的实施方式涉及利用同步多线程SMT进行数据处理的方法及系统。本发明的发明人创造性的提出了根据运行的性能指标自动确定SMT值的方案,也就是说对性能指标起到优化作用的SMT值将被自动选出从而应用于后续的数据处理。具体而言本发明提供了一种数据处理方法,包括:a.为至少一个运算节点设置至少一个同步多线程SMT初始值;b.监测所述至少一个运算节点在所述至少一个SMT初始值下运行的性能指标;以及c.基于所述性能指标自动确定SMT修订值。
【专利说明】利用同步多线程进行数据处理的方法及其系统

【技术领域】
[0001] 本发明的实施方式总体上涉及数据处理,进一步本发明的实施方式涉及利用同步 多线程SMT进行数据处理的方法及系统。

【背景技术】
[0002] 传统的CPU在某一时间只能处理一个指令序列,通常我们把它称为一个线程。在 线程处理的过程中CPU的处理单元需要不断调入指令与数据进行处理。随着CPU技术的发 展,CPU的主频与性能不断提高,需要调入指令和数据的速度不断提高。但不幸的是内存技 术的发展并没有跟上CPU发展的速度,内存通常无法提供足够的指令和数据给CPU进行处 理。于是同步多线程(Simultaneous multithreading,即SMT)技术应运而生。同步多线 程是一种在一个CPU的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质 上,同步多线程是一种将线程级并行处理(多CPU)转化为指令级并行处理(同一 CPU)的 方法。同步多线程是单个物理处理器从多个硬件线程上下文同时分派指令的能力。同步多 线程使得同一处理器可以同时调度多个应用程序,从而利用处理器的超标量结构性质。SMT 对于处理商业事务处理负载可能带来性能优化。在更加注重系统的整体吞吐量而非单独线 程的吞吐量时,SMT是一个很好地选择。但是并非所有的应用都能通过SMT取得性能优化。 那些性能受到执行单元限制的应用,或者那些耗尽所有处理器的内存带宽的应用,其性能 都不会通过在同一个处理器上执行两个线程而得到提高。目前一些高端处理器已经能够支 持同步多线程。


【发明内容】

[0003] 本发明的发明人注意到尽管目前的一些高端处理器已经能够支持同步多线程 SMT,但是同步多线程的设置并非自动的,也就是说程序员需要手动确定合适的SMT值,即 在一个处理器内核上同时执行的硬件线程的数量。然而随着程序的运行、工作任务的变化、 程序与硬件的相互作用也是在不断变化的,因此最优的SMT值实际上是在不断变化的。实 际上,最优的SMT值是由很多因素所决定的,包括任务本身的特点,比如10密集性任务、CPU 密集型任务等,也包括软件和硬件的配置,以及软件与硬件的相互作用等。因此很难总结出 一些简单的规则来判断SMT值的最优值。
[0004] 鉴于所述问题,本发明的发明人创造性地提出了根据性能指标自动确定SMT值的 方案,也就是说对性能指标起到优化作用的SMT值将被自动确定从而应用于后续的数据处 理。
[0005] 具体而言本发明提供了一种数据处理方法,包括:a.为至少一个运算节点设置至 少一个同步多线程SMT初始值;b.监测所述至少一个运算节点在所述至少一个SMT初始值 下运行的性能指标;以及c.基于所述性能指标自动确定SMT修订值。
[0006] 本发明还提供了一种数据处理系统,包括:设置装置,被配置为为至少一个运算节 点设置至少一个同步多线程SMT初始值;监测装置,被配置为监测所述至少一个运算节点 在所述至少一个SMT初始值下运行的性能指标;以及确定装置,被配置为基于所述性能指 标自动确定SMT修订值。
[0007] 按照本发明的一个实施例,可以根据运行的性能指标自动确定SMT值,从而使得 SMT值动态适应系统的运行变化,并且无需人工对SMT值进行设置。

【专利附图】

【附图说明】
[0008] 通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的所述以及其 它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号 通常代表相同部件。
[0009] 图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图。
[0010] 图2示出了按照本发明的一个实施例的利用同步多线程SMT进行数据处理的方法 流程图。
[0011] 图3A示出了以中心决策方式设置SMT初始值的一个实施例的示意图。
[0012] 图3B示出了以中心决策方式设置SMT初始值的另一个实施例的示意图。
[0013] 图3C示出了以中心决策方式设置SMT初始值的又一个实施例的示意图。
[0014] 图3D示出了以中心决策方式设置SMT初始值的还一个实施例的示意图。
[0015] 图4A示出了以本地决策方式设置SMT初始值的一个实施例的示意图。
[0016] 图4B示出了以本地决策方式设置SMT初始值的另一个实施例的示意图。
[0017] 图5示出了以中心决策和地方决策相结合的方式设置SMT初始值的一个实施例的 示意图。
[0018] 图6示出了按照本发明的一个实施例的在MapReduce架构下的不同阶段适用本发 明的不意图。
[0019] 图7示出了按照本发明的一个实施例的利用同步多线程SMT进行数据处理的系统 框图。

【具体实施方式】
[0020] 下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开 的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方 式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的 范围完整的传达给本领域的技术人员。通过结合附图对本公开示例性实施方式进行更详细 的描述,本公开的所述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性 实施方式中,相同的参考标号通常代表相同部件。
[0021] 图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框 图。
[0022] 下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开 的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方 式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的 范围完整地传达给本领域的技术人员。
[0023] 所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。 因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包 括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为"电路"、"模 块"或"系统"。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质 中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0024] 可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计 算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是--但不限 于--电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算 机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便 携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储 器(DPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、 或者所述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程 序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0025] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号, 其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括--但 不限于--电磁信号、光信号或所述的任意合适的组合。计算机可读的信号介质还可以是 计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者 传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0026] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括--但不限 于--无线、电线、光缆、RF等等,或者所述的任意合适的组合。
[0027] 可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机 程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++, 还包括常规的过程式程序设计语言-诸如"C"语言或类似的程序设计语言。程序代码可以 完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部 分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在 涉及远程计算机的情形中,远程计算机可以通过任意种类的网络--包括局域网(LAN)或 广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提 供商来通过因特网连接)。
[0028] 下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/ 或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各 方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、 专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序 指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框 中规定的功能/操作的装置。
[0029] 也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置 以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一 个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture) 〇
[0030] 也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备 上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计 算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图 和/或框图中的方框中规定的功能/操作的过程。
[0031] 图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框 图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使 用范围带来任何限制。
[0032] 如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统 /服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器 28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0033] 总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器, 外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举 例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC) 总线,增强型ISA总线、视频电子标准协会(VDSA)局域总线以及外围组件互连(PCI)总线。
[0034] 计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是 任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动 的和不可移动的介质。
[0035] 系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存 取存储器(RAM) 30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其 它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34 可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为"硬盘驱动器")。尽管 图1中未示出,可以提供用于对可移动非易失性磁盘(例如"软盘")读写的磁盘驱动器, 以及对可移动非易失性光盘(例如⑶-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。 在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28 可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模 块被配置以执行本发明各实施例的功能。
[0036] 具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器 28中,这样的程序模块42包括--但不限于--操作系统、一个或者多个应用程序、其它 程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程 序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0037] 计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、 显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的 设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信 的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接 口 22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络 (例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适 配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示 出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代 码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存 储系统等。
[0038] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以 代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个 用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所 标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以 基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的 是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行 规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的 组合来实现。
[0039] 按照本发明的一个实施例,可以对SMT值进行自适应调整,也就是说哪个SMT值更 利于系统的整体性能,就按照哪个SMT值进行数据处理。这样既无需人为对SMT值进行手 动修改,并且保证所采用的SMT值适合当前所执行的任务以及硬件、软件安排。本实施例无 需对当前执行的任务类型、硬件安排以及软件安排进行复杂的分析,而是通过训练的方式 寻找对系统运行性能最佳的SMT值,从而使用该SMT值。基本上,本实施例可以分为两个阶 段、训练阶段与执行阶段,在训练阶段将会设置SMT初始值,监测在SMT初始值下的系统运 行性能指标,并根据所述性能指标确定SMT修订值,而在执行阶段则将使用SMT修订值进行 数据处理。
[0040] 图2示出了按照本发明的一个实施例的利用同步多线程SMT进行数据处理的方法 流程图。具体而言,图2描述了一种数据处理方法,其中步骤a为至少一个运算节点设置至 少一个同步多线程SMT初始值。其中SMT初始值表示处理器内核所并行执行的硬件线程的 初始数量。通常将SMT1表不仅在处理器内核上执行单一线程、SMT2表不在处理器内核上执 行两个硬件线程,SMT4表示在处理器内核上执行四个硬件线程,以此类推。本实施例既可以 应用于一个运算节点也可以应用于多个运算节点,后文对此将有更详细的举例说明。所述 设置SMT初始值可以是人为指定的、随机自动设定的、或者还可以是根据预定规则设定的。
[0041] 步骤b监测所述至少一个运算节点在所述至少一个SMT初始值下运行的性能指 标。在训练阶段,系统并不知道哪个SMT初始值是最合适当前的系统运行的,所以需要经过 一定的监测过程,从而判断出哪个SMT初始值是最合适的。所述性能指标可以是任何用以 衡量一个或多个运算节点的运行性能的度量,比如每指令周期(Cycles Per Instruction, CPI)、缓存失效率(Cache Miss Ratio)、分支预测失误(branch mispredictions)、浮点指 令比例(fraction of floating point operations)等或其结合。根据所述性能指标可以 确定运算节点在当前SMT初始值下是否可以带来性能优化,从而确定应该使用哪个SMT值 可以实现整体性能优化。
[0042] 步骤c基于所述性能指标自动确定SMT修订值。按照本发明的一个实施例,哪个 SMT初始值下所监测的性能指标最优,就选择哪个SMT初始值作为SMT修订值。按照本发明 的另一个实施例,如果某个SMT初始值下所监测的性能指标达到预定标准,就确定该SMT初 始值为SMT修订值,并且在后续的实施阶段都使运算节点在该SMT修订值下进行数据处理, 比如如果SMT1下运行的性能指标已经达到预定标准就采用SMT1作为SMT修订值,而不去 比较是否SMT2下运行的性能指标可能更优。
[0043] 可选的,图2所示的数据处理方法还包含步骤d使所述至少一个运算节点在所述 SMT修订值下运行(图中用虚线示出)。使所述至少一个运算节点在SMT修订值下进行数 据处理,从而对其性能进行优化。
[0044] 可以理解,尽管图2以顺序的方式描述步骤a_d,但是并非一定要步骤b结束后才 能执行步骤c以及步骤d。也就是说,按照本发明的一个实施例,在完成对性能指标的监测 后,再进行SMT修订值的自动确定;而按照本发明的另一个实施例,在性能指标的监测尚未 完成的时候就可以进行SMT修订值的自动确定,也就是说性能指标的监测是一个持续的过 程,即便在步骤c与步骤d的进行过程中依然可以持续的对性能指标进行监测,所述持续 的监测可以进一步被用于确定是否需要重新进行SMT值的确定,即是否需要重新执行步骤 a_c。因此按照本发明的一个实施例,所述数据处理方法进一步包括响应于监测到所述性能 指标变劣,重复执行步骤a-c (图中未画出)。因为性能指标变劣可能意味着当前的SMT值 设置已经不适合当前的运算情况,当前的SMT值对性能改善起到了负面效果,因此需要重 新选择适合的SMT值。值得说明的是,重复执行步骤a-c并不意味着必然排除重复执行其 他的步骤。比如在一个实施例中,还可以重复执行步骤a-d。
[0045] 按照本发明的一个实施例,所述步骤a-c是仅在运行时(runtime)执行的,因此 SMT修订值的确定过程并不会影响到运算节点的正常工作,在训练阶段a-c所获得的运算 结果并不会被浪费,从而保证了运算阶段的效率。值得说明的是,所述步骤a-c是仅在运行 时执行的并不意味着别的步骤不能在运行时执行。比如在一个实施例中,步骤a-d都是在 运行时执行的。
[0046] 按照本发明的另一个实施例,步骤a-c是在建立时(buildtime)执行的,而步骤d 是在运行时执行的,这样buildtime的运算就是为了确定runtime应当适用的SMT修订值, 而buildtime的运算结果将被丢弃,而在runtime按照SMT修订值进行重新运算。
[0047] 本发明可以适用于MapReduce架构下,也可以用于通用程序架构(比如一般的多 线程程序)的SMT动态调优。为了方便起见,下文中用MapReduce架构进行举例说明。但 是应当理解,除非特别说明,下文中的实施例既可以适用于MapReduce架构,也可以适用于 通用程序的其他架构。
[0048] 图3A示出了按照以中心决策方式设置SMT初始值的一个实施例的示意图。图中示 意性的示出了在MapReduce架构下的节点,其中JT(JobTracker)相当于主节点(master), TT(TaskTracker)相当于从节点(slave),也是本发明中的运算节点。JT负责将MapReduce 计算任务分配到不同节点的TT上去执行,并实时收集和监控TT上面运行的任务的情况,如 果某些TT上运行任务失败,JT还要负责将失败的任务重新分配到其他节点的TT上去运行。 TT负责执行MapReduce任务,并将任务的状态定期传给JT。
[0049] 图3A中示出了一个JT和三个TT配合工作的示意图。图2中的步骤a被进一步 实现为为多个运算节点设置多个SMT初始值,包括为每个运算节点设置一个SMT初始值,例 如,JT将TT1的SMT初始值设置为SMT1,将TT2的SMT初始值设置为SMT2,将TT3的SMT初 始值设置为SMT4。在后续的步骤中步骤b被进一步实现为监测所述多个运算节点在所述多 个SMT初始值下运行的性能指标,也就是监测TT1、TT2、TT3在SMT1、SMT2、SMT4下运行的 性能指标。TT1、TT2、TT3可以将其上测量到的性能指标返回JT以供JT进行后续比较。步 骤c被进一步被实现为选择所述性能指标最优的运算节点的SMT初始值作为SMT修订值, 在训练过程中发现ΤΤ2上的性能指标最优,因此确定将ΤΤ2上适用的SMT2作为SMT修订值。 可选的,步骤d被进一步实现为使所述多个运算节点在相同的SMT修订值下运行,也就是使 得TT1、TT2、TT3在执行阶段都采用SMT2进行数据处理,因为SMT2将会带来最优的性能。
[0050] 图3B示出了以中心决策方式设置SMT初始值的另一个实施例的示意图。如果TT 的数量大于SMT初始值的数量,比如一共有10个TT,而只有三个SMT初始值可以分配,则 可以在这些TT间尽量平均分配SMT初始值(如将SMT1分配给TT1-TT3,将SMT2分配给 TT4-TT6,将SMT3分配给TT7-TT10),而后将多个TT返回的同一 SMT初始值下的被监测的性 能指标的平均作为该SMT初始值下的性能指标,并且通过比较多个SMT初始值下的性能指 标可以确定应当将哪个SMT初始值确定为SMT修订值。
[0051] 图3C示出了以中心决策方式设置SMT初始值的又一个实施例的示意图。在该例 子中,JT不是一个单独的节点,而是由TT中的一个兼任,比如由TT1兼任JT的角色,从而 承担设置SMT初始值,并且根据监测到的各个节点的性能指标确定SMT修订值,并且使各个 运算节点在SMT修订值下运行的任务。
[0052] 图3D示出了以中心决策方式设置SMT初始值的还一个实施例的示意图。在该例 子中,JT也不是一个单独的节点,JT的工作由TT中的多个兼任,比如由TT1兼任JT的角 色,负责设置SMT初始值;TT2也兼任JT的角色,负责根据监测到的各个节点的性能指标确 定SMT修订值,并且使各个运算节点在SMT修订值下运行。可见,JT的管理工作也可以由 多个TT分担。
[0053] 对于各个TT同构的情况,采用所述中心决策的方式是比较合适的。因为在TT同 构的情况下,各个运算节点的硬件和软件资源配置是相同的,因此通过判断各个TT所检测 到的性能指标能够判断哪个TT的SMT初始值是最优的SMT值。然而如果各个TT处于异构 的情况,也就是各个TT的硬件或软件资源配置不同时,仍然采用所述中心决策的方式可能 无法判断出最佳的SMT值,因为各个TT的比较基础不同。因此在TT异构的情况下可以采 用下面所披露的本地决策方式来决定。
[0054] 图4A示出了以本地决策方式设置SMT初始值的一个实施例的示意图。在图4A所 示的例子中,两个TT是异构的,因此TT1和TT2将分别为自己确定适合的SMT修订值。以 TT1为例,TT1将自己进行SMT初始值设置。因此,步骤a被进一步被实现为为一个运算节 点设置多个SMT初始值,包括在所述一个运算节点的多个时段设置多个SMT初始值,比如为 TT1在不同时段设置不同的SMT初始值,使其在时间段1以SMT1运行,在时间段2以SMT2 运行,在时间段3以SMT4运行。步骤b被进一步被实现为监测所述一个运算节点在所述 多个SMT初始值下运行的性能指标,例如监测TT1在SMT1、SMT2、SMT4下运行的性能指标。 步骤c被进一步被实现为选择所述性能指标最优的时段所对应的SMT初始值作为SMT修订 值,比如时间段2的性能指标最优,则选择时间段2对应的SMT2作为SMT修订值。可选的, 步骤d被进一步被实现为使所述一个运算节点在所述SMT修订值下运行,例如使所述TT1 在SMT2下运行。同理,TT2也可以为自己确定合适的SMT修订值。
[0055] 需要说明的是,本地决策并不意味着决策只能在本地TT进行,而是也可以将所述 决策过程交给JT进行。图4B示出了以本地决策方式设置SMT初始值的另一个实施例的示 意图。在图4B的例子中,整个决策过程是由JT完成的,不过由于TT1与TT2处于异构,因 此JT根据仍然为TT1设置三个SMT初始值(即SMT1、SMT2、SMT4),并且监测TT1在多个时 段的多个SMT初始值下运行的性能指标,以及选择所述性能指标最优的时段所对应的SMT 初始值作为SMT修订值,且使TT1在所述SMT修订值下运行。可见虽然整个决策过程由JT 完成,但是JT是根据TT1独立的监测结果所做出决策,因此本实施例与图3A所示的实施例 存在根本差别。同理,JT也可以利用类似方式确定TT2适用的SMT修订值。
[0056] 按照本发明的另一个实施例,图4B中的JT可以将部分的决策工作交由TT完成, 比如将在多个时段设置多个SMT初始值的工作交由TT1自己完成,而JT负责执行剩下的步 骤 b_d。
[0057] 按照本发明的又一个实施例,图4B中的JT的工作可以由TT2完成,也就是由TT2 承担JT的角色,从而完成对TT1和TT2本身的SMT修订值的决策过程。
[0058] 相比较而言,中心决策的方式可以为不同的运算节点分配不同的SMT初始值,从 而测量不同运算节点在不同SMT初始值下的性能指标,本地决策的方式为同一运算节点的 不同时段设置不同的SMT初始值,从而测量同一运算节点在不同SMT初始值下的性能指标。 中心决策的方式比较节省监测时间,因为多个运算节点可以在并行进行性能指标的监测, 而本地决策的方式更适用于多个运算节点异构的情况,或者运算节点比较少的情况(比如 仅有一个运算节点时,就无法采用中心决策的方式)。
[0059] 如果存在多个TT,但是其数量小于SMT初始值的数量,比如TT仅有两个,而SMT初 始值有三个,此时如果要适用中心决策的方式,则无法为每个TT分配唯一的SMT初始值进 行性能指标的监测,因此可以将中心决策和本地决策的方式相结合,从而为至少一个TT分 配多个SMT初始值,使其测量在多个时段上的性能指标,从而寻找最有利于性能优化的SMT 修订值。图5示出了以中心决策和本地决策相结合的方式设置SMT初始值的一个实施例的 示意图。步骤a被进一步被实现为为多个运算节点设置多个SMT初始值,其中至少有一个 运算节点在多个时段被设置多个SMT初始值,比如为TT1设置SMT1为初始值,为TT2设置 SMT2以及SMT4为初始值使得TT2在不同时段监测其在不同SMT初始值下的性能指标。步 骤b被进一步被实现为监测所述多个运算节点在多个SMT初始值下运行的性能指标,例如 既监测TT1在时间段1上应用SMT1的性能指标,也监测TT2在时间段1上应用SMT2的性 能指标和TT2在时间段2上应用SMT4的性能指标。步骤c被进一步被实现为选择所述性 能指标最优的时段所对应的运算节点的SMT初始值作为SMT修订值,例如经过比较确定TT2 在时间段1的性能指标最优,因此TT2在时间段1上应用的SMT2被确定为SMT修订值。可 选的,步骤d被进一步实现为使所述多个运算节点在相同的SMT修订值下运行,如使TT1与 TT2都在SMT2下运行。
[0060] 可选的,图5中JT的工作可以全部的、或部分的交给一个或多个TT执行。
[0061] 可以理解,尽管上文通过描述图3A-图5披露了如何在MapReduce架构下设置SMT 初始值并完成后续的步骤。但是应当理解,所述实施例并不只限于在MapReduce架构下,其 可以应用于其他通用程序架构下,只不过JT与TT的名称可能不同而已。
[0062] 图6示出了按照本发明的一个实施例的在MapReduce架构下适用本发明的示意 图。MapReduce是一种编程模型,用于大规模数据集的并行运算。MapReduce通过把对数据 集的大规模操作分发给网络上的每个节点实现可靠性,每个节点会周期性的把完成的工作 和状态的更新报告回来。在这种编程模型下,用户通过定义map函数和reduce函数来解决 问题。map函数对用户输入的键/值对(key/value pair)进行处理,生成一系列新的键/ 值对作为中间结果;reduce函数将键/值列表对作为输入,对同属于一个键的值列表进行 处理,生成最终处理结果输出。因此MapReduce架构下一个完整的作业(j ob)周期大致可 以分为三个阶段:仅执行Map运算的阶段、并行执行Map运算与Reduce运算的阶段、仅执行 Reduce运算的阶段。图6示出了三个阶段的示意图。
[0063] 本发明的发明人发现,由于在三个阶段下执行的运算任务不同,其适用的最优的 SMT值也可能不同,如对于Terasort (Terasort是Hadoop中的的一个排序作业)这个作业 而言,在仅执行Map运算的阶段10操作占的比例较大,而在仅执行Reduce运算的阶段计算 任务占据了较大的比例。
[0064] 为了对每个阶段确定最优的SMT值,需要对每个阶段重复进行监测,从而确定该 阶段适合的SMT值。按照本发明的一个实施例,其中所述至少一个运算节点在MapReduce 架构下运行,当所述至少一个运算节点处于MapReduce架构的第一阶段的情况下执行所述 步骤a-c,并且所述方法进一步包括响应于检测到所述至少一个运算节点从所述第一阶段 切换到第二阶段,重新执行所述步骤a-c。其中所述第一阶段与第二阶段是下列各项组合中 的任意一个组合:在第一阶段仅执行Map运算并且在第二阶段同时执行Map运算与Reduce 运算,在第一阶段同时执行Map运算与Reduce运算并且在第二阶段仅执行Reduce运算, 在第一阶段仅执行Reduce运算并且在第二阶段仅执行Map运算(当从仅执行Reduce运算 切换到仅执行Map运算表示当前已经完成一个MapReduce作业的处理,从而切换到下一个 MapReduce作业的处理)。在上面的例子中,当运算从一个阶段切换到另一个阶段时,则重 复步骤a-c从而使得每个阶段都工作在最合适的SMT值下。需要说明的是,上文实施例中 所提到的重复步骤a-c,并不意味着必然排除重复执行其他的步骤。
[0065] 按照本发明的另一个实施例,如果数据处理方法包含步骤d,并且如果所述至少一 个运算节点在MapReduce架构下运行,那么当所述至少一个运算节点处于MapReduce架构 的第一阶段的情况下执行所述步骤a-d,并且所述方法进一步包括响应于检测到所述至少 一个运算节点从所述第一阶段切换到第二阶段,重新执行所述步骤a-d。
[0066] 按照本发明的一个实施例,所述至少一个运算节点在MapReduce架构下运行,当 所述至少一个运算节点处于MapReduce架构的仅执行Map运算的阶段的情况下执行所述步 骤a-c,并且步骤c进一步包括:基于在预定任务循环(task iteration)内监测到的所述至 少一个运算节点在所述至少一个SMT初始值下运行的性能指标自动确定所述SMT修订值。 在图6的例子中,在MapReduce架构的第一阶段,通过监测到的至少一个任务循环内的运算 节点的性能指标来确定SMT修订值,这样通过一个比较完整的采样周期,可以获得更准确 的采样结果,使得监测到的性能指标能够反映至少一个完整的任务循环内的性能指标的情 况。
[0067] 按照本发明的一个实施例,所述步骤c进一步包括:基于在预定时间窗口内监测 到的所述至少一个运算节点在所述至少一个SMT初始值下运行的性能指标自动确定所述 SMT修订值。在图6的例子中,在MapReduce架构的第一阶段(仅执行Map运算的阶段)也可 以通过监测预定时间窗口内的运算节点的性能指标来确定SMT修订值。当然在MapReduce 架构的第二阶段(并行执行Map运算和Reduce运算)和第三阶段(仅执行Reduce运算), 由于其运行并不是按照任务循环来划分的,因此难以根据任务循环对性能指标进行监测, 因此在第二阶段和第三阶段,更适宜根据预定时间窗口对性能指标进行监测。当然第二阶 段的时间窗口长度与第三阶段的时间窗口长度可以相同,也可以不同。但是应当理解,本实 施例并不只限于在MapReduce架构下,其可以应用于其他通用程序架构下。
[0068] 综上所述,按照本发明的一个实施例,可以自动的根据性能指标对SMT值进行动 态调整,使得SMT值的设置有利于系统性能优化。
[0069] 上文描述了本发明中的数据处理方法,下面将结合图7描述在同一发明构思下的 数据处理系统,其中相同或相应的实现细节由于在上文中已经进行了详细和完整的描述, 因此在下文中将不再进行赘述。
[0070] 图7示出了按照本发明的一个实施例的利用同步多线程SMT进行数据处理的系统 框图。图7中的数据处理系统包括设置装置、监测装置和确定装置,可选的图7中的系统还 包括使能装置。其中所述设置装置被配置为为至少一个运算节点设置至少一个同步多线程 SMT初始值。所述监测装置被配置为监测所述至少一个运算节点在所述至少一个SMT初始 值下运行的性能指标。所述确定装置被配置为基于所述性能指标自动确定SMT修订值。所 述使能装置被配置为使所述至少一个运算节点在所述SMT修订值下运行。
[0071] 按照本发明的一个实施例,所述至少一个运算节点在MapReduce架构下运行,当 所述至少一个运算节点处于MapReduce架构的第一阶段的情况下运行所述设置装置、监测 装置、确定装置,并且所述系统进一步被配置为响应于检测到所述至少一个运算节点从所 述第一阶段切换到第二阶段,重新运行所述设置装置、监测装置、确定装置,其中所述第一 阶段与第二阶段是下列各项组合中的任意一个组合:在第一阶段仅执行Map运算并且在第 二阶段并行执行Map运算与Reduce运算,在第一阶段并行执行Map运算与Reduce运算并 且在第二阶段仅执行Reduce运算,在第一阶段仅执行Reduce运算并且在第二阶段仅执行 Map运算。
[0072] 按照本发明的一个实施例,其中所述至少一个运算节点在MapReduce架构下运 行,当所述至少一个运算节点处于MapReduce架构的仅执行Map运算的阶段的情况下运行 所述设置装置、监测装置、确定装置,并且所述监测装置进一步被配置为基于在预定任务循 环内监测到的所述至少一个运算节点在所述至少一个SMT初始值下运行的性能指标自动 确定所述SMT修订值。
[0073] 按照本发明的一个实施例,其中所述监测装置进一步被配置为基于在预定时间窗 口内监测到的所述至少一个运算节点在所述至少一个SMT初始值下运行的性能指标自动 确定所述SMT修订值。
[0074] 按照本发明的一个实施例,其中所述设置装置进一步被配置为为多个运算节点设 置多个SMT初始值,包括为每个运算节点设置一个SMT初始值;所述监测装置进一步被配置 为监测所述多个运算节点在所述多个SMT初始值下运行的性能指标;所述确定装置进一步 被配置为选择所述性能指标最优的运算节点的SMT初始值作为SMT修订值。
[0075] 按照本发明的一个实施例,其中所述设置装置进一步被配置为为一个运算节点设 置多个SMT初始值,包括在所述一个运算节点的多个时段设置多个SMT初始值;所述监测装 置进一步被配置为监测所述一个运算节点在所述多个SMT初始值下运行的性能指标;所述 确定装置进一步被配置为选择所述性能指标最优的时段所对应的SMT初始值作为SMT修订 值。
[0076] 按照本发明的一个实施例,其中所述设置装置进一步被配置为为多个运算节点设 置多个SMT初始值,其中至少有一个运算节点在多个时段被设置多个SMT初始值;所述监测 装置进一步被配置为监测所述多个运算节点在多个SMT初始值下运行的性能指标;所述确 定装置进一步被配置为选择所述性能指标最优的时段所对应的运算节点的SMT初始值作 为SMT修订值。
[0077] 按照本发明的一个实施例,响应于监测到所述性能指标变劣,重复运行所述设置 装置、监测装置、确定装置。
[0078] 按照本发明的一个实施例,所述设置装置、监测装置、确定装置是仅在运行时执行 的。
[0079] 以上已经描述了本发明的各实施例,所述说明是示例性的,并非穷尽性的,并且也 不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技 术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨 在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领 域的其它普通技术人员能理解本文披露的各实施例。
【权利要求】
1. 一种数据处理方法,包括: a. 为至少一个运算节点设置至少一个同步多线程SMT初始值; b. 监测所述至少一个运算节点在所述至少一个SMT初始值下运行的性能指标;以及 c. 基于所述性能指标自动确定SMT修订值。
2. 如权利要求1所述的方法,所述方法进一步包括: d. 使所述至少一个运算节点在所述SMT修订值下运行。
3. 如权利要求1或2所述的方法,其中所述至少一个运算节点在MapReduce架构下运 行,当所述至少一个运算节点处于MapReduce架构的第一阶段的情况下执行所述步骤a-c, 并且所述方法进一步包括: 响应于检测到所述至少一个运算节点从所述第一阶段切换到第二阶段,重新执行所述 步骤a-c,其中所述第一阶段与第二阶段是下列各项组合中的任意一个组合: 在第一阶段仅执行Map运算并且在第二阶段并行执行Map运算与Reduce运算, 在第一阶段并行执行Map运算与Reduce运算并且在第二阶段仅执行Reduce运算, 在第一阶段仅执行Reduce运算并且在第二阶段仅执行Map运算。
4. 如权利要求1或2所述的方法,其中所述至少一个运算节点在MapReduce架构下运 行,当所述至少一个运算节点处于MapReduce架构的仅执行Map运算的阶段执行所述步骤 a_c,并且步骤c进一步包括: 基于在预定任务循环内监测到的所述至少一个运算节点在所述至少一个SMT初始值 下运行的性能指标自动确定所述SMT修订值。
5. 如权利要求1或2所述的方法,其中步骤c进一步包括: 基于在预定时间窗口内监测到的所述至少一个运算节点在所述至少一个SMT初始值 下运行的性能指标自动确定所述SMT修订值。
6. 如权利要求1-5中任意一个所述的方法,其中步骤a进一步包括:为多个运算节点 设置多个SMT初始值,包括为每个运算节点设置一个SMT初始值;步骤b进一步包括:监测 所述多个运算节点在所述多个SMT初始值下运行的性能指标;步骤c进一步包括:选择所 述性能指标最优的运算节点的SMT初始值作为SMT修订值。
7. 如权利要求1-5中任意一个所述的方法,其中步骤a进一步包括:为一个运算节点 设置多个SMT初始值,包括在所述一个运算节点的多个时段设置多个SMT初始值;步骤b进 一步包括:监测所述一个运算节点在所述多个SMT初始值下运行的性能指标;步骤c进一 步包括:选择所述性能指标最优的时段所对应的SMT初始值作为SMT修订值。
8. 如权利要求1-5中任意一个所述的方法,其中步骤a进一步包括:为多个运算节点 设置多个SMT初始值,其中至少有一个运算节点在多个时段被设置多个SMT初始值;步骤b 进一步包括:监测所述多个运算节点在多个SMT初始值下运行的性能指标;步骤c进一步 包括:选择所述性能指标最优的时段所对应的运算节点的SMT初始值作为SMT修订值。
9. 如权利要求1-5中任意一个所述的方法,还包括: 响应于监测到所述性能指标变劣,重复执行步骤a-c。
10. 如权利要求1-5中任意一个所述的方法,其中步骤a-c是仅在运行时执行的。
11. 一种数据处理系统,包括: 设置装置,被配置为设置至少一个运算节点的同步多线程SMT初始值; 监测装置,被配置为监测所述至少一个运算节点在所述SMT初始值下运行的性能指 标;以及 确定装置,被配置为基于所述性能指标自动确定SMT修订值。
12. 如权利要求11所述的系统,所述系统进一步包括: 使能装置,被配置为使所述至少一个运算节点在所述SMT修订值下运行。
13. 如权利要求11或12所述的系统,其中所述至少一个运算节点在MapReduce架构下 运行,当所述至少一个运算节点处于MapReduce架构的第一阶段的情况下运行所述设置装 置、监测装置、确定装置,并且所述系统进一步被配置为响应于检测到所述至少一个运算节 点从所述第一阶段切换到第二阶段,重新运行所述设置装置、监测装置、确定装置,其中所 述第一阶段与第二阶段是下列各项组合中的任意一个组合: 在第一阶段仅执行Map运算并且在第二阶段并行执行Map运算与Reduce运算, 在第一阶段并行执行Map运算与Reduce运算并且在第二阶段仅执行Reduce运算, 在第一阶段仅执行Reduce运算并且在第二阶段仅执行Map运算。
14. 如权利要求11或12所述的系统,其中所述至少一个运算节点在MapReduce架构下 运行,当所述至少一个运算节点处于MapReduce架构的仅执行Map运算的阶段的情况下运 行所述设置装置、监测装置、确定装置,所述第一阶段为,并且所述监测装置进一步被配置 为: 基于在预定任务循环内监测到的所述至少一个运算节点在所述至少一个SMT初始值 下运行的性能指标自动确定所述SMT修订值。
15. 如权利要求11或12所述的系统,其中所述监测装置进一步被配置为: 基于在预定时间窗口内监测到的所述至少一个运算节点在所述至少一个SMT初始值 下运行的性能指标自动确定所述SMT修订值。
16. 如权利要求11-15中任意一个所述的系统,其中所述设置装置进一步被配置为为 多个运算节点设置多个SMT初始值,包括为每个运算节点设置一个SMT初始值;所述监测 装置进一步被配置为监测所述多个运算节点在所述多个SMT初始值下运行的性能指标;所 述确定装置进一步被配置为选择所述性能指标最优的运算节点的SMT初始值作为SMT修订 值。
17. 如权利要求11-15中任意一个所述的系统,其中所述设置装置进一步被配置为为 一个运算节点设置多个SMT初始值,包括在所述一个运算节点的多个时段设置多个SMT初 始值;所述监测装置进一步被配置为监测所述一个运算节点在所述多个SMT初始值下运行 的性能指标;所述确定装置进一步被配置为选择所述性能指标最优的时段所对应的SMT初 始值作为SMT修订值。
18. 如权利要求11-15中任意一个所述的系统,其中所述设置装置进一步被配置为为 多个运算节点设置多个SMT初始值,其中至少有一个运算节点在多个时段被设置多个SMT 初始值;所述监测装置进一步被配置为监测所述多个运算节点在多个SMT初始值下运行的 性能指标;所述确定装置进一步被配置为选择所述性能指标最优的时段所对应的运算节点 的SMT初始值作为SMT修订值。
19. 如权利要求11-15中任意一个所述的系统,还包括: 响应于监测到所述性能指标变劣,重复运行所述设置装置、监测装置、确定装置。
20.如权利要求11-15中任意一个所述的系统,其中所述设置装置、监测装置、确定装 置是仅在运行时执行的。
【文档编号】G06F9/50GK104216683SQ201310209952
【公开日】2014年12月17日 申请日期:2013年5月31日 优先权日:2013年5月31日
【发明者】陈冠诚, 郭崎, 李严, 李欣剑 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1