Smp环境中在数据库工作代理间动态分配资源和任务的方法和系统的制作方法

文档序号:10617858阅读:301来源:国知局
Smp环境中在数据库工作代理间动态分配资源和任务的方法和系统的制作方法
【专利摘要】在非对称多重处理(symmetric multiprocessing,简称SMP)系统中的工作代理中,动态重新分配任务和/或内存配额,可以大大缓解与数据倾斜相关的时延和低效。例如,当确定空闲工作代理已处理完其原来分配的任务集时,可重新将未完成任务由忙态工作代理至空闲工作代理。或者,可以将部分分配给空闲工作代理的内存配额重新分配给忙态工作代理用于处理剩余任务。一旦空闲工作代理处理完其原分配任务,可以通过释放内存配额至内存池,重新分配所述内存配额,然后将一些或全部所述内存配额重新分配给忙态工作代理。
【专利说明】
SMP环境中在数据库工作代理间动态分配资源和任务的方法 和系统
技术领域
[0001]本发明通常涉及处理系统,尤其涉及一种SMP环境中在数据库工作代理间动态分 配资源和任务的方法和系统。
【背景技术】
[0002] 对称多处理(symmetric multiprocessing,简称SMP)系统的特点是两个或多个使 用共享内存资源的工作代理(例如处理器和处理核等)共同进行任务处理。SMP系统通常用 于管理大型数据库及执行数据库查询。为执行查询,SMP系统可识别查询将处理的任务,并 将不同的任务集分配给不同工作代理进行并行/同步处理。工作代理完成各自任务集所需 的时间可能会由于数据倾斜(例如不均衡负荷分布)及其他因素(例如输入/输出(input/ output,简称I/O)和CPU共享时间等)而差别较大,这导致资源利用率低和处理时延高,使得 数据库性能和吞吐量大幅降低。

【发明内容】

