Smp環(huán)境中在數(shù)據(jù)庫工作代理間動態(tài)分配資源和任務(wù)的方法和系統(tǒng)的制作方法
【專利摘要】在非對稱多重處理(symmetric multiprocessing,簡稱SMP)系統(tǒng)中的工作代理中,動態(tài)重新分配任務(wù)和/或內(nèi)存配額,可以大大緩解與數(shù)據(jù)傾斜相關(guān)的時延和低效。例如,當(dāng)確定空閑工作代理已處理完其原來分配的任務(wù)集時,可重新將未完成任務(wù)由忙態(tài)工作代理至空閑工作代理?;蛘?,可以將部分分配給空閑工作代理的內(nèi)存配額重新分配給忙態(tài)工作代理用于處理剩余任務(wù)。一旦空閑工作代理處理完其原分配任務(wù),可以通過釋放內(nèi)存配額至內(nèi)存池,重新分配所述內(nèi)存配額,然后將一些或全部所述內(nèi)存配額重新分配給忙態(tài)工作代理。
【專利說明】
SMP環(huán)境中在數(shù)據(jù)庫工作代理間動態(tài)分配資源和任務(wù)的方法 和系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明通常涉及處理系統(tǒng),尤其涉及一種SMP環(huán)境中在數(shù)據(jù)庫工作代理間動態(tài)分 配資源和任務(wù)的方法和系統(tǒng)。
【背景技術(shù)】
[0002] 對稱多處理(symmetric multiprocessing,簡稱SMP)系統(tǒng)的特點是兩個或多個使 用共享內(nèi)存資源的工作代理(例如處理器和處理核等)共同進行任務(wù)處理。SMP系統(tǒng)通常用 于管理大型數(shù)據(jù)庫及執(zhí)行數(shù)據(jù)庫查詢。為執(zhí)行查詢,SMP系統(tǒng)可識別查詢將處理的任務(wù),并 將不同的任務(wù)集分配給不同工作代理進行并行/同步處理。工作代理完成各自任務(wù)集所需 的時間可能會由于數(shù)據(jù)傾斜(例如不均衡負荷分布)及其他因素(例如輸入/輸出(input/ output,簡稱I/O)和CPU共享時間等)而差別較大,這導(dǎo)致資源利用率低和處理時延高,使得 數(shù)據(jù)庫性能和吞吐量大幅降低。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明實施例通過描述一種SMP環(huán)境中在數(shù)據(jù)庫工作代理間動態(tài)分配資源和任務(wù) 的方法和系統(tǒng),基本實現(xiàn)了技術(shù)優(yōu)勢。
[0004] 根據(jù)一實施例,提供了 一種用于在對稱多處理系統(tǒng)(s y m m e t r i c multiprocessing,簡稱SMP)中進行查詢的方法。在本示例中,所述方法包括:識別執(zhí)行查詢 期間的待處理任務(wù),并將所述任務(wù)分配給處理器中的工作代理。所述識別出的任務(wù)至少包 括第一任務(wù)集和第二任務(wù)集,所述處理器中的工作代理至少包括第一工作代理和第二工作 代理。將所述第一任務(wù)集分配給所述第一工作代理,并將所述第二任務(wù)集分配給所述第二 工作代理。所述方法還包括:在所述第二工作代理處理完所述第二任務(wù)集前,確定所述第一 工作代理已處理完所述第一任務(wù)集;當(dāng)滿足條件時,將所述第二任務(wù)集中的至少一些未完 成任務(wù)重新分配給所述第一工作代理。也提供執(zhí)行此方法的裝置。
[0005] 根據(jù)另一實施例,提供了另一種用于在對稱多處理系統(tǒng)(s y m m e t r i c multiprocessing,簡稱SMP)中進行查詢的方法。在本示例中,所述方法包括:識別執(zhí)行查詢 期間的待處理任務(wù),并將內(nèi)存配額分配給處理器中的工作代理以處理所述任務(wù)。所述識別 出的任務(wù)至少包括第一任務(wù)集和第二任務(wù)集,所述處理器中的工作代理至少包括第一工作 代理和第二工作代理。將第一內(nèi)存配額分配給所述第一工作代理,以處理所述第一任務(wù)集, 并將第二內(nèi)存配額分配給所述第二工作代理,以處理所述第二任務(wù)集。所述方法還包括:在 所述第二工作代理處理完所述第二任務(wù)集前,確定所述第一工作代理已處理完所述第一任 務(wù)集;將至少部分所述第一內(nèi)存配額重新分配給所述第二工作代理。也提供執(zhí)行此方法的 裝置。
[0006] 根據(jù)第一方面,本發(fā)明涉及SMP系統(tǒng)中多種方法的所附權(quán)利要求涉及的執(zhí)行查詢 的裝置,所述裝置包括:識別裝置,用于識別執(zhí)行查詢期間的待處理的任務(wù),其中,所述任務(wù) 至少包括第一任務(wù)集和第二任務(wù)集,處理器包括多個工作代理,至少包括第一工作代理和 第二工作代理;分配裝置,用于將所述任務(wù)分配給所述多個工作代理進行處理,其中,將所 述第一任務(wù)集分配給所述第一工作代理,并將所述第二任務(wù)集分配給所述第二工作代理; 確定裝置,用于在所述第二工作代理處理完所述第二任務(wù)集前,確定所述第一工作代理已 處理完所述第一工作代理;重新分配裝置,用于當(dāng)滿足條件時,將所述第二任務(wù)集的至少一 些未完成任務(wù)重新分配給所述第一工作代理。
[0007] 在執(zhí)行查詢裝置的一種可能的實現(xiàn)形式中,也包括計算裝置,用于依據(jù)下列公式計算 待重新分配任務(wù)的數(shù)量:待重新分配任務(wù)數(shù)量枚璦?的剩余任務(wù)數(shù)量和 7 其中,代理(i)的剩余任務(wù)數(shù)量為當(dāng)所述第一工作代理處理完所述第一任務(wù)集時,第i個工 作代理還未處理的任務(wù)的數(shù)量,η為所述處理器中工作代理的總數(shù)量。
[0008] 根據(jù)另一方面,本發(fā)明涉及SMP系統(tǒng)中多種方法的所附權(quán)利要求涉及的執(zhí)行查詢 的裝置,所述裝置包括:識別裝置,用于識別執(zhí)行查詢期間的待處理的任務(wù),其中,所述任務(wù) 至少包括第一任務(wù)集和第二任務(wù)集,處理器包括多個工作代理,至少包括第一工作代理和 第二工作代理;分配裝置,用于將內(nèi)存配額分配給所述多個工作代理以處理所述任務(wù),其 中,第一內(nèi)存配額分配給所述第一工作代理,以處理所述第一任務(wù)集,且第二內(nèi)存配額分配 給所述第二工作代理,以處理所述第二任務(wù)集;確定裝置,用于在所述第二工作代理處理完 所述第二任務(wù)集前,確定所述第一工作代理已處理完所述第一工作代理;重新分配裝置,用 于將至少部分所述第一內(nèi)存配額重新分配給所述第二工作代理。
[0009] 根據(jù)SMP系統(tǒng)中的執(zhí)行查詢裝置任一方面的實現(xiàn)方式,執(zhí)行查詢系統(tǒng)還包括接口, 用于接收查詢;任務(wù)分配模塊,通信耦合至多個工作代理,所述任務(wù)分配模塊用于在第二工 作代理處理完第二任務(wù)集前,確定所述第一工作代理已處理完第一任務(wù)集;將至少部分第 一內(nèi)存配額重新分配給所述第二工作代理。
[0010] 大規(guī)模并行處理(massive parallel processing,簡稱ΜΡΡ)數(shù)據(jù)庫旨在用于管理 和處理大量數(shù)據(jù)。對稱多處理(symmetric multiprocessing,簡稱SMP)計算機系統(tǒng)包括多 個共享大量內(nèi)存的CPU核,是運行MPP數(shù)據(jù)庫的理想之選。在SMP系統(tǒng)中,處理查詢時,數(shù)據(jù)庫 服務(wù)器進程生成多個執(zhí)行查詢線程,稱為工作代理,用于并行執(zhí)行查詢。每個代理在各自的 數(shù)據(jù)分區(qū)上運行。由于數(shù)據(jù)的不均勻分布,數(shù)據(jù)分區(qū)的大小可能不一致,這也可稱為數(shù)據(jù)傾 斜情況,導(dǎo)致了工作代理的負載不均衡。與其他代理相比,一些工作代理可能更快完成其任 務(wù)。此外,即使數(shù)據(jù)分區(qū)的大小相似,由于I/O問題或CPU時間共享等系統(tǒng)因素,工作代理也 不能以相同的速度處理工作。工作代理的查詢處理速度不一致導(dǎo)致CHJ和內(nèi)存資源的浪費。 也可能導(dǎo)致MPP數(shù)據(jù)庫性能降低。應(yīng)用上述涉及的方法和裝置的實施例,可大大節(jié)省CPU和 內(nèi)存資源,從而避免MPP數(shù)據(jù)庫性能降低。
[0011]通過應(yīng)用任一上述涉及的方法和裝置實施例,可獲得更多優(yōu)勢??稍诠ぷ鞔黹g 動態(tài)分配任務(wù)和內(nèi)存。它們致力于I/O等系統(tǒng)問題引起的數(shù)據(jù)傾斜情況和處理速度不一致 情況。任一上述涉及的實施例的方法是輕量級的且可作為單線程實現(xiàn),可用于多種類型的 數(shù)據(jù)庫操作,如聚合、排序及合并/嵌套循環(huán)/哈希連接。
【附圖說明】
[0012]為了更完整地理解本發(fā)明及其優(yōu)點,現(xiàn)在參考下文結(jié)合附圖進行的描述,其中:
[0013] 圖1示出了 SMP架構(gòu)圖;
[0014] 圖2示出了傳統(tǒng)SMP系統(tǒng)的工作流程圖;
[0015] 圖3A至3D示出了實施例SMP系統(tǒng)的工作流程圖;
[0016] 圖4示出了一種SMP系統(tǒng)中處理查詢的實施例方法的流程圖;
[0017] 圖5示出了另一種SMP系統(tǒng)中出處理查詢的實施例方法的流程圖;
[0018] 圖6示出了一種操作SMP系統(tǒng)的實施例方法的流程圖;
[0019]圖7不出了實施例處理設(shè)備的框圖;
[0020] 圖8不出了一種實施例多核中央處理器(central processing unit,簡稱CPU)圖。
[0021] 除非另有指示,否則不同圖中的對應(yīng)標(biāo)號和符號通常指代對應(yīng)部分。繪制各圖是 為了清楚地說明實施例的相關(guān)方面,因此未必是按比例繪制的。
【具體實施方式】
[0022] 下文將詳細論述公開的實施例的制作和使用。然而,應(yīng)了解,本發(fā)明提供可在各種 具體上下文中體現(xiàn)的許多適用的發(fā)明性概念。所論述的具體實施例僅僅說明用以實施和使 用本發(fā)明的具體方式,而不限制本發(fā)明的范圍。
[0023]通常,將數(shù)據(jù)庫預(yù)先分配給數(shù)據(jù)分區(qū),數(shù)據(jù)分區(qū)分配給工作代理來處理。不同數(shù)據(jù) 分區(qū)可能包括不同數(shù)量的為給定查詢需處理的數(shù)據(jù),這可能導(dǎo)致將所述查詢的不相等數(shù)量 的任務(wù)分配給工作代理(稱為數(shù)據(jù)傾斜)。在本發(fā)明中,"任務(wù)"與執(zhí)行查詢期間的需要處理 (例如掃描、查找等)的數(shù)據(jù)的統(tǒng)一數(shù)量相對應(yīng)。例如,任務(wù)可以定義為執(zhí)行查詢時,需要掃 描的固定數(shù)量的數(shù)據(jù)庫頁面。在數(shù)據(jù)庫查詢處理期間,傳統(tǒng)的SMP系統(tǒng)靜態(tài)地將任務(wù)和內(nèi)存 配額分配給工作代理,也就意味著每個任務(wù)集(和每個內(nèi)存配額)保持分配給原工作代理, 直到所有工作代理處理完其分配的任務(wù),如直到執(zhí)行完整個查詢。因此,傳統(tǒng)SMP系統(tǒng)很容 易受數(shù)據(jù)傾斜導(dǎo)致的時延的影響。
[0024]本發(fā)明的各方面,通過在工作代理間,動態(tài)重新分配任務(wù)和/或內(nèi)存配額,降低了 數(shù)據(jù)傾斜導(dǎo)致的時延。在一實施例中,當(dāng)確定空閑工作代理已處理完其原來分配的任務(wù)集 時,將至少一些未完成任務(wù)從忙態(tài)工作代理重新分配至空閑工作代理。在另一實施例中,可 以將部分分配給空閑工作代理的內(nèi)存配額重新分配給忙態(tài)工作代理用于處理剩余任務(wù)。一 旦空閑工作代理處理完其原分配任務(wù),可以通過釋放內(nèi)存配額至內(nèi)存池,重新分配所述內(nèi) 存配額,然后將一些或全部所述內(nèi)存配額重新分配給忙態(tài)工作代理。在一些實施例中,處理 任務(wù)和內(nèi)存配額的動態(tài)重分配是由任務(wù)分配模塊(或任務(wù)分配器)進行的。當(dāng)滿足條件時, 所述任務(wù)分配器可決定重新分配未完成任務(wù)。當(dāng)源于重新分配的效率受益超過重新分配相 關(guān)的效率損失時,可能滿足所述條件。例如,可使用處理資源進行重新分配,且(在一些情況 下)所涉及的忙態(tài)工作代理可能被中斷,例如,可能需要暫時暫停來適應(yīng)重新分配。在一實 施例中,任務(wù)分配器用于如果與忙態(tài)工作代理相關(guān)的未完成任務(wù)的數(shù)量超過一個閾值,將 未完成任務(wù)從忙態(tài)工作代理分配給空閑工作代理。在另一實施例中,當(dāng)待重新分配的任務(wù) 的百分比超過一個閾值時,任務(wù)分配器可重新分配未完成任務(wù)。如果沒有將未完成任務(wù)分 配給空閑工作代理,則分配模塊可將一些或全部空閑工作代理的內(nèi)存配額重新分配給較忙 態(tài)工作代理。下面將更加詳細討論這些方面以及其他方面。
[0025] 圖1示出了一種處理查詢的SMP架構(gòu)100。如圖所示,所述SMP架構(gòu)100包括多個工作 代理101、102及103、任務(wù)分配器105及內(nèi)存池180,他們通過系統(tǒng)總線106交互。所述工作代 理101、102及103可以是任何用于通過訪問(例如掃描、搜索等)數(shù)據(jù)庫190的表項處理任務(wù) 的組件或組件的集合(例如CPU核等)。所述任務(wù)分配器105可以是任何用于將任務(wù)分配和/ 或重新分配給所述工作代理101、1〇2及103的組件或組件的集合。在一些實施例中,所述任 務(wù)分配器105是所述SMP架構(gòu)100的專用線程。所述內(nèi)存池180包括所述工作代理101、102及 103處理任務(wù)所使用的內(nèi)存資源。在所述工作代理101、102及103中共享訪問所述內(nèi)存池180 的內(nèi)存資源可通過分配內(nèi)存配額來實現(xiàn)。在本示例中,將內(nèi)存配額181分配給所述工作代理 101,將內(nèi)存配額182分配給所述工作代理102,將內(nèi)存配額183分配給所述工作代理103。 [0026]傳統(tǒng)SMP架構(gòu)靜態(tài)地將處理任務(wù)和內(nèi)存配額分配給工作代理。圖2示出了傳統(tǒng)的 SMP系統(tǒng)200,其中,將處理任務(wù)集210、220及230靜態(tài)分配給多個工作代理201、202及203。在 本示例中,所述傳統(tǒng)SMP系統(tǒng)200用于進行聚合操作,其中,所述工作代理201、202及203掃描 處理任務(wù)的每個行項目,聚合結(jié)果并把聚合后的結(jié)果發(fā)送到收集功能,所收集功能組合聚 合結(jié)果并發(fā)送至客戶端。此外,所述傳統(tǒng)SMP系統(tǒng)200將內(nèi)存配額靜態(tài)地分配給所述工作代 理201、202及203。
[0027] 將任務(wù)/內(nèi)存配額靜態(tài)地分配給所述工作代理201、202及203(分別)導(dǎo)致傳統(tǒng)SMP 系統(tǒng)200極易受到數(shù)據(jù)傾斜引起的時延的影響。例如,所述工作代理201處理完任務(wù)集210花 費的時間可能比所述工作代理202和203處理完任務(wù)集220和230(分別)的時間更長。在這種 情況下,在所述工作代理201處理完任務(wù)集210時,所述工作代理202和203(和其靜態(tài)分配的 內(nèi)存配額)可能保持空閑(例如未使用),從而導(dǎo)致未充分利用資源及降低傳統(tǒng)SMP系統(tǒng)200 中的效率。
[0028]在本發(fā)明的各方面中,動態(tài)地重新分配未完成任務(wù)和/或未使用內(nèi)存配額,來降低 數(shù)據(jù)傾斜導(dǎo)致的時延。圖3A到3D示出了用于將任務(wù)從忙態(tài)工作代理分配到空閑工作代理的 SMP系統(tǒng)300的實施例。如圖所示,所述SMP系統(tǒng)300包括多個工作代理301至303以及任務(wù)分 配模塊305。所述工作代理301至303是進行并行處理的模塊,而所述分配模塊305是用于在 工作代理301至303中,重新分配未完成任務(wù)和/或空閑內(nèi)存配額,以避免數(shù)據(jù)傾斜的模塊。 在一些實施例中,所述分配模塊是專用線程。如圖3A所示,一輸入的查詢被劃分為任務(wù)集 310、320及330,分配給所述工作代理301、302及303 (分別)進行處理。任務(wù)集310、320及330 可能在大小和復(fù)雜度上不同。在本示例中,所述任務(wù)集310比任務(wù)集330和320包含更多的任 務(wù)。在其他示例中,每個任務(wù)集包含相同數(shù)量的處理任務(wù),但可能以不同的速率被其分配的 工作代理處理。在初始任務(wù)分配后,所述工作代理301、302及303開始并行處理其各自的任 務(wù)集310、320及330。工作代理301、302及303處理完其各自的任務(wù)集310、320及330所需時間 長度可能因很多因素而不同,包括每個集合的任務(wù)數(shù)量,及影響所述工作代理各自處理速 度的因素,如I/O問題和CPI時間共享等。
[0029] 如圖3B所示,所述工作代理301處理完任務(wù)集310前,工作代理302處理完任務(wù)集 320。值得注意的是,在工作代理302空閑時,工作代理301已處理完完成任務(wù)集314,但還未 處理完未完成任務(wù)集315。在檢測到此情況后,當(dāng)滿足某個條件時,如未完成任務(wù)的數(shù)量超 過一個閾值時等,所述任務(wù)分配模塊305將未完成任務(wù)集315中的一些任務(wù)重新分配給所述 工作代理302。在本示例中(如圖3C所示),所述任務(wù)分配模塊305將未完成任務(wù)子集318分配 給所述工作代理302,而未完成任務(wù)子集316仍然分配給所述工作代理301。重新分配之后 (如圖3D所示),所述工作代理301處理所述未完成任務(wù)子集316,而所述工作代理302處理所 述未完成任務(wù)子集318。
[0030]在上述示例中,所述分配模塊305將未完成任務(wù)子集318重新分配給工作代理302。 然而,在其他示例中,所述分配模塊305也可將至少一些未完成任務(wù)分配給所述工作代理 303,因為所述工作代理303已幾乎完成原分配的任務(wù)集330。在又一示例中,在所述工作代 理302完成其任務(wù)后,所述分配模塊305可將所述工作代理302的全部或部分內(nèi)存配額分配 給所述工作代理301。
[0031] 本發(fā)明各方面提供了一種在SMP系統(tǒng)中將未完成處理任務(wù)重新分配給空閑工作代 理的方法。圖4示出了一種在SMP系統(tǒng)中處理查詢的方法400,可以由一個處理器進行。如圖 所示,所述方法400從步驟410開始,在該步驟中,所述處理器接收查詢。然后,所述方法400 進行到步驟420,在該步驟中,所述處理器識別出在執(zhí)行查詢期間需要處理的任務(wù)集。這可 包括:識別為執(zhí)行所述查詢而需處理的數(shù)據(jù)分區(qū),并為所述數(shù)據(jù)分區(qū)分配工作代理(或識別 為處理識別的分區(qū)而預(yù)先分配的工作代理)。接下來,所述方法400進行到步驟430,在該步 驟中,所述處理器將第一任務(wù)集分配給第一工作代理,并將第二任務(wù)集分配給第二工作代 理。隨后,所述方法400進行到步驟440,在該步驟中,在所述第二工作代理處理完所述第二 任務(wù)集前,所述處理器確定所述第一工作代理已處理完所述第一任務(wù)集。接下來,所述方法 400進入到步驟450,在該步驟中,所述處理器確定是否滿足條件。在一些實施例中,當(dāng)所述 查詢(或分配給所述第二工作代理的第二任務(wù)集)中未完成任務(wù)的數(shù)量超過一個閾值時,滿 足所述條件。在另一示例中,當(dāng)需重新分配的任務(wù)的百分比超過一個閾值時,滿足所述條 件。如果滿足所述條件,則所述方法400進行到步驟460,在該步驟中,所述處理器將第二任 務(wù)集中的至少一些任務(wù)重新分配給所述第一工作代理。如果沒有滿足所述條件,所述方法 400進行到步驟470,在該步驟中,所述處理器使得所述第二工作代理不需要重新平衡任務(wù) 分配,即可處理完所述第二任務(wù)集。
[0032] 本發(fā)明各方面也提供了一種在SMP系統(tǒng)中將空閑或未使用內(nèi)存配額重新分配給忙 態(tài)工作代理的方法。圖5示出了 一種在SMP系統(tǒng)中處理查詢的方法500,可以由一個處理器執(zhí) 行。如圖所示,所述方法500從步驟510開始,在該步驟中,所述處理器接收查詢。接下來,所 述方法500進行到步驟520,在該步驟中,所述處理器識別出在執(zhí)行查詢期間需要處理的任 務(wù)集。然后,所述方法500進行到步驟530,在該步驟中,所述處理器將第一內(nèi)存配額分配給 第一工作代理來處理第一任務(wù)集。接下來,所述方法500進行到步驟535,在該步驟中,為處 理第一任務(wù)集,所述處理器將第一內(nèi)存配額分配給第一工作代理。然后,所述方法500進行 到步驟540,在該步驟中,在所述第二工作代理處理完第二任務(wù)集前,所述處理器確定所述 第一工作代理已處理完所述第一任務(wù)集。接下來,所述方法500進行到步驟550,在該步驟 中,所述處理器確定是否已滿足條件。當(dāng)未完成任務(wù)的數(shù)量或需重新分配的任務(wù)的百分比 超過一個閾值時,可以滿足所述條件?;蛘?,當(dāng)未完成任務(wù)的數(shù)量或需重新分配的任務(wù)的百 分比未能超過一個閾值時,可以滿足所述條件。如果滿足所述條件,則所述方法500進行到 步驟560,在該步驟中,所述處理器將至少部分第一內(nèi)存配額重新分配給所述第二工作代 理。在一些實施例中,通過釋放所述第一內(nèi)存配額到所述SMP系統(tǒng)的內(nèi)存池來實現(xiàn),然后將 至少部分第一內(nèi)存配額重新分配給所述第二工作代理。然后,除了原分配的第二內(nèi)存配額, 所述第二工作代理還使用所述重新分配的內(nèi)存來處理第二任務(wù)集的剩余任務(wù)。另一方面, 如果沒有滿足所述條件,所述方法500進行到步驟570,在該步驟中,所述處理器使得所述第 二工作代理不需要重新平衡,即可處理完所述第二任務(wù)集。
[0033]本發(fā)明各方面中,通過將任務(wù)分配模塊(或任務(wù)分配器)引入到數(shù)據(jù)庫服務(wù)器實例 進程中,在工作代理中動態(tài)分配任務(wù)。在SMP環(huán)境中,當(dāng)數(shù)據(jù)節(jié)點示例接收查詢時,它啟動多 個并行處理所述查詢工作代理。優(yōu)化模塊(或優(yōu)化器)可以估計每個代理處理的數(shù)據(jù)行的數(shù) 量。工作代理可將其任務(wù)登記到任務(wù)分配器,并周期性地將其進展報告給所述任務(wù)分配器。 在一些實例中,工作代理間不均勻的任務(wù)分配可能導(dǎo)致一些工作代理比其他工作代理更早 地完成其任務(wù)集??蓪膳渲瞄撝?任務(wù)分配閾值)進行定義以確定任務(wù)分配。如果忙態(tài)代 理中的剩余工作大于任務(wù)分配閾值,則任務(wù)分配器將任務(wù)從忙態(tài)代理分配給空閑代理。忙 態(tài)代理可將剩余數(shù)據(jù)分為小數(shù)據(jù)塊,這些小數(shù)據(jù)塊可以分別處理。
[0034]在執(zhí)行查詢期間,代理從系統(tǒng)請求內(nèi)存,進行查詢操作,如哈希表建立操作。代理 可得到的內(nèi)存的數(shù)量受可配置配額限制。每個代理將其內(nèi)存配額注冊到任務(wù)分配器。執(zhí)行 查詢期間,一些工作代理較早完成其工作,在這種情況下,任務(wù)分配器可釋放這些空閑代理 的配額并增加忙態(tài)代理的內(nèi)存配額,來提高系統(tǒng)性能。
[0035] 一個SMP系統(tǒng)可能有多個CPU核,為了并行處理查詢的各部分(例如任務(wù)集),在接 收到查詢后,可運行若干個工作代理。每個代理處理其各自的數(shù)據(jù)分區(qū)。從工作代理收集查 詢結(jié)果并發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器可將結(jié)果返回給客戶端。由于數(shù)據(jù)傾斜現(xiàn)象,與其他代理相 比,一些代理需要處理更大的數(shù)據(jù)分區(qū),并花費更多時間來執(zhí)行查詢。在傳統(tǒng)系統(tǒng)中,當(dāng)一 個工作代理完成其任務(wù)集時,所述工作代理使用的CPU核和內(nèi)存配額會變成空閑,從而導(dǎo)致 系統(tǒng)資源利用率低。本發(fā)明的各方面,通過在工作代理間動態(tài)重新分配任務(wù)和/或內(nèi)存配 額,解決了這個問題。
[0036]在重新平衡期間,可通過任務(wù)分配器將未完成任務(wù)重新分配給空閑工作代理。在一 實施例中,基于仍需所有忙態(tài)工作代理處理的剩余數(shù)據(jù)頁面,任務(wù)分配器可計算待重新分配任 η 務(wù)的總數(shù)??筛鶕?jù)下述公式確定:待重新分配任務(wù)數(shù)量代理⑴上的剩余任務(wù)數(shù)量以 其中,η是工作代理的數(shù)量。
[0037]因此,任務(wù)分配器可選擇一個有最多剩余待處理數(shù)據(jù)頁面的忙態(tài)工作代理為候選工 作代理。任務(wù)分配器可通過下述公式來計算待重新分配任務(wù)的百分比為待重新分配任務(wù)與該 忙態(tài)工作代理的分區(qū)中數(shù)據(jù)頁面的總數(shù)的比值:待重新分配任務(wù)百分比=分數(shù) 如果待重新分配任務(wù)的百分比大于任務(wù)分配閾值,則任務(wù)分配器將任務(wù)分配給空閑代理。 [0038] 圖6示出了 一種在SMP系統(tǒng)中處理查詢的方法600。如圖所示,所述方法600從步驟 610開始,在該步驟中,工作代理將其估計的數(shù)據(jù)分區(qū)大小和內(nèi)存配額注冊到任務(wù)分配器。 任務(wù)代理可將其進展周期性地報告給任務(wù)分配器。之后,所述方法600進行到步驟620,在該 步驟中,任務(wù)分配器確定一個工作代理是否完成其工作。接下來,所述方法600進行到步驟 630,在該步驟中,任務(wù)分配器確定剩余工作/任務(wù)是否超過一個閾值。所述閾值可能與重新 分配的損耗(例如進行重新分配所需的處理資源)相對應(yīng)。如果剩余工作/任務(wù)沒有超過所 述閾值,則所述方法600進行到步驟640,在該步驟中,任務(wù)分配器將空閑工作代理的內(nèi)存配 額釋放到內(nèi)存池,可將釋放的內(nèi)存配額重新分配給其他忙態(tài)工作代理。如果剩余工作/任務(wù) 超過所述閾值,則所述方法600進行到步驟650,在該步驟中,任務(wù)分配器將更多工作/任務(wù) 分配給空閑工作代理。這包括將任務(wù)從忙態(tài)工作代理重新分配給空閑工作代理。
[0039]本發(fā)明各方面為數(shù)據(jù)庫實例提供了任務(wù)分配模塊。如果工作代理上的工作進展不 平衡,任務(wù)分配模塊可在工作代理間動態(tài)重新平衡執(zhí)行查詢?nèi)蝿?wù)和內(nèi)存分配。數(shù)據(jù)傾斜或 如I/O等其他因素可導(dǎo)致工作進展的不均衡。實施例中的重新分配技術(shù)可提高CPI和內(nèi)存資 源的利用率并增加 SMP系統(tǒng)的吞吐量。任務(wù)分配模塊也可用于性能監(jiān)測目的,使得可觀察到 執(zhí)行查詢進展。而且實施例的任務(wù)分配模塊是輕量級的并可作為單線程實現(xiàn)。實施例的重 新分配技術(shù)可應(yīng)用于多個數(shù)據(jù)庫操作,如聚合、排序、哈希連接、合并連接及嵌套循環(huán)連接 等。在聚合的情況下,優(yōu)化模塊可添加最終聚合運算器用于并行和重新平衡。在哈希連接的 情況下,可共享建立側(cè),并可并行處理及重新平衡探測階段。在嵌套循環(huán)連接的情況下,對 于內(nèi)外側(cè),連接鍵可以是分區(qū)鍵,且外側(cè)可并行處理并重新平衡。在排序和合并連接操作期 間,可使用外部排序。
[0040]圖7示出可等效于上文所論述的一或多個設(shè)備的處理設(shè)備700的實施例的框圖。所 述處理設(shè)備700可以包括多核處理器704、存儲器706以及多個接口 710至714,其設(shè)置如圖7 所示(或者可以與圖7不同)。所述多核處理器704可以是任何能夠執(zhí)行計算和/或其它處理 相關(guān)任務(wù)的器件,所述存儲器706可以是任何能夠為所述多核處理器704存儲程序和/或指 令的器件。所述接口 710至714可以是任何讓所述處理設(shè)備700與外部設(shè)備通信的器件或器 件的集合。
[0041]圖8顯示多核CPU系統(tǒng)的框圖,該處理系統(tǒng)可以用來實現(xiàn)本文公開的方法。實施例 的多核CPU系統(tǒng)可利用所有所示的組件或所述組件的僅一子集,且系統(tǒng)之間的集成程度可 能不同。此外,多核CPU系統(tǒng)可以包括組件的多個實例,如多個處理核、存儲器、發(fā)射器、接收 器等。所述多核CPU可以包括配備一個或多個輸入/輸出設(shè)備,如揚聲器、麥克風(fēng)、鼠標(biāo)、觸摸 屏、按鍵、鍵盤、打印機、顯示器等的多個處理核。所述處理單元可以包括中央處理器 (central processing unit,簡稱CPU)、存儲器、大容量存儲器設(shè)備、視頻適配器以及連接 至總線的I/O接口。
[0042] 總線可以是任意類型的若干總線架構(gòu)中的一個或多個,包括存儲總線或存儲控制 器、外設(shè)總線、視頻總線等等。CPU可包括任意類型的電子數(shù)據(jù)處理器。存儲器可包括任何類 型的系統(tǒng)存儲器,例如靜態(tài)隨機存取存儲器(static random access memory,簡稱SRAM)、 動態(tài)隨機存取存儲器(dynamic random access memory,簡稱DRAM)、同步DRAM (synchronous dynamic random access memory,簡稱SDRAM)、只讀存儲器(read-only memory,簡稱ROM)或其組合等等。在實施例中,所述存儲器可包括在開機時使用的ROM以及 在執(zhí)行程序時使用的存儲程序和數(shù)據(jù)的DRAM。
[0043] 大容量存儲器設(shè)備可包括任何類型的存儲器設(shè)備,其用于存儲數(shù)據(jù)、程序和其它 信息,并使這些數(shù)據(jù)、程序和其它信息通過總線訪問。大容量存儲器設(shè)備可包括如下項中的 一項或多項:固態(tài)磁盤、硬盤驅(qū)動器、磁盤驅(qū)動器、光盤驅(qū)動器等等。
[0044]顯示卡以及1/0接口提供接口以將外部輸入以及輸出裝置耦合至處理單元上。如 所圖示,輸入以及輸出裝置的實例包含耦合至顯示卡上的顯示器以及耦合至1/0接口上的 鼠標(biāo)/鍵盤/打印機。其它裝置可以耦合至處理單元上,并且可以利用額外的或較少的接口 卡。例如,可使用如通用串行總線(Universal Serial Bus,簡稱USB)(未示出)等串行接口 將接口提供給打印機。
[0045] 處理單元還包含一個或多個網(wǎng)絡(luò)接口,所述網(wǎng)絡(luò)接口可以包括例如以太網(wǎng)電纜或 其類似者等有線鏈路,和/或用以接入節(jié)點或不同網(wǎng)絡(luò)的無線鏈路。網(wǎng)絡(luò)接口允許處理單元 經(jīng)由網(wǎng)絡(luò)與遠程單元通信。舉例來說,網(wǎng)絡(luò)接口可以經(jīng)由一個或多個發(fā)射器/發(fā)射天線以及 一個或多個接收器/接收天線提供無線通信。在一實施例中,所述處理單元與局域網(wǎng)或者廣 域網(wǎng)耦合以進行數(shù)據(jù)處理以及與遠端設(shè)備比如其他處理單元、因特網(wǎng)、遠端存儲設(shè)備等通 {目。
[0046] 盡管進行了詳細的描述,但應(yīng)理解,可在不脫離由所附權(quán)利要求書界定的本發(fā)明 的精神和范圍的情況下,對本文做出各種改變、替代和更改。此外,本發(fā)明的范圍不希望限 于本文中所描述的特定實施例,所屬領(lǐng)域的一般技術(shù)人員將從本發(fā)明中容易了解到,過程、 機器、制造工藝、物質(zhì)成分、構(gòu)件、方法或步驟(包括目前存在的或以后將開發(fā)的)可執(zhí)行與 本文所述對應(yīng)實施例大致相同的功能或?qū)崿F(xiàn)與本文所述對應(yīng)實施例大致相同的效果。相應(yīng) 地,所附權(quán)利要求范圍包括這些流程、機器、制造、物質(zhì)組分、構(gòu)件、方法,及步驟。
【主權(quán)項】
1. 一種用于在對稱多處理(symmetric multiprocessing,簡稱SMP)系統(tǒng)中進行查詢的 方法,其特征在于,所述方法包括: 處理器識別進行查詢期間的待處理的任務(wù),其中,所述任務(wù)至少包括第一任務(wù)集和第 二任務(wù)集,所述處理器包括多個工作代理,至少包括第一工作代理和第二工作代理; 將所述任務(wù)分配給所述多個工作代理W進行處理,其中將所述第一任務(wù)集分配給所述 第一工作代理,將所述第二任務(wù)集分配給所述第二工作代理; 在所述第二工作代理處理完第二任務(wù)集前,確定所述第一工作代理已處理完第一任務(wù) 集; 當(dāng)滿足條件時,重新將所述第二任務(wù)集中的至少一些未完成任務(wù)分配給所述第一工作 代理。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一代理處理所述重新分配的任務(wù)。3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述第二任務(wù)集中的未完成任務(wù)的數(shù)量 超過一個闊值時,滿足所述條件,且所述未完成任務(wù)的數(shù)量與所述第二任務(wù)集中的所述第 二工作代理還沒有處理的任務(wù)相對應(yīng)。4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 計算待重新分配任務(wù)的百分比,其中,當(dāng)所述待重新分配任務(wù)的百分比超過一個闊值 時,滿足所述條件。5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,計算待重新分配任務(wù)的百分比包括: 識別待重新分配任務(wù)的數(shù)量; 計算所述待重新分配任務(wù)的數(shù)量與所述查詢相關(guān)的處理任務(wù)的總數(shù)的比值; 將所述比值乘100。6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,識別待重新分配任務(wù)的數(shù)量包括: 當(dāng)所述第一工作代理已處理完所述第一任務(wù)集,確定所述多個工作代理還沒有處理的 任務(wù)的數(shù)量。7. 根據(jù)權(quán)利要求5所述的方法,其特征在于,識別待重新分配任務(wù)的數(shù)量包括: 依照W下公式計算待重新分配的任務(wù)的數(shù)量:待重巧分配巧務(wù)=殺;' 其中,代理(i)的剩余任務(wù)為當(dāng)所述第一工作代理處理完所述第一任務(wù)集時,第i個工作代 理還沒有處理的任務(wù)的數(shù)量,η為所述處理器中工作代理的總數(shù)量。8. 根據(jù)權(quán)利要求1所述的方法,其特征在于,將第一內(nèi)存配額分配給所述第一工作代 理,W處理所述第一任務(wù)集,將第二內(nèi)存配額分配給所述第二工作代理,W處理所述第二任 務(wù)集。9. 根據(jù)權(quán)利要求8所述的方法,其特征在于,還包括: 當(dāng)所滿足所述條件時,釋放至少一些所述第一內(nèi)存配額到內(nèi)存池。10. 根據(jù)權(quán)利要求9所述的方法,其特征在于,還包括: 將所述第一內(nèi)存配額的至少部分重新分配給所述第二工作代理。11. 根據(jù)權(quán)利要求10所述的方法,其特征在于,所述第二工作代理使用所述第一內(nèi)存配 額的重新分配部分處理所述第二任務(wù)集的剩余任務(wù)。12. 根據(jù)權(quán)利要求10所述的方法,其特征在于,所述查詢包括聚合操作、排序操作、哈希 連接操作、合并連接操作及嵌套循環(huán)操作。13. -種非對稱多重處理(symmetric 1111111:191'〇。日33;[叫,簡稱51?)所使用的處理器,其 特征在于,所述處理器包括: 一個接口,用于接收查詢,其中所述處理器用于識別執(zhí)行查詢期間的待處理的任務(wù),所 述任務(wù)至少包括第一任務(wù)集和第二任務(wù)集; 多個工作代理,至少包括第一工作代理和第二工作代理,其中,所述第一工作代理分配 給所述第一任務(wù)集,所述第二工作代理分配給所述第二任務(wù)集; 任務(wù)分配模塊,通信禪合至所述多個工作代理,其中所述任務(wù)分配模塊用于在所述第 二工作代理處理完所述第二任務(wù)集前,確定所述第一工作代理處理完所述第一任務(wù)集;當(dāng) 滿足條件時,將至少一些所述第二任務(wù)集重新分配給所述第一工作代理。14. 根據(jù)權(quán)利要求13所述的處理器,其特征在于,所述任務(wù)分配模塊還用于在所述第一 工作代理處理完所述第一任務(wù)集后,計算待重新分配任務(wù)的百分比,當(dāng)所述待重新分配任 務(wù)的百分比超過一個闊值時,滿足所述條件。15. 根據(jù)權(quán)利要求13所述的處理器,其特征在于,所述任務(wù)分配模塊為多個工作代理中 的一個。16. 一種用于在對稱多處理(symmetric multiprocessing,簡稱SMP)系統(tǒng)中進行查詢 的方法,其特征在于,所述方法包括: 處理器識別進行查詢期間的待處理的任務(wù),其中,所述任務(wù)至少包括第一任務(wù)集和第 二任務(wù)集,所述處理器包括多個工作代理,至少包括第一工作代理和第二工作代理; 將內(nèi)存配額分配給所述多個工作代理,W處理所述任務(wù),其中,將第一內(nèi)存配額分配給 所述第一工作代理,W處理所述第一任務(wù)集,將第二內(nèi)存配額分配給所述第二工作代理,W 處理所述第二任務(wù)集; 在所述第二工作代理處理完第二任務(wù)集前,確定所述第一工作代理已處理完第一任務(wù) 集; 將所述第一內(nèi)存配額的至少部分重新分配給所述第二工作代理。17. 根據(jù)權(quán)利要求16所述的方法,其特征在于,所述第二工作代理使用所述第一內(nèi)存配 額的重新分配部分來處理所述第二任務(wù)集的剩余任務(wù)。18. 根據(jù)權(quán)利要求16所述的方法,其特征在于,將所述第一內(nèi)存配額的至少部分重新分 配給所述第二工作代理包括: 在所述第一工作代理處理完所述第一任務(wù)集后,釋放所述第一內(nèi)存配額至內(nèi)存池; 從第二工作代理接收內(nèi)存請求. 為響應(yīng)所述內(nèi)存請求,將所述第一內(nèi)存配額的至少部分重新分配給所述第二工作代 理。19. 一種非對稱多重處理(symmetric 1111111:191'〇。日33;[叫,簡稱51?)所使用的處理器,其 特征在于,所述處理器包括: 一個接口,用于接收查詢,其中所述處理器用于識別執(zhí)行查詢期間的待處理的任務(wù),所 述任務(wù)至少包括第一任務(wù)集和第二任務(wù)集; 多個工作代理,至少包括第一工作代理和第二工作代理,其中,分配所述第一工作代理 用于通過第一內(nèi)存配額處理所述第一任務(wù)集,分配所述第二工作代理用于通過第二內(nèi)存配 額處理所述第二任務(wù)集; 任務(wù)分配模塊,通信禪合至所述多個工作代理,所述任務(wù)分配模塊用于:在所述第二工 作代理處理完所述第二任務(wù)集前,確定所述第一工作代理處理完所述第一任務(wù)集;將所述 第一內(nèi)存配額的至少部分重新分配給所述第二工作代理。20.根據(jù)權(quán)利要求19所述的處理器,其特征在于,所述任務(wù)分配模塊為多個工作代理中 的一個。
【文檔編號】G06F9/50GK105980988SQ201580007345
【公開日】2016年9月28日
【申請日】2015年2月6日
【發(fā)明人】李懷智, 周慶慶, 杰森·揚·孫
【申請人】華為技術(shù)有限公司