專利名稱:使用異步緩沖器的多核查詢處理的制作方法
技術(shù)領(lǐng)域:
本說明書涉及使用異步緩沖器的多核查詢處理。
背景技術(shù):
可通過使用多個核來以并行或重疊方式執(zhí)行數(shù)據(jù)密集型(data-intensive)計算操作,來以快速且高效的方式執(zhí)行這種計算操作。例如,可針對關(guān)系數(shù)據(jù)庫來執(zhí)行查詢,并且可使用一對核中的每一個來搜索該關(guān)系數(shù)據(jù)庫的一半,由此獲得總體的數(shù)據(jù)庫的查詢結(jié)果。更一般地,可通過定義(一個或多個)計算操作的子部分并向每一個子部分分配一個或多個可用核,來并行地使用任何數(shù)目的可用核。例如,可以通過劃分要被查詢的數(shù)據(jù)并/ 或通過定義(一個或多個)整個計算操作的各個子任務(wù),來定義這些子部分。由此,在特定類型的計算操作中,可能有必要或者有利的是,通過定義查詢的子任務(wù)來執(zhí)行或者處理該查詢,使得該查詢的每個子任務(wù)具有中間的輸入和輸出,而(一個或多個)最終子任務(wù)輸出最終的查詢結(jié)果。在這樣的情況下,可能常常出現(xiàn)的是,一定量和/ 或類型的正被查詢的數(shù)據(jù)以及/或者一定量和/或類型的所期望的(一個或多個)查詢結(jié)果可能受益于在查詢處理期間在緩沖器中存儲中間輸出。例如,對于非常大量的數(shù)據(jù),在所期望的時間幀內(nèi)將數(shù)據(jù)從一個存儲位置移動到另一存儲位置是不現(xiàn)實或者不可能的。因此,相反,查詢子任務(wù)可以寫中間結(jié)果,作為向緩沖器的輸出,且隨后的查詢子任務(wù)可以讀這些中間的結(jié)果作為來自緩沖器的輸入。以此方式,這些中間數(shù)據(jù)可以在處理期間停留在緩沖器中。有問題的是,可能出現(xiàn)下述情況,中間結(jié)果被寫入緩沖器中的速度比可從其中讀取中間結(jié)果的速度更快(或更慢)。在這樣的情況下,隨著時間流逝,緩沖器可能變?yōu)槿珴M或全空。在這樣的情況下,專用于相關(guān)處理的核可能變空閑,并且/或者可能從寫入緩沖器切換為從其中讀取(或反之)。然而,空閑的核的出現(xiàn)和/或查詢子任務(wù)之間的核的過多切換的出現(xiàn)通常與查詢處理中的低效以及獲得最終查詢結(jié)果的降低的速度有關(guān)。
發(fā)明內(nèi)容
根據(jù)一個總體方面,系統(tǒng)可包括在計算機可讀介質(zhì)上記錄的可由至少一個處理器執(zhí)行的指令,該系統(tǒng)包括緩沖器監(jiān)視器,被配置來使得至少一個處理器監(jiān)視在查詢?nèi)蝿?wù)在處理期間所使用的緩沖器的緩沖器內(nèi)容,其中查詢?nèi)蝿?wù)的寫任務(wù)將數(shù)據(jù)寫入緩沖器,以及查詢?nèi)蝿?wù)的讀任務(wù)從緩沖器讀取數(shù)據(jù),緩沖器具有緩沖器容量;閾值管理器,被配置來使得至少一個處理器將緩沖器內(nèi)容與相對于緩沖器容量而定義的低閾值和高閾值進行比較;以及速度控制器,被配置來使得至少一個處理器相對于當(dāng)前正執(zhí)行查詢?nèi)蝿?wù)的讀任務(wù)的數(shù)目來控制寫任務(wù)的數(shù)目,以由此將緩沖器內(nèi)容維持在低閾值和高閾值之間。實現(xiàn)方式可包括以下特征中的一個或多個。例如,緩沖監(jiān)視器可被配置來使得至少一個處理器相對于在緩沖器中的空白存儲器塊的數(shù)目來對填充存儲器塊的數(shù)目進行計數(shù)。
閾值管理器可包括被配置來使得至少一個處理器確定緩沖器內(nèi)容是否低于低閾值或高于高閾值的閾值比較器。閾值管理器可包括閾值調(diào)整器,被配置來使得至少一個處理器相對于寫任務(wù)的數(shù)目和/或讀任務(wù)的數(shù)目以及相對于緩沖器的空白和/或填充存儲器塊的數(shù)目來調(diào)整高閾值和低閾值。速度控制器可被配置來使得工作負載管理器使得至少一個處理器通過重新分配處理寫任務(wù)和讀任務(wù)的核而控制讀任務(wù)和寫任務(wù)的速度。速度控制器可被配置來使得工作負載管理器使得至少一個處理器在緩沖器內(nèi)容高于高閾值時,將核從至少一個寫任務(wù)分配到至少一個讀任務(wù),由此停止至少一個寫任務(wù)并由此激活至少一個讀任務(wù)。速度控制器可被配置來使得工作負載管理器使得至少一個處理器在緩沖器內(nèi)容低于低閾值時,將核從至少一個讀任務(wù)分配到至少一個寫任務(wù),由此停止至少一個讀任務(wù)并由此激活至少一個寫任務(wù)。工作負載管理器可被配置來使得至少一個處理器在查詢?nèi)蝿?wù)中的多個緩沖器和與其相關(guān)的寫和讀任務(wù)之間關(guān)聯(lián)。查詢?nèi)蝿?wù)可包括至少一個緩沖器序列,以及其中工作負載管理器可以被配置來使得至少一個處理器實現(xiàn)流水線(pipeline)激勵模式,包括將來自可用核的核分配到與至少一個緩沖器序列的每個緩沖器相關(guān)聯(lián)的至少一個任務(wù)。查詢?nèi)蝿?wù)可包括至少一個緩沖器序列,以及工作負載管理器可被配置來使得至少一個處理器實現(xiàn)局部(locale)激勵模式,包括將來自可用核的核分配到緩沖器序列的第一選擇緩沖器的任務(wù),直到達到用于實現(xiàn)第一選擇緩沖器的任務(wù)的最大數(shù)的核,然后將來自可用核的剩余處理器核分配到緩沖器序列的第二選擇緩沖器的任務(wù)。查詢?nèi)蝿?wù)可被表示為有向無環(huán)圖,其中緩沖器是多個緩沖器之一,以及寫任務(wù)和讀任務(wù)被包括在多個任務(wù)中,以及其中多個緩沖器和多個任務(wù)是有向無環(huán)圖的節(jié)點。根據(jù)另一總體方面,由至少一個處理器實現(xiàn)的方法可包括使用至少一個處理器監(jiān)視在查詢?nèi)蝿?wù)在處理期間所使用的緩沖器的緩沖器內(nèi)容,其中查詢?nèi)蝿?wù)的寫任務(wù)將數(shù)據(jù)寫入緩沖器,以及查詢?nèi)蝿?wù)的讀任務(wù)從緩沖器讀取數(shù)據(jù),緩沖器具有緩沖器容量。該方法還可以包括使用至少一個處理器將緩沖器內(nèi)容與相對于緩沖器容量而定義的低閾值和高閾值進行比較;以及使用至少一個處理器相對于當(dāng)前正執(zhí)行查詢?nèi)蝿?wù)的讀任務(wù)的數(shù)目來控制寫任務(wù)的數(shù)目,以由此將緩沖器內(nèi)容維持在低閾值和高閾值之間。實現(xiàn)方式可包括以下特征中的一個或多個。例如,該比較可包括確定緩沖器內(nèi)容是否低于低閾值或高于高閾值。該方法可包括相對于寫任務(wù)的數(shù)量和/或讀任務(wù)的數(shù)目以及相對于緩沖器的空白和/或填充存儲器塊的數(shù)目來調(diào)整高閾值和低閾值。該控制可包括通過重新分配處理寫任務(wù)和讀任務(wù)的核而控制讀任務(wù)和寫任務(wù)的速度。該方法可包括在查詢?nèi)蝿?wù)中的多個緩沖器和與其相關(guān)的寫和讀任務(wù)之間關(guān)聯(lián)。根據(jù)另一總體方面,計算機程序產(chǎn)品可被有形地實施在計算機可讀存儲介質(zhì)上并且可包括在被執(zhí)行時被配置來使得至少一個處理器進行如下步驟的指令監(jiān)視在查詢?nèi)蝿?wù)在處理期間所使用的緩沖器的緩沖器內(nèi)容,其中查詢?nèi)蝿?wù)的寫任務(wù)將數(shù)據(jù)寫入緩沖器,以及查詢?nèi)蝿?wù)的讀任務(wù)從緩沖器讀取數(shù)據(jù),緩沖器具有緩沖器容量;將緩沖器內(nèi)容與相對于緩沖器容量而定義的低閾值和高閾值進行比較;以及相對于當(dāng)前正執(zhí)行查詢?nèi)蝿?wù)的讀任務(wù)的數(shù)目來控制寫任務(wù)的數(shù)目,以由此將緩沖器內(nèi)容維持在低閾值和高閾值之間。實現(xiàn)方式可包括以下特征中的一個或多個。例如,指令在被執(zhí)行時可使得至少一個處理器比較緩沖器內(nèi)容包括確定緩沖器內(nèi)容是否低于閾值或高于高閾值。指令在被執(zhí)行時可使得至少一個處理器通過重新分配處理寫任務(wù)和讀任務(wù)的核而控制讀任務(wù)和寫任務(wù)的速度。指令在被執(zhí)行時還可使得至少一個處理器在查詢?nèi)蝿?wù)中的多個緩沖器和與其相關(guān)的寫和讀任務(wù)之間關(guān)聯(lián)。在附圖和以下描述中闡述一個或多個實現(xiàn)方式的細節(jié)。根據(jù)描述和附圖以及根據(jù)權(quán)利要求將清楚其他特征。
圖1是使用異步緩沖器的多核查詢處理的系統(tǒng)的框圖。圖2是例示了圖1的系統(tǒng)的示例操作的流程圖。圖3是由圖1的系統(tǒng)處理的查詢?nèi)蝿?wù)的更詳細的例子的框圖。圖4是由圖1的系統(tǒng)中使用的示例緩沖器結(jié)構(gòu)的框圖。圖5是例示了當(dāng)使用圖1的系統(tǒng)來處理查詢?nèi)蝿?wù)時在查詢?nèi)蝿?wù)之間切換核的示例操作的流程圖。圖6是用于使用圖1的系統(tǒng)在查詢?nèi)蝿?wù)的多個緩沖器之間分配核的第一示例操作的流程圖。圖7是用于使用圖1的系統(tǒng)在查詢?nèi)蝿?wù)的多個緩沖器之間分配核的第二示例操作的流程圖。
具體實施例方式圖1是使用異步緩沖器的多核查詢處理的系統(tǒng)100的框圖。在圖1的例子中,查詢處理器102使用多個核106來執(zhí)行查詢?nèi)蝿?wù)104。更具體地,如上所述,查詢處理器102 一般可操作為通過將核106中的各個核分配給查詢?nèi)蝿?wù)104的同時執(zhí)行的部分來并行地處理查詢?nèi)蝿?wù)104的這些部分。在此,術(shù)語(一個或多個)核應(yīng)被理解為涉及或包括任何多計算平臺,在多計算平臺中,可使用多個處理器、中央處理單元(CPU)或其他處理資源,包括網(wǎng)絡(luò)/裝置簇。例如, 公知并行查詢處理是用于改善在現(xiàn)有SMP/CMP (對稱多處理/芯片級多處理)服務(wù)器上的數(shù)據(jù)庫性能的一種選擇,尤其是用于能夠高效地處理大量數(shù)據(jù)和復(fù)雜查詢的高性能數(shù)據(jù)庫系統(tǒng)。由此,在本說明書中,應(yīng)理解,術(shù)語核代表在其中可使用多個處理選擇的任何這種環(huán)境內(nèi)的處理能力的(一個或多個)單位。如下詳細描述的,查詢處理器102可在查詢?nèi)蝿?wù)104在處理期間,按照最小化切換的需求的方式來在查詢?nèi)蝿?wù)104之內(nèi)和之間分配核106,或者將各個核從查詢?nèi)蝿?wù)104的一部分重新分配到另一部分。以此方式,可改善系統(tǒng)100的效率,并且/或者可減少處理查詢?nèi)蝿?wù)104的整體時間。通常,查詢?nèi)蝿?wù)104可以事實上代表任何多步查詢,包括處理來自數(shù)據(jù)庫的數(shù)據(jù)以獲得中間結(jié)果、之后進一步處理這樣的中間結(jié)果以獲得進一步的中間結(jié)果等等,直到達到(一個或多個)最終的查詢結(jié)果。下面參照圖3例示并描述這樣的查詢?nèi)蝿?wù)的更詳細的例子。這樣的查詢?nèi)蝿?wù)的例子本身是本領(lǐng)域中公知的,無需再過多地詳細描述。然而,通過示例而不是限制的方式,查詢?nèi)蝿?wù)104可代表針對商業(yè)的雇員或客戶數(shù)據(jù)庫應(yīng)用的查詢?nèi)蝿?wù)。例如,商業(yè)可具有包括數(shù)百萬的記錄的客戶數(shù)據(jù)庫,每個記錄對應(yīng)于具體客戶并包括關(guān)于該客戶的各類信息。因此,查詢?nèi)蝿?wù)104可被設(shè)計為以期望的方式處理這樣的客戶信肩、ο例如,查詢?nèi)蝿?wù)104可訪問該客戶數(shù)據(jù)庫以便在每個客戶記錄中修改、更新或增加字段,以及/或者使用每個客戶記錄的一個或多個字段進行某種數(shù)學(xué)計算。例如,查詢?nèi)蝿?wù)104可訪問這樣的客戶數(shù)據(jù)庫以便計算具有某一特性、諸如收入水平的客戶的平均年齡。然后,查詢?nèi)蝿?wù)104可得到這樣的處理的結(jié)果,并對其進行進一步的處理,例如,利用關(guān)于每個這樣的客戶的最新近的購物的信息來更新具有所選特性(例如,收入水平)的客戶的客戶記錄。然后,這樣的進一步的處理的結(jié)果可被查詢?nèi)蝿?wù)104進一步處理,例如,處理這樣的結(jié)果以預(yù)測每個這樣的客戶的將來可能的購物,用于在勸導(dǎo)每個所指定的客戶進行這樣的將來的購物時得到最優(yōu)化。由此,如上所述,通常,可觀察到查詢?nèi)蝿?wù)104包括由操作器(operator) 108對所指定的數(shù)據(jù)執(zhí)行的處理,以獲得可被存儲在緩沖器110中的經(jīng)處理的/中間結(jié)果。接著,由查詢?nèi)蝿?wù)104的下一操作器112從緩沖器110讀取這樣的經(jīng)處理的/中間結(jié)果,然后查詢?nèi)蝿?wù)104的下一操作器112可進行其進一步的處理。如剛剛所述的,這樣,事實上,操作器 108、112本身可以代表系統(tǒng)100的用戶所期望的或可用的任何數(shù)學(xué)或數(shù)據(jù)庫(例如,選擇、 加入、刪除)操作器(operator)。圖1示出了簡化的例子,其中操作器108處理數(shù)據(jù)并將相應(yīng)結(jié)果寫入緩沖器110 中,而操作器112從緩沖器110中讀取這些結(jié)果用于進行其進一步的處理。然而,可以理解,更一般地,事實上,可使用任何數(shù)目的操作器和相關(guān)聯(lián)的緩沖器來執(zhí)行用于具體查詢?nèi)蝿?wù)的期望的查詢處理。例如,可以理解,操作器108可被配置來從(圖1中未示出的)前一緩沖器讀取數(shù)據(jù),而類似地,操作器112可被配置來將數(shù)據(jù)寫入(圖1中也未示出的)后續(xù)或后面的緩沖器。由此,查詢?nèi)蝿?wù)104 —般可實際上包括任何期望的數(shù)目的操作器對,且每對具有位于它們之間的中間緩沖器。在一些例子中,查詢?nèi)蝿?wù)104可包括具有位于它們之間的相應(yīng)緩沖器的一串、一序列或一系列這種操作器對,以便如所述的,可反復(fù)地處理來自一個或多個數(shù)據(jù)庫的數(shù)據(jù),直到達到最終結(jié)果。更加一般地,這種鏈或序列的操作器和緩沖器可以至少部分地彼此并行地被執(zhí)行,可能用于以后將它們聯(lián)接在一起以獲得組合結(jié)果。因此,在這些例子和其他例子中,查詢?nèi)蝿?wù)104可被表示為有向無環(huán)圖(directed acyclicgraph DAG),其中可布置各種分支、 循環(huán)、線程或其他任務(wù)順序以執(zhí)行整體查詢?nèi)蝿?wù)104。圖3例示和描述了在表示和執(zhí)行查詢?nèi)蝿?wù)104時使用這樣的有向無環(huán)圖的特定例子。然而,可以理解,在處理查詢?nèi)蝿?wù)104的上下文中使用這樣的有向無環(huán)圖本身是本領(lǐng)域技術(shù)人員通常已知的。因此,這里除了在理解系統(tǒng)100的操作時有必要或有幫助,否則不詳細描述使用有向無環(huán)圖(或其他技術(shù))來表示和執(zhí)行查詢?nèi)蝿?wù)104的許多例子和版本。在圖1的例子中,如上所述,查詢處理器102可被配置來在查詢?nèi)蝿?wù)104之內(nèi)和之間分配核106,用于按照快速且高效的方式處理查詢?nèi)蝿?wù)104。例如,如所示的,操作器108 可包括一個或多個具體操作任務(wù)108A、108B,即,正經(jīng)處理的查詢的子任務(wù)。類似地,操作器 112可包括一個或多個操作任務(wù)112A、112B。在圖1的例子以及后續(xù)說明書中,操作器108和相應(yīng)的任務(wù)108A、108B在此被稱為寫操作器和/或(一個或多個)寫任務(wù),因為(在該例子中)操作器108和相關(guān)聯(lián)的任務(wù) 108A、108B被配置來向緩沖器110中寫數(shù)據(jù)。當(dāng)然,如前所述,盡管在圖1的例子中未明確例示,但當(dāng)操作器108先前可操作為從前一緩沖器和查詢?nèi)蝿?wù)104讀取數(shù)據(jù)時,操作器108 也可以是讀操作器,并且任務(wù)108A、108B可被當(dāng)作讀任務(wù)。類似地,操作器112可被稱為讀操作器,而任務(wù)112A、112B可被稱為讀任務(wù),這是由于在從緩沖器110讀取數(shù)據(jù)以進行進一步處理時的其(一個或多個)操作。當(dāng)然,就其結(jié)果被寫入查詢?nèi)蝿?wù)104的后續(xù)緩沖器而言,操作器112和任務(wù)112A、112B可被當(dāng)作寫操作/任務(wù)(同樣,盡管在圖1的例子中未特別例示)。然后,在操作中,查詢處理器102可通過向一個或多個操作器108、112和/或其相應(yīng)的任務(wù)108A、108B、112A、112B分配一個或多個核106,來在查詢?nèi)蝿?wù)104內(nèi)分配核106。 在圖1的特定的簡化例子中,核106被例示為包括僅僅三個核106A、106B、106C。當(dāng)然,核 106可包括大量核,并且特定核106A、106B、106C可表示更大組的核中目前被分配以針對緩沖器110來處理該操作器108、112的子集。換言之,核106的其他核目前可被分配給查詢?nèi)蝿?wù)104的其他操作器/緩沖器(圖 1中未示出)。例如,參照圖3和圖6-7詳細提供了在查詢?nèi)蝿?wù)104的不同操作器/緩沖器之內(nèi)和之間分配核106的子集的特定例子。作為例示了在分配核106時的潛在困難的極端例子,查詢處理器102理論上可能向?qū)懭蝿?wù)108A、108B之一或兩者分配核106A、106B,而讓106C空閑或分配給另一操作器/ 緩沖器(圖1中未示出)。然而,這樣的分配將會是不可行且低效的,因為寫任務(wù)108A、108B 會快速動作以將緩沖器110填充至其容量。一旦填滿,則由任務(wù)108A、108B對緩沖器110的寫入將必須至少暫時暫停,并且核106A、106B將必須被切換以執(zhí)行其他(一個或多個)任務(wù)或切換至空閑模式。相反,在另一極端,查詢處理器102理論上可將兩個核106A、106B均分配給讀任務(wù) 112A、112B。以此方式,操作器112可從緩沖器110快速讀取所有可用數(shù)據(jù)。然而,同樣地, 操作器112然后會將緩沖器110的當(dāng)前內(nèi)容快速減少至零,即,會清空該緩沖器110。在系統(tǒng)100的操作的其他更實際的例子中,查詢處理器102可向操作器108分配至少一個或多個核106,同時將一個或多個核106應(yīng)用于讀操作器112。以此方式,讀和寫可按并行或重疊的方式繼續(xù),以便更好地利用多個核106的可用性。例如,核106A可被應(yīng)用于寫任務(wù)108A,而核106B可被應(yīng)用于讀任務(wù)112A。在讀和寫操作以相同速度進行的假想場景中,則可以觀察到,緩沖器110將達到穩(wěn)定狀態(tài),其中以與增加另外的內(nèi)容近似相同的步調(diào)來移除該緩沖器的內(nèi)容。換言之,一旦達到穩(wěn)定狀態(tài),則該緩沖器的內(nèi)容將保持基本恒定。然而,實踐中,許多因素使得難以或不可能實現(xiàn)這種穩(wěn)定狀態(tài)解決方案來管理緩沖器110的內(nèi)容。例如,由于緩沖器110自身的物理結(jié)構(gòu)或操作方法,寫操作108的速度可能不同于讀操作112的速度。因此,在上面的例子中,核106A可被應(yīng)用于寫任務(wù)108A以使得按照第一速度將數(shù)據(jù)寫入緩沖器110,而核106B可被分配給讀任務(wù)112A以按照第二速度從緩沖器110讀取數(shù)據(jù)。如剛剛所述的,讀操作112的第二速度可能比寫操作108的第一速度更快。因此,隨著時間流逝,緩沖器110內(nèi)的數(shù)據(jù)將會存在凈減少,直到緩沖器110完全變空,如果沒有被另外管理以避免此結(jié)局的話。因而,在另一實施例中,查詢處理器102可按照被設(shè)計為以最優(yōu)方式管理緩沖器 110的使用的方式來分配核106。例如,如剛剛所述的,給定了操作108和112之間的速度差,則查詢處理器102可向操作器108分配兩個核,例如,可將核106A分配給寫任務(wù)108A并將核106B分配給寫任務(wù)108B。然后,核106C可被分配給讀操作器,例如,被分配給讀任務(wù) 112A、112B之一或兩者。因此,可通過向?qū)懖僮?08提供更多的資源(例如,更多核106), 來補償寫操作108相對于讀操作112的慢速度。然而,實踐中,資源的這種管理可能導(dǎo)致速度差的過度補償,從而在該例子中,寫操作108可能大體上引起緩沖器110的內(nèi)容隨著時間的凈增長,因為執(zhí)行讀操作器112的單個核106C可能不能按照匹配通過使用其余兩個核106A、106B的寫操作器108插入數(shù)據(jù)的速度的步調(diào)從緩沖器110中移除數(shù)據(jù)。因而,同樣地,如前所述,緩沖器110可能隨著時間變滿。由此,可以觀察到,可能難以按照在查詢?nèi)蝿?wù)104的內(nèi)容中保持緩沖器110的高效使用的方式來管理該系統(tǒng)100的資源。具體地,如上所述,在緩沖器110隨著時間可能經(jīng)受被存儲的數(shù)據(jù)的凈增長或減少的任一情形下,可能出現(xiàn)的是,需要查詢處理器102在寫操作器108和讀操作器112之間切換或重新定位一個或多個核106。例如,在由于使用特定數(shù)目的核106的寫操作器108的速度相對于使用相同或不同數(shù)目的核106的讀操作器112的速度的正凈差引起的在其中所包含的數(shù)據(jù)隨時間的凈增長而導(dǎo)致緩沖器110變滿的情況下,則查詢處理器102可能有必要將核106之一從寫操作器108重新分配到讀操作器112。例如,在上面的例子中,其中核106A、106B被分配給寫操作器108而核106C被分配給讀操作器112,緩沖器110可能隨著時間流逝而變滿,從而可能需要查詢處理器102將核106B從寫操作器108切換到讀操作器112。當(dāng)然,這樣的切換本身可能隨著時間流逝而導(dǎo)致相反的困難,即導(dǎo)致緩沖器110的內(nèi)容隨時間凈減少,以至于核106可能必須由查詢處理器102在操作器108、112之內(nèi)和之間連續(xù)地切換。如公知的,由于執(zhí)行(一個或多個)切換所需要的相關(guān)計算開銷,并且由于在整體數(shù)據(jù)處理時間中的相關(guān)增加,因此這樣的核切換通常是不期望的。例如,這樣的切換可能與關(guān)閉任務(wù)、取得新任務(wù)和啟動新任務(wù)有關(guān),它們可能需要與底層操作系統(tǒng)的相關(guān)通信、各種高速緩存(重新)分派和程序加載/初始化。圖1的系統(tǒng)100和在這里的相關(guān)描述提供用于最小化與在查詢?nèi)蝿?wù)之間切換核相關(guān)聯(lián)的這些困難的技術(shù),由此減少處理用于經(jīng)處理的特定量數(shù)據(jù)的給定查詢所需的時間量。圖1概念性地例示了緩沖器110的一定水平的內(nèi)容。具體地,在圖1中,緩沖器 Iio被例示為包括填充部分114(圖1中被示出為陰影標(biāo)記)和空白部分116。如上所述, 緩沖器110的填充部分114可能隨時間變化,并且取決于例如寫操作器108相對于讀操作器112的相對速度、被分配給寫操作器108和讀操作器112中給定的一個的核的數(shù)目或者本領(lǐng)域技術(shù)人員已知的各種其他因素,緩沖器110的填充部分114可能相對于空白部分116 凈增長或減少。
另外,在實踐中,將理解,緩沖器110可使用各種技術(shù)來在緩沖器110中分派、存儲和提取數(shù)據(jù)。例如,如下面參照圖4描述和例示的,緩沖器110可被分為各種存儲器塊,以便寫操作器108可操作來寫入在緩沖器內(nèi)在給定時間點時可用的指定空白塊中。取決于在先前的操作期間先前的數(shù)據(jù)如何被寫入或讀出緩沖器110,空白塊可被散布在緩沖器110 的存儲器的整個結(jié)構(gòu)內(nèi)。類似地,在給定時間點時,緩沖器110的這些塊可被數(shù)據(jù)填充,以便讀操作器112可能需要在開始執(zhí)行期望數(shù)據(jù)的實際讀取之前,首先識別緩沖器110內(nèi)的包含該期望數(shù)據(jù)的合適塊。換言之,當(dāng)事實上緩沖器110的填充部分114可更實際地被描述為散布在緩沖器 110的可用塊之內(nèi)和之間時,該填充部分114被概念性地例示為消耗了特定比例或部分的緩沖器110。類似地,空白部分116被示出為緩沖器110的單一或單個部分,但事實上可以表示被散布在緩沖器110內(nèi)的空白存儲器塊。本領(lǐng)域技術(shù)人員將清楚在這樣的緩沖器的結(jié)構(gòu)和用途的其他詳細類型,因而如這里更詳細描述的那樣,除非對理解系統(tǒng)100的操作有必要或有幫助。因此,可以觀察到,對于初始由操作器108輸入的給定的一批數(shù)據(jù),存在由操作器 108,112和緩沖器110完全處理這些數(shù)據(jù)所需的凈時間量。該時間的長度可能通常由寫操作器108的速度、讀操作器112的速度和在操作器108、112之內(nèi)和之間切換或重新分派核 106的切換時間來確定。其他因素可能影響處理給定的一批數(shù)據(jù)所需的時間。例如,可能出現(xiàn)的是,至少一個核106是空閑的并且不在系統(tǒng)100的操作的給定時間點時使用。在這種情況下,這種空閑時間可能影響處理數(shù)據(jù)所需的整體時間。然而,實踐中,可能在要處理的數(shù)據(jù)量相對于可用于執(zhí)行該處理的核的數(shù)目來說非常大的情形下實施該系統(tǒng)100。因此,可能不期望將任何核 106保持在空閑階段中,因此為了本說明書的目的,可忽略實質(zhì)上影響給定的一批數(shù)據(jù)的處理時間的上述空閑時間。類似地,為了本說明書的清楚和簡潔,忽略可能以相對微小的方式影響整體處理時間的其他偶然因素。如上所述,因此,系統(tǒng)100設(shè)法例如通過最優(yōu)地管理(例如,最小化)在操作器 108、112之內(nèi)和之間切換或重新分派核106的程度或需要,來減少處理給定的一批數(shù)據(jù)和以最優(yōu)或更高效的方式處理該數(shù)據(jù)所需的時間量。即,例如,通過減少如上所述影響處理給定的一批數(shù)據(jù)所需的整體時間的切換時間,則系統(tǒng)100可以可操作來相應(yīng)地減少整體處理時間,并在查詢?nèi)蝿?wù)104的操作期間提供緩沖器110的更高效的使用。具體地,例如,系統(tǒng)100可維持相對于緩沖器110而被定義的第一或低閾值& 118,以及第二或高閾值& 120。然后,在操作期間,查詢處理器102可執(zhí)行以保證緩沖器 110的填充部分114和空白部分116保持在閾值118、120之間。例如,當(dāng)由于寫操作器108 相比于讀操作器112的相對增加的速度而在填充部分114中存在凈增長時,則隨著時間流逝,填充部分114可達到高閾值& 120。此時,查詢處理器102可將核106從操作器108重新分配到操作器112。相反,如果由于讀操作器112相比于寫操作器108的相對速度而存在填充部分114的量的凈減少,則最終填充部分114可被減少到達到低閾值& 118的點,于是查詢處理器102可將核106從讀操作器112重新分配到寫操作器108。以此方式,如前所述,填充部分114和空白部分116可被維持在閾值118、120之間,并且可按照在執(zhí)行查詢?nèi)蝿?wù)104時最優(yōu)地利用可用資源的方式,來進行在操作器108、112之間切換核106。
更詳細地,如所示的,查詢處理器102可包括緩沖器監(jiān)視器122,其被配置來監(jiān)視緩沖器110的當(dāng)前填充水平。例如,緩沖器監(jiān)視器122可以確定填充部分114當(dāng)前處于相對于緩沖器110的整體容量的某一水平。閾值管理器1 可被配置來相對于閾值118、120 來比較緩沖器監(jiān)視器122的、描述緩沖器110的當(dāng)前填充水平的輸出。具體地,閾值比較器124A可被配置來進行下面更詳細描述的這種比較。如下面還要詳細描述的,閾值管理器 124可包括閾值調(diào)整器1MB,其被配置來隨時間調(diào)整閾值118、120,以便進一步優(yōu)化查詢處理器102的操作和執(zhí)行。基于閾值比較器124A比較緩沖器的內(nèi)容相對于閾值118、120的結(jié)果,速度控制器 1 可被配置來確定核106在操作器108、112之內(nèi)和之間的切換的類型和程度。例如,速度控制器1 可被配置來確定應(yīng)該在寫操作器108和讀操作器112之間的一個方向上或者另一個方向上重新分派的核106的默認數(shù)目。在其他例子中,速度控制器1 可進行更詳細的計算,以便確定要被切換的核的方式的數(shù)目。下面參照例如圖4更詳細地提供速度控制器126的例子。最終,工作負載管理器1 可被配置來基于速度控制器1 的輸出,來實際地執(zhí)行在操作器108、112之內(nèi)和之間重新分配核106。在另一示例實施例中,如這里所述,工作負載管理器1 還可以可操作來在除了在圖1的例子中所具體例示的操作器以外的其他操作器之內(nèi)和之間分配核106的子集。例如,如這里所述的,盡管在圖1的簡化例子中僅僅例示了一對讀/寫操作器和相關(guān)聯(lián)的緩沖器,但查詢?nèi)蝿?wù)104實際上可以包括大量讀/寫操作器和相關(guān)聯(lián)的緩沖器。另外,核106可包括數(shù)量比在圖1的簡化例子中例示的3個核106A、 106B、106C多得多的核。因此,可能有必要或可期望在圖1的系統(tǒng)100的更實際或詳細的示例實現(xiàn)方式的更多操作器/緩沖器之內(nèi)和之間分配該更大量的核106的各種子集。由此,工作負載管理器1 可被配置來按照系統(tǒng)100的具體用戶期望或有利的一個或多個方式,在查詢?nèi)蝿?wù)104的所有操作器/緩沖器之內(nèi)和之間分配核106的子集。例如,工作負載管理器1 可被配置來分配核106以使得查詢?nèi)蝿?wù)104的至少特定部分被盡可能快地處理(為了實現(xiàn)該目的,可能增加在操作器之間更頻繁地切換核106的代價或風(fēng)險)。在其他示例實現(xiàn)方式中,工作負載管理器1 可被配置來分配核106以便按照更有效地利用系統(tǒng)100的資源的方式來執(zhí)行查詢?nèi)蝿?wù)104(例如,可能以在提供最終查詢結(jié)果時整體速度降低的代價來使得核106的切換最少)。例如,下面參照圖3、圖6和圖7提供工作負載管理器128的操作的這些方面的其他討論和例子。在圖1中,可以理解,查詢處理器102通常與計算裝置有關(guān)或在計算裝置上執(zhí)行。 因此,計算裝置可表示超過一個計算裝置,并且將被理解為與已知硬件和軟件組件相關(guān)聯(lián), 因而無需在此詳細描述。雖然圖1中未具體示出,但計算裝置可包括或者可訪問例如任何關(guān)系數(shù)據(jù)庫和可由查詢?nèi)蝿?wù)104的操作器/任務(wù)訪問的相關(guān)組件(例如,數(shù)據(jù)庫管理系統(tǒng) (DBMS)、索引、表格和/或?qū)嶋H數(shù)據(jù))中的一個或多個。由此,可以理解,這里所使用的術(shù)語查詢通常實質(zhì)上可表示由查詢處理器102的計算裝置對于可用數(shù)據(jù)并行地執(zhí)行的任何作業(yè)(job)。根據(jù)并行計算的(一種或多種)領(lǐng)域?qū)⑶宄渌@樣的用途和例子,并且無需在此討論,因此應(yīng)該理解,包括所提供的例子僅僅為了例示和示例的目的,因而不應(yīng)該被當(dāng)作是限制性的。在圖1的例子中,查詢處理器102被例示為在計算裝置130上執(zhí)行,計算裝置130可以是被配備來執(zhí)行圖1的系統(tǒng)100的結(jié)構(gòu)和功能的任何傳統(tǒng)計算裝置。例如,計算裝置 130被例示為包括至少一個處理器132,其可被配置來從存儲介質(zhì)134讀取指令,以執(zhí)行查詢處理器102。該至少一個處理器132被例示為與核106分開,但可以理解,該至少一個處理器可包括核106之一。至少一個處理器132和存儲介質(zhì)被例示為在單個計算裝置110 上,但當(dāng)然可在可網(wǎng)絡(luò)連接在一起或者相互通信的多個計算裝置上執(zhí)行。核106和查詢?nèi)蝿?wù)104的元件108、110、112可存在于計算裝置110上和/或一個或多個其他計算裝置上或由計算裝置110和/或一個或多個其他計算裝置執(zhí)行。另外,雖然查詢處理器102的元件 122-128被例示為在計算裝置110上彼此分開,但可以理解,元件122-1 可在許多不同的配置中被實現(xiàn)。例如,元件122-128中的任兩個或更多可作為單個元件被執(zhí)行(例如,速度控制器1 可被執(zhí)行作為工作負載管理器128的一部分),而元件122-128中的任一個可進一步被分為多個子元件(例如,可以分割工作負載管理器1 用于對于單個緩沖器分配核106,以及用于在作為整體的查詢?nèi)蝿?wù)104的各個緩沖器中分配核106)。本領(lǐng)域技術(shù)人員將清楚各種其他示例實現(xiàn)方式和修改。圖2是例示了圖1的系統(tǒng)100的示例操作的流程圖200。在圖2的例子中,按順序例示了圖1的系統(tǒng)100的操作202-206。然而,可以理解,這樣的例示僅僅是為了示例的目的,并且無論如何不應(yīng)被考慮為限制性的。例如,可在流程圖200中包括附加的或替換的操作。此外,操作202-206可并行、重疊或按照與圖2的例子所示的不同順序執(zhí)行。在圖2中,可監(jiān)視在查詢?nèi)蝿?wù)的如下處理期間使用的緩沖器的緩沖器內(nèi)容,在查詢?nèi)蝿?wù)的該處理中查詢?nèi)蝿?wù)的寫任務(wù)將數(shù)據(jù)寫入緩沖器,并且查詢?nèi)蝿?wù)的讀任務(wù)從緩沖器讀取數(shù)據(jù),該緩沖器具有緩沖器容量002)。例如,緩沖器監(jiān)視器122可被配置來在由(一個或多個)寫任務(wù)108a和/或108b向其寫入的期間以及在由(一個或多個)讀任務(wù)11 和/或112b從其讀取的期間,相對于緩沖器100的空白存儲器塊來對填充的存儲器塊計數(shù)。下面參照例如圖4提供這樣的存儲器塊的結(jié)構(gòu)和用途的具體例子。可將緩沖器內(nèi)容與相對于緩沖器容量定義的低閾值和高閾值進行比較004)。例如,閾值管理器124、例如閾值比較器12 可被配置來將表示緩沖器內(nèi)容的填充存儲器塊與低閾值& 118和高閾值Rh 120進行比較。可相對于當(dāng)前執(zhí)行查詢?nèi)蝿?wù)的多個讀任務(wù)來控制多個寫任務(wù),從而將緩沖器內(nèi)容維持在低閾值和高閾值之間006)。例如,速度控制器1 可被配置來相對于來自緩沖器 110的存儲內(nèi)容的整體讀取速度,來調(diào)整向緩沖器110寫新內(nèi)容的整體寫入速度。例如,當(dāng)緩沖器內(nèi)容達到高閾值& 120時,速度控制器1 可被配置來指示工作負載管理器1 通過將已分配的(一個或多個)核106從一個或多個寫任務(wù)108a、108b切換到一個或多個讀任務(wù)llh、112b,來停止(deactive) 一個或多個寫任務(wù)108a、108b。相反,如上所述,當(dāng)緩沖器內(nèi)容達到低閾值& 118時,速度控制器1 可被配置來指示工作負載管理器1 通過將已分配的(一個或多個)核106從一個或多個讀任務(wù)llh、112b切換到一個或多個寫任務(wù)108a、108b,來停止該一個或多個讀任務(wù)lUa、112b。圖3是例示了圖1的查詢?nèi)蝿?wù)104的更詳細的例子的框圖,該圖1的查詢?nèi)蝿?wù)104 在圖3的例子中被例示為修改的查詢?nèi)蝿?wù)104’。如圖3所示,以及如圖1的上下文中所述, 在更大的查詢?nèi)蝿?wù)104’的上下文中,修改的查詢?nèi)蝿?wù)104’可包括更多讀/寫操作器和相關(guān)聯(lián)的緩沖器,并且查詢?nèi)蝿?wù)104’可被表示為有向無環(huán)圖(DAG),其引導(dǎo)查詢?nèi)蝿?wù)104’的整體次序和順序。具體地,如所示的,查詢?nèi)蝿?wù)104,包括由包括任務(wù)304A、304B、304C的讀操作器 304從其中讀取數(shù)據(jù)的緩沖器302。還由包括讀任務(wù)306A、306B的讀操作器306從緩沖器 302讀取數(shù)據(jù)。接著,操作器304用作針對第二緩沖器308的寫操作器,即,任務(wù)304A、304B、 304C將根據(jù)操作器304的數(shù)據(jù)寫入緩沖器308。類似地,操作器306用作針對緩沖器312的寫操作器,即,同樣地,任務(wù)306A、306B將根據(jù)操作器306的數(shù)據(jù)寫入緩沖器312。另外,操作器310從緩沖器308讀取數(shù)據(jù)。具體地,任務(wù)310A、310B從緩沖器308讀取數(shù)據(jù),用于根據(jù)操作器310的處理。此后,操作器310用作針對緩沖器312的寫操作器,以便任務(wù)310A、 310B將根據(jù)操作器310的數(shù)據(jù)寫入緩沖器312。然后,在圖3的例子中,例示了更詳細的查詢?nèi)蝿?wù),并且結(jié)合圖1的核106的核 106A、106B、106C來例示它。當(dāng)然,將理解,查詢?nèi)蝿?wù)104,還可以被進一步擴展為包括多得多的操作器對(和相關(guān)聯(lián)的緩沖器)。此外,當(dāng)然,可以在查詢?nèi)蝿?wù)104’的所有操作器之內(nèi)和之間分配比核106的核106A、106B、106C多得多的核。如上所述,工作負載管理器1 可被配置來在整個查詢?nèi)蝿?wù)104’之內(nèi)和之間分配核106。即,工作負載管理器1 可被配置來向各個操作器對和相關(guān)聯(lián)的緩沖器中的每一個 (或盡可能多的)分配一個或多個核。根據(jù)工作負載管理器1 被配置來實現(xiàn)核106的這種分配的方式,可為了處理查詢?nèi)蝿?wù)104’而實現(xiàn)不同目的。例如,工作負載管理器1 可被配置來按照優(yōu)化至少一個初始或部分結(jié)果被返回給用戶(即,被存儲在最終緩沖器312 中)的整體速度的方式來分配核106,其中這種實現(xiàn)方式可能經(jīng)受由于在各種任務(wù)之間頻繁切換核106的風(fēng)險增加而引起的效率的相對損失。在其他示例實現(xiàn)方式中,工作負載管理器1 可被配置來按照以最有效地利用核106、例如使得核106在任務(wù)之間的切換最少的方式來執(zhí)行查詢?nèi)蝿?wù)104’的方式,以返回的查詢結(jié)果的相對減小的整體速度為代價,來分配核。例如,在圖3中由虛線框314所示的流水線激勵模式中,工作負載管理器1 可被配置來按照在整個查詢?nèi)蝿?wù)104’上從查詢?nèi)蝿?wù)104’的開始到結(jié)束的分布方式來分配核 106,以便對于被分配了核的操作器的具體相關(guān)任務(wù)最大化或優(yōu)化操作。例如,如所示的,流水線激勵模式314包括將核分配給任務(wù)304C、306A和310B。通過將核106A、106B、106C分配給任務(wù)304C、306A和310B,可盡可能快地處理由這些任務(wù)處理的數(shù)據(jù),以便可盡可能快地將任務(wù)304C、306A和310B的這樣被處理的數(shù)據(jù)的最終結(jié)果寫入最終緩沖器312。然而, 可以理解,按此方式分配核106具有在查詢?nèi)蝿?wù)104’的整個長度上支出(disbuse)核資源的缺點,以至于單個操作器的任務(wù)作為整體(例如,操作器304)不會盡量快或高效地進行。相反,在另一操作模式中,工作負載管理器1 可執(zhí)行由圖3的例子中的第二虛線框316例示的局部激勵模式。在這一例子中,核106被關(guān)注和集中到具體區(qū)域(例如,在圖 3的例子中的單個操作器304)上,以便可盡可能快地全部完成與其相關(guān)聯(lián)的整體操作。例如,如局部激勵模式316所示,核106々、1068、106(可分別被分配給任務(wù)3044、3048、304(。 在這種情況下,與流水線激勵模式314的例子中出現(xiàn)的相比,操作器304的操作對其中所包括的所有任務(wù)可更快地全部完成(并且對于將向其分配的核106切換到不同緩沖器/操作器對的相關(guān)需要減少)。由此,可根據(jù)用戶對查詢?nèi)蝿?wù)104’的整體期望或偏好,來布置針對在給定查詢?nèi)蝿?wù)的各個操作器之內(nèi)和之間分配核106的子集的、工作負載管理器128的配置。下面參照例如圖6和圖7提供由工作負載管理器1 在查詢?nèi)蝿?wù)104’中這樣分配核的更詳細的例子。圖4是例示了圖1和圖3的上下文中的緩沖器110的結(jié)構(gòu)和功能的更詳細的示例實現(xiàn)方式的框圖。如上所述,參照圖1和圖2,系統(tǒng)100可被配置來管理緩沖器110的整個當(dāng)前內(nèi)容,以便使得在查詢?nèi)蝿?wù)的相關(guān)聯(lián)的操作器的各個操作器/任務(wù)之間的切換最少。S卩,如圖1中概念性例示的,這暗示著可以在給定時間點時填充某一百分比或比例的緩沖器110(例如,如圖1中的填充部分114),而緩沖器110的其他部分可以是空的(例如,如圖1的例子中的空白部分116所示)。如上所述,緩沖器110的實際物理結(jié)構(gòu)可包括緩沖器110的物理存儲器結(jié)構(gòu)被劃分為的各個塊或其他子部分。換言之,例如,緩沖器110的各個這些塊可被填充了從前一寫操作器寫入的數(shù)據(jù),而在緩沖器110上散布的緩沖器110 的其他塊可以是空的,因為已經(jīng)被相應(yīng)的后續(xù)讀操作器從中讀取了數(shù)據(jù)。換言之,填充的塊可被散布在緩沖器110內(nèi)的各個位置上,而空白塊可類似地被散布在整個緩沖器110上。通常,緩沖器110的這種結(jié)構(gòu)和功能本身是本領(lǐng)域所公知的,且是用于執(zhí)行實際寫入緩沖器110和從緩沖器110讀取的相關(guān)技術(shù)。如可以理解的,取決于寫入緩沖器110 和從緩沖器110讀取的數(shù)據(jù)的時間和量,緩沖器110中填充塊和空白塊相對于彼此的位置可以基本上是隨機的或不可隨時間預(yù)測的。在圖4的例子中,例示了根據(jù)上面在圖1-3的例子中描述的操作,各個寫任務(wù)402、 404、406可以可操作來將數(shù)據(jù)寫入緩沖器110,而各個讀任務(wù)408、410、412可被配置來從緩沖器110讀取數(shù)據(jù)。如參照圖1和圖2所述的,速度控制器1 可被配置來激活或停止寫任務(wù)402-406和/或讀任務(wù)408-412中的任一個或多個,以便將緩沖器110的當(dāng)前內(nèi)容水平維持在閾值118、120之間。這樣,如剛剛描述的,緩沖器110可以被理解為包括空白塊414、416、418,其中寫任務(wù)402、404、406可被配置來在速度控制器1 所允許的時間期間向空白塊414、416、418 寫入數(shù)據(jù)。類似地,讀任務(wù)408、410、412同樣可在速度控制器1 所允許的時間期間,從相應(yīng)的填充塊420、422、似4讀取數(shù)據(jù)。因為如所述的,緩沖器110的各種塊可能在任何給定時間點時被散布,所以可使用鏈接結(jié)構(gòu),以便相對于彼此以及相對于緩沖器110中的空白塊來定位填充塊。具體地,如所示的,空白塊鏈接器4 可被用來鏈接空白塊414、416、418。類似地,填充塊鏈接器4 可被配置來鏈接填充塊420、422、424。在緩沖器110的操作期間,并且如所述的,各個填充塊將被清空,而各個空白塊將被填充。因此,如所示的,在鏈接器4 和4 之間出現(xiàn)塊鏈接器移動,以便反映出各個塊的狀態(tài)的這種變化。例如,當(dāng)由寫任務(wù)來填充空白塊時,相關(guān)塊的指針應(yīng)該被附于填充塊鏈接器428的鏈接器表。當(dāng)填充塊被讀任務(wù)讀取至空白時,這樣的塊可被返回到空白塊鏈接器426的鏈接器表。由此,可以理解,在任何給定時間點,緩沖器110的多個填充塊可以彼此鏈接,并且可用于由后續(xù)讀操作器的相關(guān)讀任務(wù)從其中進行讀取。類似地,緩沖器110中的各個空白塊可被鏈接并且可用于由相關(guān)的寫操作器的各個寫任務(wù)向其寫入。作為整體,可以看到, 這樣鏈接的所有填充塊代表填充部分114,而所有的鏈接的空白塊代表緩沖器110的空白部分116,如圖1的例子中所例示的那樣。此外,可以看到,可通過相對于已定義的閾值118、120對緩沖器110的填充和/或空白塊的數(shù)目進行計數(shù),來執(zhí)行緩沖器監(jiān)視器122的相應(yīng)操作。在圖4的例子中,讀任務(wù)的速度可被表示為Δ Jn),而寫任務(wù)的速度可被表示為 Aw(Hi)。這樣,公式1可被用來表示緩沖器、例如緩沖器110的填充或清空的速度As As= Ar(n)-Aw(m)公式(1)在時間T,填充塊的數(shù)目可被表示為D(T),以便經(jīng)過執(zhí)行時間t,填充塊的數(shù)目變?yōu)镈(T+t),其由此替換地可被表示為公式O)D(T+t) = D (T)+ AsXt公式O)為了在時間間隔t上執(zhí)行,如這里所述的,閾值比較器12 可相對于閾值118、120 來確定緩沖器內(nèi)容。然后如這里所述的,速度控制器126可負責(zé)激活/停止任務(wù)。如所述的,多種技術(shù)可被用于確定可以增加/減少讀/寫速度的程度(例如,確定要激活/停止多少任務(wù),以及/或者有多少核要從寫任務(wù)重新分配為讀任務(wù),或反之)。公式3和公式4例示了用于關(guān)于這一點來確定閾值比較器12 和速度控制器126的執(zhí)行的(多個)示例技術(shù)
權(quán)利要求
1.一種包括能由至少一個處理器執(zhí)行的在計算機可讀介質(zhì)上記錄的指令的系統(tǒng),該系統(tǒng)包括緩沖器監(jiān)視器,被配置來使得所述至少一個處理器監(jiān)視在查詢?nèi)蝿?wù)在處理期間所使用的緩沖器的緩沖器內(nèi)容,其中所述查詢?nèi)蝿?wù)的寫任務(wù)將數(shù)據(jù)寫入所述緩沖器,以及所述查詢?nèi)蝿?wù)的讀任務(wù)從所述緩沖器讀取數(shù)據(jù),所述緩沖器具有緩沖器容量;閾值管理器,被配置來使得所述至少一個處理器將所述緩沖器內(nèi)容與相對于所述緩沖器容量而定義的低閾值和高閾值進行比較;以及速度控制器,被配置來使得所述至少一個處理器相對于當(dāng)前正執(zhí)行所述查詢?nèi)蝿?wù)的讀任務(wù)的數(shù)目來控制所述寫任務(wù)的數(shù)目,以由此將所述緩沖器內(nèi)容維持在所述低閾值和所述高閾值之間。
2.如權(quán)利要求1所述的系統(tǒng),其中所述緩沖監(jiān)視器被配置來使得所述至少一個處理器相對于所述緩沖器中的空白存儲器塊的數(shù)目對填充存儲器塊的數(shù)目進行計數(shù)。
3.如權(quán)利要求1所述的系統(tǒng),其中所述閾值管理器包括被配置來使得所述至少一個處理器確定所述緩沖器內(nèi)容是否低于所述低閾值或高于所述高閾值的閾值比較器。
4.如權(quán)利要求1所述的系統(tǒng),其中所述閾值管理器包括閾值調(diào)整器,被配置來使得所述至少一個處理器相對于所述寫任務(wù)的數(shù)目和/或所述讀任務(wù)的數(shù)目以及相對于所述緩沖器的空白和/或填充存儲器塊的數(shù)目來調(diào)整所述高閾值和低閾值。
5.如權(quán)利要求1所述的系統(tǒng),其中所述速度控制器被配置來使得工作負載管理器使得所述至少一個處理器通過重新分配處理寫任務(wù)和讀任務(wù)的核而相對于所述讀任務(wù)的數(shù)目來控制所述寫任務(wù)的數(shù)目。
6.如權(quán)利要求5所述的系統(tǒng),其中所述速度控制器被配置來使得所述工作負載管理器使得所述至少一個處理器在所述緩沖器內(nèi)容高于所述高閾值時,將核從至少一個寫任務(wù)分配到至少一個讀任務(wù),由此停止所述至少一個寫任務(wù)并由此激活所述至少一個讀任務(wù)。
7.如權(quán)利要求5所述的系統(tǒng),其中所述速度控制器被配置來使得所述工作負載管理器使得所述至少一個處理器在所述緩沖器內(nèi)容低于所述低閾值時,將核從至少一個讀任務(wù)分配到至少一個寫任務(wù),由此停止所述至少一個讀任務(wù)并由此激活所述至少一個寫任務(wù)。
8.如權(quán)利要求1所述的系統(tǒng),包括工作負載管理器,被配置來使得所述至少一個處理器在查詢?nèi)蝿?wù)的多個緩沖器和與其相關(guān)的寫和讀任務(wù)之間關(guān)聯(lián)。
9.如權(quán)利要求8所述的系統(tǒng),其中所述查詢?nèi)蝿?wù)包括至少一個緩沖器序列,以及其中所述工作負載管理器被配置來使得所述至少一個處理器實現(xiàn)流水線激勵模式,包括將來自所述可用核的核分配到與所述至少一個緩沖器序列的每個緩沖器相關(guān)聯(lián)的至少一個任務(wù)。
10.如權(quán)利要求8所述的系統(tǒng),其中所述查詢?nèi)蝿?wù)包括至少一個緩沖器序列,以及其中所述工作負載管理器被配置來使得所述至少一個處理器實現(xiàn)現(xiàn)局部激勵模式,包括將來自所述可用核的核分配到所述緩沖器序列的第一選擇緩沖器的任務(wù),直到達到用于實現(xiàn)所述第一選擇緩沖器的任務(wù)的最大數(shù)的核,然后將來自所述可用核的剩余處理器核分配到緩沖器序列的第二選擇緩沖器的任務(wù)。
11.如權(quán)利要求1所述的系統(tǒng),其中所述查詢?nèi)蝿?wù)被表示為有向無環(huán)圖,其中所述緩沖器是多個緩沖器之一,以及所述寫任務(wù)和所述讀任務(wù)被包括在多個任務(wù)中,以及其中所述多個緩沖器和所述多個任務(wù)是所述有向無環(huán)圖的節(jié)點。
12.一種由至少一個處理器實現(xiàn)的方法,所述方法包括使用所述至少一個處理器監(jiān)視在查詢?nèi)蝿?wù)在處理期間所使用的緩沖器的緩沖器內(nèi)容, 所述查詢?nèi)蝿?wù)的寫任務(wù)將數(shù)據(jù)寫入所述緩沖器,以及所述查詢?nèi)蝿?wù)的讀任務(wù)從所述緩沖器讀取數(shù)據(jù),所述緩沖器具有緩沖器容量;使用所述至少一個處理器將所述緩沖器內(nèi)容與相對于所述緩沖器容量而定義的低閾值和高閾值進行比較;以及使用所述至少一個處理器相對于當(dāng)前正執(zhí)行所述查詢?nèi)蝿?wù)的所述讀任務(wù)的數(shù)目來控制所述寫任務(wù)的數(shù)目,以由此將所述緩沖器內(nèi)容維持在所述低閾值和所述高閾值之間。
13.如權(quán)利要求12所述的方法,其中所述比較包括確定所述緩沖器內(nèi)容是否低于所述低閾值或高于所述高閾值。
14.如權(quán)利要求12所述的方法,包括相對于所述寫任務(wù)的數(shù)目和/或所述讀任務(wù)的數(shù)目以及相對于所述緩沖器的空白和/或填充存儲器塊的數(shù)目調(diào)整所述高閾值和低閾值。
15.如權(quán)利要求12所述的方法,所述控制包括通過重新分配處理寫任務(wù)和讀任務(wù)的核而相對于所述讀任務(wù)的數(shù)目來控制所述寫任務(wù)的數(shù)目。
16.如權(quán)利要求12所述的方法,包括在查詢?nèi)蝿?wù)的多個緩沖器和與其相關(guān)的寫和讀任務(wù)之間關(guān)聯(lián)。
17.一種計算機程序產(chǎn)品,所述計算機程序產(chǎn)品被有形地實施在計算機可讀存儲介質(zhì)上并且包括在被執(zhí)行時被配置來使得至少一個處理器進行如下步驟的指令監(jiān)視在查詢?nèi)蝿?wù)在處理期間所使用的緩沖器的緩沖器內(nèi)容,其中所述查詢?nèi)蝿?wù)的寫任務(wù)將數(shù)據(jù)寫入所述緩沖器,以及所述查詢?nèi)蝿?wù)的讀任務(wù)從所述緩沖器讀取數(shù)據(jù),所述緩沖器具有緩沖器容量;將所述緩沖器內(nèi)容與相對于所述緩沖器容量而定義的低閾值和高閾值進行比較;以及相對于當(dāng)前正執(zhí)行所述查詢?nèi)蝿?wù)的所述讀任務(wù)的數(shù)目來控制所述寫任務(wù)的數(shù)目,以由此將所述緩沖器內(nèi)容維持在所述低閾值和所述高閾值之間。
18.如權(quán)利要求17所述的計算機程序產(chǎn)品,其中所述指令在被執(zhí)行時使得所述至少一個處理器比較所述緩沖器內(nèi)容包括確定所述緩沖器內(nèi)容是否低于所述低閾值或高于所述高閾值。
19.如權(quán)利要求17所述的計算機程序產(chǎn)品,其中所述指令在被執(zhí)行時使得所述至少一個處理器通過重新分配處理寫任務(wù)和讀任務(wù)的核而相相對于所述讀任務(wù)的數(shù)目來控制所述寫任務(wù)的數(shù)目。
20.如權(quán)利要求17所述的計算機程序產(chǎn)品,其中所述指令在被執(zhí)行時還使得所述至少一個處理器在查詢?nèi)蝿?wù)的多個緩沖器和與其相關(guān)的寫和讀任務(wù)之間關(guān)聯(lián)。
全文摘要
一種系統(tǒng)可包括緩沖器監(jiān)視器,被配置來監(jiān)視在查詢?nèi)蝿?wù)在處理期間所使用的緩沖器的緩沖器內(nèi)容,其中查詢?nèi)蝿?wù)的寫任務(wù)將數(shù)據(jù)寫入緩沖器,以及查詢?nèi)蝿?wù)的讀任務(wù)從緩沖器讀取數(shù)據(jù),緩沖器具有緩沖器容量。系統(tǒng)可包括閾值管理器,被配置來將所述緩沖器內(nèi)容與相對于緩沖器容量而定義的低閾值和高閾值進行比較;以及速度控制器,被配置來相對于當(dāng)前正執(zhí)行查詢?nèi)蝿?wù)的讀任務(wù)的數(shù)目來控制寫任務(wù)的數(shù)目,以由此將緩沖器內(nèi)容維持在低閾值和高閾值之間。
文檔編號G06F9/50GK102298580SQ20101020572
公開日2011年12月28日 申請日期2010年6月22日 優(yōu)先權(quán)日2010年6月22日
發(fā)明者閆劍鋒, 黎文憲 申請人:Sap股份公司