[0003] 本发明实施例通过描述一种SMP环境中在数据库工作代理间动态分配资源和任务 的方法和系统,基本实现了技术优势。
[0004] 根据一实施例,提供了 一种用于在对称多处理系统(s y m m e t r i c multiprocessing,简称SMP)中进行查询的方法。在本示例中,所述方法包括:识别执行查询 期间的待处理任务,并将所述任务分配给处理器中的工作代理。所述识别出的任务至少包 括第一任务集和第二任务集,所述处理器中的工作代理至少包括第一工作代理和第二工作 代理。将所述第一任务集分配给所述第一工作代理,并将所述第二任务集分配给所述第二 工作代理。所述方法还包括:在所述第二工作代理处理完所述第二任务集前,确定所述第一 工作代理已处理完所述第一任务集;当满足条件时,将所述第二任务集中的至少一些未完 成任务重新分配给所述第一工作代理。也提供执行此方法的装置。
[0005] 根据另一实施例,提供了另一种用于在对称多处理系统(s y m m e t r i c multiprocessing,简称SMP)中进行查询的方法。在本示例中,所述方法包括:识别执行查询 期间的待处理任务,并将内存配额分配给处理器中的工作代理以处理所述任务。所述识别 出的任务至少包括第一任务集和第二任务集,所述处理器中的工作代理至少包括第一工作 代理和第二工作代理。将第一内存配额分配给所述第一工作代理,以处理所述第一任务集, 并将第二内存配额分配给所述第二工作代理,以处理所述第二任务集。所述方法还包括:在 所述第二工作代理处理完所述第二任务集前,确定所述第一工作代理已处理完所述第一任 务集;将至少部分所述第一内存配额重新分配给所述第二工作代理。也提供执行此方法的 装置。
[0006] 根据第一方面,本发明涉及SMP系统中多种方法的所附权利要求涉及的执行查询 的装置,所述装置包括:识别装置,用于识别执行查询期间的待处理的任务,其中,所述任务 至少包括第一任务集和第二任务集,处理器包括多个工作代理,至少包括第一工作代理和 第二工作代理;分配装置,用于将所述任务分配给所述多个工作代理进行处理,其中,将所 述第一任务集分配给所述第一工作代理,并将所述第二任务集分配给所述第二工作代理; 确定装置,用于在所述第二工作代理处理完所述第二任务集前,确定所述第一工作代理已 处理完所述第一工作代理;重新分配装置,用于当满足条件时,将所述第二任务集的至少一 些未完成任务重新分配给所述第一工作代理。
[0007] 在执行查询装置的一种可能的实现形式中,也包括计算装置,用于依据下列公式计算 待重新分配任务的数量:待重新分配任务数量枚璦?的剩余任务数量和 7 其中,代理(i)的剩余任务数量为当所述第一工作代理处理完所述第一任务集时,第i个工 作代理还未处理的任务的数量,η为所述处理器中工作代理的总数量。
[0008] 根据另一方面,本发明涉及SMP系统中多种方法的所附权利要求涉及的执行查询 的装置,所述装置包括:识别装置,用于识别执行查询期间的待处理的任务,其中,所述任务 至少包括第一任务集和第二任务集,处理器包括多个工作代理,至少包括第一工作代理和 第二工作代理;分配装置,用于将内存配额分配给所述多个工作代理以处理所述任务,其 中,第一内存配额分配给所述第一工作代理,以处理所述第一任务集,且第二内存配额分配 给所述第二工作代理,以处理所述第二任务集;确定装置,用于在所述第二工作代理处理完 所述第二任务集前,确定所述第一工作代理已处理完所述第一工作代理;重新分配装置,用 于将至少部分所述第一内存配额重新分配给所述第二工作代理。
[0009] 根据SMP系统中的执行查询装置任一方面的实现方式,执行查询系统还包括接口, 用于接收查询;任务分配模块,通信耦合至多个工作代理,所述任务分配模块用于在第二工 作代理处理完第二任务集前,确定所述第一工作代理已处理完第一任务集;将至少部分第 一内存配额重新分配给所述第二工作代理。
[0010] 大规模并行处理(massive parallel processing,简称ΜΡΡ)数据库旨在用于管理 和处理大量数据。对称多处理(symmetric multiprocessing,简称SMP)计算机系统包括多 个共享大量内存的CPU核,是运行MPP数据库的理想之选。在SMP系统中,处理查询时,数据库 服务器进程生成多个执行查询线程,称为工作代理,用于并行执行查询。每个代理在各自的 数据分区上运行。由于数据的不均匀分布,数据分区的大小可能不一致,这也可称为数据倾 斜情况,导致了工作代理的负载不均衡。与其他代理相比,一些工作代理可能更快完成其任 务。此外,即使数据分区的大小相似,由于I/O问题或CPU时间共享等系统因素,工作代理也 不能以相同的速度处理工作。工作代理的查询处理速度不一致导致CHJ和内存资源的浪费。 也可能导致MPP数据库性能降低。应用上述涉及的方法和装置的实施例,可大大节省CPU和 内存资源,从而避免MPP数据库性能降低。
[0011]通过应用任一上述涉及的方法和装置实施例,可获得更多优势。可在工作代理间 动态分配任务和内存。它们致力于I/O等系统问题引起的数据倾斜情况和处理速度不一致 情况。任一上述涉及的实施例的方法是轻量级的且可作为单线程实现,可用于多种类型的 数据库操作,如聚合、排序及合并/嵌套循环/哈希连接。
【附图说明】
[0012]为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:
[0013] 图1示出了 SMP架构图;
[0014] 图2示出了传统SMP系统的工作流程图;
[0015] 图3A至3D示出了实施例SMP系统的工作流程图;
[0016] 图4示出了一种SMP系统中处理查询的实施例方法的流程图;
[0017] 图5示出了另一种SMP系统中出处理查询的实施例方法的流程图;
[0018] 图6示出了一种操作SMP系统的实施例方法的流程图;
[0019]图7不出了实施例处理设备的框图;
[0020] 图8不出了一种实施例多核中央处理器(central processing unit,简称CPU)图。
[0021] 除非另有指示,否则不同图中的对应标号和符号通常指代对应部分。绘制各图是 为了清楚地说明实施例的相关方面,因此未必是按比例绘制的。
【具体实施方式】
[0022] 下文将详细论述公开的实施例的制作和使用。然而,应了解,本发明提供可在各种 具体上下文中体现的许多适用的发明性概念。所论述的具体实施例仅仅说明用以实施和使 用本发明的具体方式,而不限制本发明的范围。
[0023]通常,将数据库预先分配给数据分区,数据分区分配给工作代理来处理。不同数据 分区可能包括不同数量的为给定查询需处理的数据,这可能导致将所述查询的不相等数量 的任务分配给工作代理(称为数据倾斜)。在本发明中,"任务"与执行查询期间的需要处理 (例如扫描、查找等)的数据的统一数量相对应。例如,任务可以定义为执行查询时,需要扫 描的固定数量的数据库页面。在数据库查询处理期间,传统的SMP系统静态地将任务和内存 配额分配给工作代理,也就意味着每个任务集(和每个内存配额)保持分配给原工作代理, 直到所有工作代理处理完其分配的任务,如直到执行完整个查询。因此,传统SMP系统很容 易受数据倾斜导致的时延的影响。
[0024]本发明的各方面,通过在工作代理间,动态重新分配任务和/或内存配额,降低了 数据倾斜导致的时延。在一实施例中,当确定空闲工作代理已处理完其原来分配的任务集 时,将至少一些未完成任务从忙态工作代理重新分配至空闲工作代理。在另一实施例中,可 以将部分分配给空闲工作代理的内存配额重新分配给忙态工作代理用于处理剩余任务。一 旦空闲工作代理处理完其原分配任务,可以通过释放内存配额至内存池,重新分配所述内 存配额,然后将一些或全部所述内存配额重新分配给忙态工作代理。在一些实施例中,处理 任务和内存配额的动态重分配是由任务分配模块(或任务分配器)进行的。当满足条件时, 所述任务分配器可决定重新分配未完成任务。当源于重新分配的效率受益超过重新分配相 关的效率损失时,可能满足所述条件。例如,可使用处理资源进行重新分配,且(在一些情况 下)所涉及的忙态工作代理可能被中断,例如,可能需要暂时暂停来适应重新分配。在一实 施例中,任务分配器用于如果与忙态工作代理相关的未完成任务的数量超过一个阈值,将 未完成任务从忙态工作代理分配给空闲工作代理。在另一实施例中,当待重新分配的任务 的百分比超过一个阈值时,任务分配器可重新分配未完成任务。如果没有将未完成任务分 配给空闲工作代理,则分配模块可将一些或全部空闲工作代理的内存配额重新分配给较忙 态工作代理。下面将更加详细讨论这些方面以及其他方面。
[0025] 图1示出了一种处理查询的SMP架构100。如图所示,所述SMP架构100包括多个工作 代理101、102及103、任务分配器105及内存池180,他们通过系统总线106交互。所述工作代 理101、102及103可以是任何用于通过访问(例如扫描、搜索等)数据库190的表项处理任务 的组件或组件的集合(例如CPU核等)。所述任务分配器105可以是任何用于将任务分配和/ 或重新分配给所述工作代理101、1〇2及103的组件或组件的集合。在一些实施例中,所述任 务分配器105是所述SMP架构100的专用线程。所述内存池180包括所述工作代理101、102及 103处理任务所使用的内存资源。在所述工作代理101、102及103中共享访问所述内存池180 的内存资源可通过分配内存配额来实现。在本示例中,将内存配额181分配给所述工作代理 101,将内存配额182分配给所述工作代理102,将内存配额183分配给所述工作代理103。 [0026]传统SMP架构静态地将处理任务和内存配额分配给工作代理。图2示出了传统的 SMP系统200,其中,将处理任务集210、220及230静态分配给多个工作代理201、202及203。在 本示例中,所述传统SMP系统200用于进行聚合操作,其中,所述工作代理201、202及203扫描 处理任务的每个行项目,聚合结果并把聚合后的结果发送到收集功能,所收集功能组合聚 合结果并发送至客户端。此外,所述传统SMP系统200将内存配额静态地分配给所述工作代 理201、202及203。
[0027] 将任务/内存配额静态地分配给所述工作代理201、202及203(分别)导致传统SMP 系统200极易受到数据倾斜引起的时延的影响。例如,所述工作代理201处理完任务集210花 费的时间可能比所述工作代理202和203处理完任务集220和230(分别)的时间更长。在这种 情况下,在所述工作代理201处理完任务集210时,所述工作代理202和203(和其静态分配的 内存配额)可能保持空闲(例如未使用),从而导致未充分利用资源及降低传统SMP系统200 中的效率。
[0028]在本发明的各方面中,动态地重新分配未完成任务和/或未使用内存配额,来降低 数据倾斜导致的时延。图3A到3D示出了用于将任务从忙态工作代理分配到空闲工作代理的 SMP系统300的实施例。如图所示,所述SMP系统300包括多个工作代理301至303以及任务分 配模块305。所述工作代理301至303是进行并行处理的模块,而所述分配模块305是用于在 工作代理301至303中,重新分配未完成任务和/或空闲内存配额,以避免数据倾斜的模块。 在一些实施例中,所述分配模块是专用线程。如图3A所示,一输入的查询被划分为任务集 310、320及330,分配给所述工作代理301、302及303 (分别)进行处理。任务集310、320及330 可能在大小和复杂度上不同。在本示例中,所述任务集310比任务集330和320包含更多的任 务。在其他示例中,每个任务集包含相同数量的处理任务,但可能以不同的速率被其分配的 工作代理处理。在初始任务分配后,所述工作代理301、302及303开始并行处理其各自的任 务集310、320及330。工作代理301、302及303处理完其各自的任务集310、320及330所需时间 长度可能因很多因素而不同,包括每个集合的任务数量,及影响所述工作代理各自处理速 度的因素,如I/O问题和CPI时间共享等。
[0029] 如图3B所示,所述工作代理301处理完任务集310前,工作代理302处理完任务集 320。值得注意的是,在工作代理302空闲时,工作代理301已处理完完成任务集314,但还未 处理完未完成任务集315。在检测到此情况后,当满足某个条件时,如未完成任务的数量超 过一个阈值时等,所述任务分配模块305将未完成任务集315中的一些任务重新分配给所述 工作代理302。在本示例中(如图3C所示),所述任务分配模块305将未完成任务子集318分配 给所述工作代理302,而未完成任务子集316仍然分配给所述工作代理301。重新分配之后 (如图3D所示),所述工作代理301处理所述未完成任务子集316,而所述工作代理302处理所 述未完成任务子集318。
[0030]在上述示例中,所述分配模块305将未完成任务子集318重新分配给工作代理302。 然而,在其他示例中,所述分配模块305也可将至少一些未完成任务分配给所述工作代理 303,因为所述工作代理303已几乎完成原分配的任务集330。在又一示例中,在所述工作代 理302完成其任务后,所述分配模块305可将所述工作代理302的全部或部分内存配额分配 给所述工作代理301。
[0031] 本发明各方面提供了一种在SMP系统中将未完成处理任务重新分配给空闲工作代 理的方法。图4示出了一种在SMP系统中处理查询的方法400,可以由一个处理器进行。如图 所示,所述方法400从步骤410开始,在该步骤中,所述处理器接收查询。然后,所述方法400 进行到步骤420,在该步骤中,所述处理器识别出在执行查询期间需要处理的任务集。这可 包括:识别为执行所述查询而需处理的数据分区,并为所述数据分区分配工作代理(或识别 为处理识别的分区而预先分配的工作代理)。接下来,所述方法400进行到步骤430,在该步 骤中,所述处理器将第一任务集分配给第一工作代理,并将第二任务集分配给第二工作代 理。随后,所述方法400进行到步骤440,在该步骤中,在所述第二工作代理处理完所述第二 任务集前,所述处理器确定所述第一工作代理已处理完所述第一任务集。接下来,所述方法 400进入到步骤450,在该步骤中,所述处理器确定是否满足条件。在一些实施例中,当所述 查询(或分配给所述第二工作代理的第二任务集)中未完成任务的数量超过一个阈值时,满 足所述条件。在另一示例中,当需重新分配的任务的百分比超过一个阈值时,满足所述条 件。如果满足所述条件,则所述方法400进行到步骤460,在该步骤中,所述处理器将第二任 务集中的至少一些任务重新分配给所述第一工作代理。如果没有满足所述条件,所述方法 400进行到步骤470,在该步骤中,所述处理器使得所述第二工作代理不需要重新平衡任务 分配,即可处理完所述第二任务集。
[0032] 本发明各方面也提供了一种在SMP系统中将空闲或未使用内存配额重新分配给忙 态工作代理的方法。图5示出了 一种在SMP系统中处理查询的方法500,可以由一个处理器执 行。如图所示,所述方法500从步骤510开始,在该步骤中,所述处理器接收查询。接下来,所 述方法500进行到步骤520,在该步骤中,所述处理器识别出在执行查询期间需要处理的任 务集。然后,所述方法500进行到步骤530,在该步骤中,所述处理器将第一内存配额分配给 第一工作代理来处理第一任务集。接下来,所述方法500进行到步骤535,在该步骤中,为处 理第一任务集,所述处理器将第一内存配额分配给第一工作代理。然后,所述方法500进行 到步骤540,在该步骤中,在所述第二工作代理处理完第二任务集前,所述处理器确定所述 第一工作代理已处理完所述第一任务集。接下来,所述方法500进行到步骤550,在该步骤 中,所述处理器确定是否已满足条件。当未完成任务的数量或需重新分配的任务的百分比 超过一个阈值时,可以满足所述条件。或者,当未完成任务的数量或需重新分配的任务的百 分比未能超过一个阈值时,可以满足所述条件。如果满足所述条件,则所述方法500进行到 步骤560,在该步骤中,所述处理器将至少部分第一内存配额重新分配给所述第二工作代 理。在一些实施例中,通过释放所述第一内存配额到所述SMP系统的内存池来实现,然后将 至少部分第一内存配额重新分配给所述第二工作代理。然后,除了原分配的第二内存配额, 所述第二工作代理还使用所述重新分配的内存来处理第二任务集的剩余任务。另一方面, 如果没有满足所述条件,所述方法500进行到步骤570,在该步骤中,所述处理器使得所述第 二工作代理不需要重新平衡,即可处理完所述第二任务集。
[0033]本发明各方面中,通过将任务分配模块(或任务分配器)引入到数据库服务器实例 进程中,在工作代理中动态分配任务。在SMP环境中,当数据节点示例接收查询时,它启动多 个并行处理所述查询工作代理。优化模块(或优化器)可以估计每个代理处理的数据行的数 量。工作代理可将其任务登记到任务分配器,并周期性地将其进展报告给所述任务分配器。 在一些实例中,工作代理间不均匀的任务分配可能导致一些工作代理比其他工作代理更早 地完成其任务集。可对可配置阈值(任务分配阈值)进行定义以确定任务分配。如果忙态代 理中的剩余工作大于任务分配阈值,则任务分配器将任务从忙态代理分配给空闲代理。忙 态代理可将剩余数据分为小数据块,这些小数据块可以分别处理。
[0034]在执行查询期间,代理从系统请求内存,进行查询操作,如哈希表建立操作。代理 可得到的内存的数量受可配置配额限制。每个代理将其内存配额注册到任务分配器。执行 查询期间,一些工作代理较早完成其工作,在这种情况下,任务分配器可释放这些空闲代理 的配额并增加忙态代理的内存配额,来提高系统性能。
[0035] 一个SMP系统可能有多个CPU核,为了并行处理查询的各部分(例如任务集),在接 收到查询后,可运行若干个工作代理。每个代理处理其各自的数据分区。从工作代理收集查 询结果并发送给协调器,协调器可将结果返回给客户端。由于数据倾斜现象,与其他代理相 比,一些代理需要处理更大的数据分区,并花费更多时间来执行查询。在传统系统中,当一 个工作代理完成其任务集时,所述工作代理使用的CPU核和内存配额会变成空闲,从而导致 系统资源利用率低。本发明的各方面,通过在工作代理间动态重新分配任务和/或内存配 额,解决了这个问题。
[0036]在重新平衡期间,可通过任务分配器将未完成任务重新分配给空闲工作代理。在一 实施例中,基于仍需所有忙态工作代理处理的剩余数据页面,任务分配器可计算待重新分配任 η 务的总数。可根据下述公式确定:待重新分配任务数量代理⑴上的剩余任务数量以 其中,η是工作代理的数量。
[0037]因此,任务分配器可选择一个有最多剩余待处理数据页面的忙态工作代理为候选工 作代理。任务分配器可通过下述公式来计算待重新分配任务的百分比为待重新分配任务与该 忙态工作代理的分区中数据页面的总数的比值:待重新分配任务百分比=分数 如果待重新分配任务的百分比大于任务分配阈值,则任务分配器将任务分配给空闲代理。 [0038] 图6示出了 一种在SMP系统中处理查询的方法600。如图所示,所述方法600从步骤 610开始,在该步骤中,工作代理将其估计的数据分区大小和内存配额注册到任务分配器。 任务代理可将其进展周期性地报告给任务分配器。之后,所述方法600进行到步骤620,在该 步骤中,任务分配器确定一个工作代理是否完成其工作。接下来,所述方法600进行到步骤 630,在该步骤中,任务分配器确定剩余工作/任务是否超过一个阈值。所述阈值可能与重新 分配的损耗(例如进行重新分配所需的处理资源)相对应。如果剩余工作/任务没有超过所 述阈值,则所述方法600进行到步骤640,在该步骤中,任务分配器将空闲工作代理的内存配 额释放到内存池,可将释放的内存配额重新分配给其他忙态工作代理。如果剩余工作/任务 超过所述阈值,则所述方法600进行到步骤650,在该步骤中,任务分配器将更多工作/任务 分配给空闲工作代理。这包括将任务从忙态工作代理重新分配给空闲工作代理。
[0039]本发明各方面为数据库实例提供了任务分配模块。如果工作代理上的工作进展不 平衡,任务分配模块可在工作代理间动态重新平衡执行查询任务和内存分配。数据倾斜或 如I/O等其他因素可导致工作进展的不均衡。实施例中的重新分配技术可提高CPI和内存资 源的利用率并增加 SMP系统的吞吐量。任务分配模块也可用于性能监测目的,使得可观察到 执行查询进展。而且实施例的任务分配模块是轻量级的并可作为单线程实现。实施例的重 新分配技术可应用于多个数据库操作,如聚合、排序、哈希连接、合并连接及嵌套循环连接 等。在聚合的情况下,优化模块可添加最终聚合运算器用于并行和重新平衡。在哈希连接的 情况下,可共享建立侧,并可并行处理及重新平衡探测阶段。在嵌套循环连接的情况下,对 于内外侧,连接键可以是分区键,且外侧可并行处理并重新平衡。在排序和合并连接操作期 间,可使用外部排序。
[0040]图7示出可等效于上文所论述的一或多个设备的处理设备700的实施例的框图。所 述处理设备700可以包括多核处理器704、存储器706以及多个接口 710至714,其设置如图7 所示(或者可以与图7不同)。所述多核处理器704可以是任何能够执行计算和/或其它处理 相关任务的器件,所述存储器706可以是任何能够为所述多核处理器704存储程序和/或指 令的器件。所述接口 710至714可以是任何让所述处理设备700与外部设备通信的器件或器 件的集合。
[0041]图8显示多核CPU系统的框图,该处理系统可以用来实现本文公开的方法。实施例 的多核CPU系统可利用所有所示的组件或所述组件的仅一子集,且系统之间的集成程度可 能不同。此外,多核CPU系统可以包括组件的多个实例,如多个处理核、存储器、发射器、接收 器等。所述多核CPU可以包括配备一个或多个输入/输出设备,如扬声器、麦克风、鼠标、触摸 屏、按键、键盘、打印机、显示器等的多个处理核。所述处理单元可以包括中央处理器 (central processing unit,简称CPU)、存储器、大容量存储器设备、视频适配器以及连接 至总线的I/O接口。
[0042] 总线可以是任意类型的若干总线架构中的一个或多个,包括存储总线或存储控制 器、外设总线、视频总线等等。CPU可包括任意类型的电子数据处理器。存储器可包括任何类 型的系统存储器,例如静态随机存取存储器(static random access memory,简称SRAM)、 动态随机存取存储器(dynamic random access memory,简称DRAM)、同步DRAM (synchronous dynamic random access memory,简称SDRAM)、只读存储器(read-only memory,简称ROM)或其组合等等。在实施例中,所述存储器可包括在开机时使用的ROM以及 在执行程序时使用的存储程序和数据的DRAM。
[0043] 大容量存储器设备可包括任何类型的存储器设备,其用于存储数据、程序和其它 信息,并使这些数据、程序和其它信息通过总线访问。大容量存储器设备可包括如下项中的 一项或多项:固态磁盘、硬盘驱动器、磁盘驱动器、光盘驱动器等等。
[0044]显示卡以及1/0接口提供接口以将外部输入以及输出装置耦合至处理单元上。如 所图示,输入以及输出装置的实例包含耦合至显示卡上的显示器以及耦合至1/0接口上的 鼠标/键盘/打印机。其它装置可以耦合至处理单元上,并且可以利用额外的或较少的接口 卡。例如,可使用如通用串行总线(Universal Serial Bus,简称USB)(未示出)等串行接口 将接口提供给打印机。
[0045] 处理单元还包含一个或多个网络接口,所述网络接口可以包括例如以太网电缆或 其类似者等有线链路,和/或用以接入节点或不同网络的无线链路。网络接口允许处理单元 经由网络与远程单元通信。举例来说,网络接口可以经由一个或多个发射器/发射天线以及 一个或多个接收器/接收天线提供无线通信。在一实施例中,所述处理单元与局域网或者广 域网耦合以进行数据处理以及与远端设备比如其他处理单元、因特网、远端存储设备等通 {目。
[0046] 尽管进行了详细的描述,但应理解,可在不脱离由所附权利要求书界定的本发明 的精神和范围的情况下,对本文做出各种改变、替代和更改。此外,本发明的范围不希望限 于本文中所描述的特定实施例,所属领域的一般技术人员将从本发明中容易了解到,过程、 机器、制造工艺、物质成分、构件、方法或步骤(包括目前存在的或以后将开发的)可执行与 本文所述对应实施例大致相同的功能或实现与本文所述对应实施例大致相同的效果。相应 地,所附权利要求范围包括这些流程、机器、制造、物质组分、构件、方法,及步骤。
【主权项】
1. 一种用于在对称多处理(symmetric multiprocessing,简称SMP)系统中进行查询的 方法,其特征在于,所述方法包括: 处理器识别进行查询期间的待处理的任务,其中,所述任务至少包括第一任务集和第 二任务集,所述处理器包括多个工作代理,至少包括第一工作代理和第二工作代理; 将所述任务分配给所述多个工作代理W进行处理,其中将所述第一任务集分配给所述 第一工作代理,将所述第二任务集分配给所述第二工作代理; 在所述第二工作代理处理完第二任务集前,确定所述第一工作代理已处理完第一任务 集; 当满足条件时,重新将所述第二任务集中的至少一些未完成任务分配给所述第一工作 代理。2. 根据权利要求1所述的方法,其特征在于,所述第一代理处理所述重新分配的任务。3. 根据权利要求1所述的方法,其特征在于,当所述第二任务集中的未完成任务的数量 超过一个阔值时,满足所述条件,且所述未完成任务的数量与所述第二任务集中的所述第 二工作代理还没有处理的任务相对应。4. 根据权利要求1所述的方法,其特征在于,还包括: 计算待重新分配任务的百分比,其中,当所述待重新分配任务的百分比超过一个阔值 时,满足所述条件。5. 根据权利要求4所述的方法,其特征在于,计算待重新分配任务的百分比包括: 识别待重新分配任务的数量; 计算所述待重新分配任务的数量与所述查询相关的处理任务的总数的比值; 将所述比值乘100。6. 根据权利要求5所述的方法,其特征在于,识别待重新分配任务的数量包括: 当所述第一工作代理已处理完所述第一任务集,确定所述多个工作代理还没有处理的 任务的数量。7. 根据权利要求5所述的方法,其特征在于,识别待重新分配任务的数量包括: 依照W下公式计算待重新分配的任务的数量:待重巧分配巧务=殺;' 其中,代理(i)的剩余任务为当所述第一工作代理处理完所述第一任务集时,第i个工作代 理还没有处理的任务的数量,η为所述处理器中工作代理的总数量。8. 根据权利要求1所述的方法,其特征在于,将第一内存配额分配给所述第一工作代 理,W处理所述第一任务集,将第二内存配额分配给所述第二工作代理,W处理所述第二任 务集。9. 根据权利要求8所述的方法,其特征在于,还包括: 当所满足所述条件时,释放至少一些所述第一内存配额到内存池。10. 根据权利要求9所述的方法,其特征在于,还包括: 将所述第一内存配额的至少部分重新分配给所述第二工作代理。11. 根据权利要求10所述的方法,其特征在于,所述第二工作代理使用所述第一内存配 额的重新分配部分处理所述第二任务集的剩余任务。12. 根据权利要求10所述的方法,其特征在于,所述查询包括聚合操作、排序操作、哈希 连接操作、合并连接操作及嵌套循环操作。13. -种非对称多重处理(symmetric 1111111:191'〇。日33;[叫,简称51?)所使用的处理器,其 特征在于,所述处理器包括: 一个接口,用于接收查询,其中所述处理器用于识别执行查询期间的待处理的任务,所 述任务至少包括第一任务集和第二任务集; 多个工作代理,至少包括第一工作代理和第二工作代理,其中,所述第一工作代理分配 给所述第一任务集,所述第二工作代理分配给所述第二任务集; 任务分配模块,通信禪合至所述多个工作代理,其中所述任务分配模块用于在所述第 二工作代理处理完所述第二任务集前,确定所述第一工作代理处理完所述第一任务集;当 满足条件时,将至少一些所述第二任务集重新分配给所述第一工作代理。14. 根据权利要求13所述的处理器,其特征在于,所述任务分配模块还用于在所述第一 工作代理处理完所述第一任务集后,计算待重新分配任务的百分比,当所述待重新分配任 务的百分比超过一个阔值时,满足所述条件。15. 根据权利要求13所述的处理器,其特征在于,所述任务分配模块为多个工作代理中 的一个。16. 一种用于在对称多处理(symmetric multiprocessing,简称SMP)系统中进行查询 的方法,其特征在于,所述方法包括: 处理器识别进行查询期间的待处理的任务,其中,所述任务至少包括第一任务集和第 二任务集,所述处理器包括多个工作代理,至少包括第一工作代理和第二工作代理; 将内存配额分配给所述多个工作代理,W处理所述任务,其中,将第一内存配额分配给 所述第一工作代理,W处理所述第一任务集,将第二内存配额分配给所述第二工作代理,W 处理所述第二任务集; 在所述第二工作代理处理完第二任务集前,确定所述第一工作代理已处理完第一任务 集; 将所述第一内存配额的至少部分重新分配给所述第二工作代理。17. 根据权利要求16所述的方法,其特征在于,所述第二工作代理使用所述第一内存配 额的重新分配部分来处理所述第二任务集的剩余任务。18. 根据权利要求16所述的方法,其特征在于,将所述第一内存配额的至少部分重新分 配给所述第二工作代理包括: 在所述第一工作代理处理完所述第一任务集后,释放所述第一内存配额至内存池; 从第二工作代理接收内存请求. 为响应所述内存请求,将所述第一内存配额的至少部分重新分配给所述第二工作代 理。19. 一种非对称多重处理(symmetric 1111111:191'〇。日33;[叫,简称51?)所使用的处理器,其 特征在于,所述处理器包括: 一个接口,用于接收查询,其中所述处理器用于识别执行查询期间的待处理的任务,所 述任务至少包括第一任务集和第二任务集; 多个工作代理,至少包括第一工作代理和第二工作代理,其中,分配所述第一工作代理 用于通过第一内存配额处理所述第一任务集,分配所述第二工作代理用于通过第二内存配 额处理所述第二任务集; 任务分配模块,通信禪合至所述多个工作代理,所述任务分配模块用于:在所述第二工 作代理处理完所述第二任务集前,确定所述第一工作代理处理完所述第一任务集;将所述 第一内存配额的至少部分重新分配给所述第二工作代理。20.根据权利要求19所述的处理器,其特征在于,所述任务分配模块为多个工作代理中 的一个。
【文档编号】G06F9/50GK105980988SQ201580007345
【公开日】2016年9月28日
【申请日】2015年2月6日
【发明人】李怀智, 周庆庆, 杰森·扬·孙
【申请人】华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1