本申請涉及通過將分區(qū)綁定到核心從而在內(nèi)存數(shù)據(jù)庫中擴展混合聯(lián)機事務(wù)處理/聯(lián)機分析處理的領(lǐng)域。本申請尤其涉及一種用于多核系統(tǒng)的內(nèi)存同步的系統(tǒng)。
背景技術(shù):
傳統(tǒng)上,需要同時服務(wù)于聯(lián)機事務(wù)處理(online-transaction-processing,簡稱oltp)和聯(lián)機分析處理(onlineanalyticalprocessing,簡稱olap)工作負(fù)載的數(shù)據(jù)庫系統(tǒng)是分離的,其中一個系統(tǒng)實時服務(wù)于oltp事務(wù)負(fù)載,另一個單獨的系統(tǒng)服務(wù)于在預(yù)先導(dǎo)入的數(shù)據(jù)集上運行的olap分析工作負(fù)載。這種設(shè)置有許多缺點:需要更多的物理資源,維護開銷,最重要的是妨礙了在oltp數(shù)據(jù)庫之上近實時地進行olap分析,因為必須要將數(shù)據(jù)從oltp批量導(dǎo)出并導(dǎo)入到olap系統(tǒng)。
利用內(nèi)存管理單元(memorymanagementunit,簡稱mmu)提供分析查詢的內(nèi)存快照的想法是,通過使單個數(shù)據(jù)庫同時服務(wù)于oltp和olap工作負(fù)載來部分解決該問題,但是這樣做嚴(yán)重受制于與操作系統(tǒng)內(nèi)核與底層硬件平臺之間的必要交互相關(guān)的,具體地,尤其是在呈現(xiàn)了大量計算單元(cpu核心)的多核平臺的情況下,與操作系統(tǒng)保持tlb緩存表項一致性的責(zé)任相關(guān)的可擴展性瓶頸。
us2013/0073513a1描述了用于維護混合oltp和olap數(shù)據(jù)庫的方法,該方法包括:執(zhí)行一個或多個oltp事務(wù);創(chuàng)建虛擬內(nèi)存快照;通過該虛擬內(nèi)存快照執(zhí)行一個或多個olap查詢。本文所描述的方法進一步包括:復(fù)制為響應(yīng)對數(shù)據(jù)對象的更新而存儲該數(shù)據(jù)對象所在的虛擬內(nèi)存頁面,由此,更新后的數(shù)據(jù)對象可以由oltp事務(wù)訪問,而未更新的數(shù)據(jù)對象仍可由olap查詢訪問。相應(yīng)地,本文描述的混合系統(tǒng)可通過硬件輔助的復(fù)制機制來同時處理oltp和olap,以保持事務(wù)數(shù)據(jù)的快照的一致性。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提高多核系統(tǒng)的內(nèi)存同步,特別是提供一種用于內(nèi)存數(shù)據(jù)庫中擴展混合oltp/olap的改進技術(shù),該內(nèi)存數(shù)據(jù)庫利用mmu給硬件輔助的虛擬內(nèi)存拍攝快照,即制作快照或控制數(shù)據(jù)版本。
該目的通過獨立權(quán)利要求的特征實現(xiàn)。結(jié)合從屬權(quán)利要求、說明書和附圖,具體實現(xiàn)形式顯而易見。
本發(fā)明直接解決了內(nèi)存數(shù)據(jù)庫中的混合oltp/olap的可擴展性問題,該內(nèi)存數(shù)據(jù)庫利用mmu給硬件輔助的虛擬內(nèi)存拍攝快照或控制數(shù)據(jù)版本。
根據(jù)第一方面,提供了一種用于多核系統(tǒng)的內(nèi)存同步的系統(tǒng),所述系統(tǒng)包括:分配模塊,用于向所述多核系統(tǒng)中的至少一個核心分配至少一個內(nèi)存分區(qū);映射模塊,用于:如果與分配給至少一個核心的內(nèi)存分區(qū)相關(guān)聯(lián)的頁表項被修改,通過向所述多核系統(tǒng)中的至少一個核心發(fā)送中斷,向所利用的多核系統(tǒng)提供轉(zhuǎn)換后備緩沖器終止的信息;接口模塊,用于從用戶空間提供訪問分配模塊的接口。
換言之,本發(fā)明通過呈現(xiàn)從操作系統(tǒng)內(nèi)核到數(shù)據(jù)庫的接口解決可擴展性的問題,通過該接口數(shù)據(jù)庫可以通知內(nèi)核關(guān)于內(nèi)存區(qū)域或內(nèi)存分區(qū)到特定的中央處理器(centralprocessingunit,簡稱cpu)核心的“綁定”。操作系統(tǒng)內(nèi)核基于數(shù)據(jù)庫中預(yù)先提供的信息有選擇性地廢止特定的轉(zhuǎn)換后備緩沖器(translationlookasidebuffer,簡稱tlb)和特定核心的表項(tlb終止),而不是向通過線程方式共享數(shù)據(jù)庫地址空間的所有核心“廣播”tlb終止。
本發(fā)明的另一優(yōu)點是,本發(fā)明有利地提供了通過向數(shù)據(jù)庫系統(tǒng)呈現(xiàn)tlb終止過程的隱式控制使任何基于mmu的快照方案在現(xiàn)代多核機器上進行擴展的方式。
例如,數(shù)據(jù)庫系統(tǒng),通過控制其事務(wù)(oltp)線程的放置,意識到哪些cpu核心/線程在哪部分的內(nèi)存(數(shù)據(jù)庫分區(qū))上運行。通過將此信息傳遞給內(nèi)核,數(shù)據(jù)庫隱式控制tlb終止過程,通過限制tlb終止,對于每個分區(qū),處理器之間的中斷ipi受限于一組選定的核心。這減輕了系統(tǒng)對在缺頁異常處理期間共享地址空間的所有可用內(nèi)核進行非常昂貴的基于ipi的tlb終止相關(guān)的過度開銷,并使用基于mmu的快照方案實現(xiàn)了系統(tǒng)的高度可擴展性。
本發(fā)明利用如下事實:為了具有更多選擇性的和定向性的tlb終止應(yīng)對寫時復(fù)制缺頁異常,作為內(nèi)存數(shù)據(jù)庫系統(tǒng)中的混合oltp/olap的一致快照機制,應(yīng)用或數(shù)據(jù)庫能夠維持oltp線程到內(nèi)存分區(qū)的綁定,并且將此信息提供給內(nèi)核。
在沒有從數(shù)據(jù)庫向操作系統(tǒng)內(nèi)核提供的此信息的情況下,內(nèi)核必須向共享地址空間的所有核心廣播tlb終止ipi,這會產(chǎn)生非常高的成本;或者可替代性地,操作系統(tǒng)內(nèi)核需要重新設(shè)計,以便跟蹤所有可用系統(tǒng)核心的頁面使用情況,這會產(chǎn)生很高的實施成本和運行成本。
本發(fā)明在內(nèi)存數(shù)據(jù)庫系統(tǒng)的上下文中有利地提供了基于mmu的快照的可擴展性。
本發(fā)明的基本構(gòu)思是實現(xiàn)采用基于mmu的快照機制的混合oltp/olap數(shù)據(jù)庫系統(tǒng)的高度可擴展性。這通過從操作系統(tǒng)內(nèi)核向用戶空間呈現(xiàn)tlb終止控制的方式實現(xiàn),這可能受數(shù)據(jù)庫系統(tǒng)的影響。
在基于mmu的快照方案(進行遲緩的寫時復(fù)制頁面共享)下,大批開銷來自于在寫時復(fù)制(copy-on-write,簡稱cow)缺頁異常處理期間進行的tlb終止ipi。
特別地,通過使數(shù)據(jù)庫控制哪些核心應(yīng)該接收地址空間的不同部分的tlb終止ipi,本發(fā)明有利地提供了作為內(nèi)存混合oltp/olap數(shù)據(jù)庫系統(tǒng)的快照機制實現(xiàn)的基于mmu的方法的可擴展性。
特別地,本發(fā)明有利地利用了該數(shù)據(jù)庫系統(tǒng)具有的可以由操作系統(tǒng)利用的知識或信息,以便大幅減少基于mmu的快照機制的本質(zhì)固有的tlb終止成本。
特別地,本發(fā)明有利地提供了一種為了在cow期間的tlb終止目的,數(shù)據(jù)庫系統(tǒng)分配內(nèi)存和/或分區(qū)到硬件核心的綁定,并確保進行事務(wù)(oltp)的線程在其分配的分區(qū)上運行的方法。
特別地,本發(fā)明有利地提供了一種為了在cow期間的tlb終止目的,通過新系統(tǒng)調(diào)用的方式將硬件核心到數(shù)據(jù)分區(qū)的綁定從數(shù)據(jù)庫傳遞到操作系統(tǒng)內(nèi)核的方式。
特別地,本發(fā)明有利地提供了一種操作系統(tǒng)內(nèi)核機制,在該機制中,對于cow缺頁異常處理期間所需的tlb終止,查詢數(shù)據(jù)庫預(yù)先提供的綁定,因此以選擇性方式僅針對綁定到故障頁面所屬的特定內(nèi)存的特定核心發(fā)出tlb終止ipi。
作為一個優(yōu)點,通過減少進行事務(wù)的線程的處理時間,提高oltp性能(就較低時延的響應(yīng)時間和吞吐量兩者而言)。
作為另一個優(yōu)點,當(dāng)cow缺頁異常發(fā)生時,系統(tǒng)在內(nèi)核中花費的時間顯著較少。此外,mmu/硬件輔助的快照機制(cow)會隨著不斷增加的處理核心數(shù)目進行擴展。
本發(fā)明所用的術(shù)語“寫時復(fù)制”可描述計算機編程中使用的優(yōu)化策略。寫時復(fù)制源于對以下內(nèi)容的理解:當(dāng)多個單獨的任務(wù)使用一些信息的最初相同的副本(即計算機內(nèi)存中存儲的數(shù)據(jù))時,將其視為它們可能偶爾需要修改的本地數(shù)據(jù),則沒有必要立即為每個任務(wù)創(chuàng)建該信息的單獨副本。
本發(fā)明使用的術(shù)語“內(nèi)存同步”可描述進行用于多核系統(tǒng)的內(nèi)存同步的同步機制的多核系統(tǒng)計算機中使用的過程。
本發(fā)明使用的術(shù)語“內(nèi)存管理單元(memorymanagementunit,簡稱mmu)”,有時稱為頁式內(nèi)存管理單元(pagedmemorymanagementunit,簡稱pmmu),可描述具有通過自身傳遞的所有內(nèi)存參考,主要執(zhí)行將虛擬內(nèi)存地址轉(zhuǎn)換為物理地址的計算機硬件單元。
本發(fā)明使用的術(shù)語“快照”或“拍攝快照”可描述快照,這是系統(tǒng)在特定時間點的狀態(tài)。該術(shù)語可以用作攝影的類比。該術(shù)語可以指一個系統(tǒng)的狀態(tài)的實際副本或某些系統(tǒng)提供的能力。
本發(fā)明使用的術(shù)語“處理器之間的中斷”可描述一種特殊類型的中斷,即如果中斷處理器要求來自其他處理器的動作,則多處理器系統(tǒng)中的一個處理器可以中斷另一個處理器。
根據(jù)第一方面,在所述系統(tǒng)的第一種可能的實現(xiàn)形式中,所述映射模塊用于在至少一個內(nèi)存分區(qū)的寫時復(fù)制頁面共享期間提供轉(zhuǎn)換后備緩沖器終止的信息。這有利地提供了使任何基于mmu的快照方案在多核機器上擴展的方式。
根據(jù)第一方面本身或者根據(jù)第一方面的第一種實現(xiàn)形式,在所述系統(tǒng)的第二種可能的實現(xiàn)形式中,所述接口模塊用于通過用于對所述至少一個內(nèi)存分區(qū)到所述至少一個核心的綁定進行控制的一組系統(tǒng)調(diào)用來向用戶空間提供訪問分配模塊的接口。這有利于數(shù)據(jù)庫或應(yīng)用意識到哪些cpu核心和/或線程在哪部分的內(nèi)存(數(shù)據(jù)庫分區(qū))上運行。
根據(jù)第一方面本身或者根據(jù)第一方面的任一前述實現(xiàn)形式,在所述系統(tǒng)的第三種可能的實現(xiàn)形式中,所述接口模塊用于通過該組系統(tǒng)調(diào)用所接收的信息來適應(yīng)轉(zhuǎn)換后備緩沖器終止。這有利于進行更具有選擇性和定向性的tlb-終止。
根據(jù)第二方面,本發(fā)明涉及一種數(shù)據(jù)庫,包括:具有至少一個核心的多核系統(tǒng);具有至少一個內(nèi)存分區(qū)的內(nèi)存系統(tǒng);用于多核系統(tǒng)的內(nèi)存同步的系統(tǒng),所述系統(tǒng)包括:分配模塊,用于向所述多核系統(tǒng)中的至少一個核心分配至少一個內(nèi)存分區(qū);映射模塊,用于:如果與分配給至少一個核心的內(nèi)存分區(qū)相關(guān)聯(lián)的頁表項被修改,通過向所述多核系統(tǒng)中的至少一個核心發(fā)送中斷,向多核系統(tǒng)提供轉(zhuǎn)換后備緩沖器終止的信息;接口模塊,用于從用戶空間提供訪問分配模塊的接口。
根據(jù)第二方面,在所述數(shù)據(jù)庫的第一種可能的實現(xiàn)形式中,所述數(shù)據(jù)庫是一種混合聯(lián)機事務(wù)處理和聯(lián)機分析處理數(shù)據(jù)庫。這有利于在相同內(nèi)存數(shù)據(jù)上進行oltp事務(wù)和olap分析。
根據(jù)第二方面或者根據(jù)第二方面的任一前述實現(xiàn)形式,在所述數(shù)據(jù)庫的第二種可能的實現(xiàn)形式中,所述數(shù)據(jù)庫用于通過確保至少一個聯(lián)機事務(wù)處理線程在一個或多個所述至少一個內(nèi)存分區(qū)上運行以進行聯(lián)機事務(wù)處理。這有利地提供了一個高效的多處理方法,并提高了它們之間分配任務(wù)的效率。
根據(jù)第二方面或者根據(jù)第二方面的任一前述實現(xiàn)形式,在所述數(shù)據(jù)庫的第三種可能的實現(xiàn)形式中,啟用所述數(shù)據(jù)庫,以通過用于指示所述至少一個核心中的哪一個與所述至少一個內(nèi)存分區(qū)中的哪一個進行綁定的數(shù)據(jù)結(jié)構(gòu),對所述轉(zhuǎn)換后備緩沖器終止進行受控調(diào)度。這進一步改進了多核系統(tǒng)的多個并發(fā)進程的執(zhí)行。
根據(jù)第二方面或者根據(jù)第二方面的任一前述實現(xiàn)形式,在所述數(shù)據(jù)庫的第四種可能的實現(xiàn)形式中,所述接口模塊用于發(fā)送所述至少一個內(nèi)存分區(qū)到所述至少一個核心的綁定。這有利于數(shù)據(jù)庫或應(yīng)用意識到哪些cpu核心/線程在哪部分的內(nèi)存(數(shù)據(jù)庫分區(qū))上運行。
根據(jù)第二方面的第四種可能的實現(xiàn)形式,在所述數(shù)據(jù)庫的第五種可能的實現(xiàn)形式中,所述接口模塊用于通過該組系統(tǒng)調(diào)用所接收的信息來適應(yīng)轉(zhuǎn)換后備緩沖器終止。這有利于進行更具有選擇性和定向性的tlb-終止。
根據(jù)第三方面,本發(fā)明涉及一種用于多核系統(tǒng)的內(nèi)存同步的方法,所述方法包括:通過分配模塊向所述多核系統(tǒng)中的至少一個核心分配至少一個內(nèi)存分區(qū);如果與分配給至少一個核心的內(nèi)存分區(qū)相關(guān)聯(lián)的頁表項被修改,通過向所述多核系統(tǒng)中的至少一個核心發(fā)送中斷,通過映射模塊向所述多核系統(tǒng)提供轉(zhuǎn)換后備緩沖器終止;通過接口模塊向用戶空間提供訪問分配模塊的接口。
根據(jù)第三方面,在所述方法的第一種可能的實現(xiàn)形式中,提供所述轉(zhuǎn)換后備緩沖器終止的步驟在至少一個內(nèi)存分區(qū)的寫時復(fù)制頁面共享期間進行。這有利地提供了使任何基于mmu的快照方案在多核機器上擴展的方式。
根據(jù)第三方面或者根據(jù)第三方面所述方法的第一種可能的實現(xiàn)形式,在所述方法的第二種可能的實現(xiàn)形式中,提供所述轉(zhuǎn)換后備緩沖器終止的步驟通過用于對所述至少一個內(nèi)存分區(qū)到所述至少一個核心的綁定進行控制的一組系統(tǒng)調(diào)用進行。這有利于數(shù)據(jù)庫或應(yīng)用意識到哪些cpu核心和/或線程在哪部分的內(nèi)存(數(shù)據(jù)庫分區(qū))上運行。
根據(jù)第三方面本身或者根據(jù)第三方面的任一前述實現(xiàn)形式,在所述方法的第三種可能的實現(xiàn)形式中,所述轉(zhuǎn)換后備緩沖器終止通過該組系統(tǒng)調(diào)用所接收的信息來適應(yīng)。這有利于進行更具有選擇性和定向性的tlb-終止。
根據(jù)第四方面,本發(fā)明涉及一種計算機程序,包括:程序代碼,用于當(dāng)所述計算機程序在計算機上運行時執(zhí)行根據(jù)第三方面的任一前述實現(xiàn)形式所述的方法。
本文描述的方法,系統(tǒng)和設(shè)備可以作為數(shù)字信號處理器(digitalsignalprocessor,簡稱dsp),微控制器或任何其它側(cè)處理器中的軟件得以實現(xiàn),或作為專用集成電路(applicationspecificintegratedcircuit,簡稱asic)或現(xiàn)場可編程門陣列中的硬件電路得以實現(xiàn),所述現(xiàn)場可編程門陣列是設(shè)計用于生產(chǎn)后由客戶或設(shè)計者配置的集成電路——因此是“現(xiàn)場可編程的”。
本發(fā)明能在數(shù)字電子電路或者計算機硬件、固件和軟件或其組合中實現(xiàn),例如,在常規(guī)移動設(shè)備的可用硬件或者專門用于處理此處描述的方法的新硬件中實現(xiàn)。
結(jié)合以下描述的實施例,本發(fā)明的這些和其他方面將會顯而易見、清晰易懂。結(jié)合以下示意性附圖更清楚地理解對于本發(fā)明及其伴隨的優(yōu)點的更完整的評價。
附圖說明
本發(fā)明的實施例將結(jié)合以下附圖進行描述,其中:
圖1示出了本發(fā)明一實施例提供的用于多核系統(tǒng)的內(nèi)存同步的系統(tǒng)的示意圖;
圖2示出了本發(fā)明一實施例提供的包括用于多核系統(tǒng)的內(nèi)存同步的系統(tǒng)的數(shù)據(jù)庫的示意圖;
圖3示出了本發(fā)明一實施例提供的用于多核系統(tǒng)的內(nèi)存同步的方法的流程示意圖;
圖4示出了本發(fā)明一實施例提供的向共享父地址空間的所有硬件處理核心發(fā)出tlb終止ipi的操作系統(tǒng)內(nèi)核的示意圖;
圖5示出了本發(fā)明一實施例提供的在cow缺頁異常處理期間的操作系統(tǒng)內(nèi)核的示意圖。
具體實施方式
在相關(guān)附圖中,相同標(biāo)號表示相同或至少等效元件、部件、單元或步驟。另外,需要說明的是,并不繪制所有附圖。
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述。
顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
圖1示出了本發(fā)明一實施例提供的用于多核系統(tǒng)的內(nèi)存同步的系統(tǒng)的示意圖。
圖1示出了用于多核系統(tǒng)1000中的內(nèi)存同步的系統(tǒng)100的實施例,該系統(tǒng)100包括:分配模塊10,映射模塊20和接口模塊30。
分配模塊10可用于向所述多核系統(tǒng)1000中的至少一個核心1010-1,...,1010-n分配至少一個內(nèi)存分區(qū)200-1,...,200-n。
映射模塊20可用于:如果與分配給至少一個核心1010-1,...,1010-n的內(nèi)存分區(qū)200-1,...,200-n相關(guān)聯(lián)的頁表項被修改,通過向所述多核系統(tǒng)1000中的至少一個核心1010-1,...,1010-n發(fā)送中斷,向所利用的多核系統(tǒng)1000提供轉(zhuǎn)換后備緩沖器終止的信息。
映射模塊20可以提供將在tlb終止期間由操作系統(tǒng)內(nèi)核3000使用的映射信息,進行tlb終止。
接口模塊30可用于從用戶空間提供訪問分配模塊10的接口。
圖2示出了本發(fā)明一實施例提供的包括用于多核系統(tǒng)的內(nèi)存同步的系統(tǒng)的數(shù)據(jù)庫的示意圖。
圖2示出了數(shù)據(jù)庫2000的示意圖,該數(shù)據(jù)庫2000包括具有至少一個核心1010-1,...,1010-n的多核系統(tǒng)1000;具有至少一個內(nèi)存分區(qū)200-1,...,200-n的內(nèi)存系統(tǒng)200;用于多核系統(tǒng)1000的內(nèi)存同步的系統(tǒng)100。
系統(tǒng)100可以包括分配模塊10,映射模塊20和接口模塊30。
圖3示出了本發(fā)明一實施例提供的用于多核系統(tǒng)的內(nèi)存同步的方法的流程示意圖。
在該方法的第一步驟中,進行通過分配模塊10向所述多核系統(tǒng)1000中的至少一個核心1010-1,...,1010-n分配s1至少一個內(nèi)存分區(qū)200-1,...,200-n。
在該方法的第二步驟中,進行通過映射模塊20向所述多核系統(tǒng)1000提供s2轉(zhuǎn)換后備緩沖器終止。
在該方法的第三步驟中,如果與分配給至少一個核心1010-1,...,1010-n的內(nèi)存分區(qū)200-1,...,200-n相關(guān)聯(lián)的頁表項被修改,進行向所述多核系統(tǒng)1000中的至少一個核心1010-1,...,1010-n發(fā)送s3中斷。
在該方法的第四步驟中,進行通過接口模塊30向用戶空間提供s4訪問分配模塊10的接口。
圖4示出了本發(fā)明一實施例提供的向共享父地址空間的所有硬件處理核心發(fā)出tlb終止ipi的操作系統(tǒng)內(nèi)核的示意圖。
圖4示出了當(dāng)oltp操作嘗試更新內(nèi)存時向共享父地址空間的所有硬件處理核心發(fā)出tlb終止ipi的操作系統(tǒng)內(nèi)核3000。這種情況發(fā)生在由操作系統(tǒng)進行的cow缺頁異常處理期間,是由硬件mmu的保護單元產(chǎn)生的異常引起的。
根據(jù)本發(fā)明的示例性實施例,實現(xiàn)方案可以包括對操作系統(tǒng)內(nèi)核3000的修改或增強,以便為了tlb終止目的,向?qū)?nèi)存分區(qū)到特定cpu核心的綁定進行控制的用戶空間/數(shù)據(jù)庫應(yīng)用呈現(xiàn)所需的接口(例如,通過向所述操作系統(tǒng)內(nèi)核引入一組新的系統(tǒng)調(diào)用)。
另一個優(yōu)點是,通過相應(yīng)增強涉及寫時復(fù)制頁面的缺頁異常期間的相關(guān)操作系統(tǒng)內(nèi)核3000的tlb終止功能,以便查詢已經(jīng)通過新的一組系統(tǒng)調(diào)用從數(shù)據(jù)庫2000傳遞到操作系統(tǒng)內(nèi)核3000的信息。
此外,通過確保每個oltp線程在一個或多個內(nèi)存分區(qū)上運行,并且通過新的系統(tǒng)調(diào)用的方式向內(nèi)核3000傳送該信息,改善了數(shù)據(jù)庫2000對該機制的利用。
根據(jù)本發(fā)明的示例性實施例,如圖4所示,混合oltp/olap內(nèi)存數(shù)據(jù)庫2000使用基于mmu的cow快照機制的場景中,當(dāng)oltp事務(wù)嘗試更新當(dāng)前正在進行快照拍攝的內(nèi)存的的任一部分時(cow缺頁異常處理期間),操作系統(tǒng)內(nèi)核3000必然通過ipi向通過線程方式共享父地址空間的所有硬件處理核心1010-1,...,1010-n廣播tlb終止請求。
根據(jù)本發(fā)明的示例性實施例,可以安裝tlb終止ipi的受控調(diào)度,這受用戶空間的影響。數(shù)據(jù)庫/應(yīng)用負(fù)責(zé)減少通過一組新引入的系統(tǒng)調(diào)用的方式定期(或按需)向內(nèi)核提供受限制的cpu掩碼來接收ipi的該組核心1010-1,...,1010-n的數(shù)量。
根據(jù)本發(fā)明的示例性實施例,cpu掩碼是一種指示了多核系統(tǒng)1000中的哪些cpu核心1010-1,...,1010-n應(yīng)包括在該綁定中,以及哪些應(yīng)不包括在該綁定中的數(shù)據(jù)結(jié)構(gòu)。修改內(nèi)核失效相關(guān)功能,以利用提供的cpu掩碼在cow缺頁異常期間有選擇性地調(diào)度ipi。
根據(jù)本發(fā)明的示例性實施例,數(shù)據(jù)庫2000或任何應(yīng)用還負(fù)責(zé)通過限制其在相應(yīng)的內(nèi)存區(qū)域上的操作和綁定到該區(qū)域的特定核心1010-1,...,1010-n的操作,確保其用戶空間線程(進行oltp事務(wù))遵守已傳遞給內(nèi)核3000的綁定。
控制tlb-失效ipi的系統(tǒng)調(diào)用通過指定其起始虛擬內(nèi)存地址所識別的內(nèi)存塊,并通過提供cpu掩碼,識別多核系統(tǒng)1000中哪些核心1010-1,...,1010-n應(yīng)該在內(nèi)存的特定塊中發(fā)生cow缺頁異常時接收tlb終止ipi。
根據(jù)本發(fā)明的示例性實施例,內(nèi)存塊是由操作系統(tǒng)自動推斷出來的(從用戶空間的角度看,沒有必要提供地址長度對),因為操作系統(tǒng)內(nèi)部保持對所分配的區(qū)域的跟蹤,并且可以很容易地定位所提供的虛擬內(nèi)存地址所屬的包含內(nèi)存塊。
例如,下面的系統(tǒng)調(diào)用可以引入到操作系統(tǒng)內(nèi)核:
·mem_region_set_cpumask(void*addr,cpumask_t*cpumask);
·mem_region_get_cpumask(void*addr,cpumask_t*cpumask);
內(nèi)部實現(xiàn)通過查詢每個進程的內(nèi)核內(nèi)部內(nèi)存分配簿記結(jié)構(gòu),定位所提供的虛擬內(nèi)存地址(簡稱addr)所屬的包含內(nèi)存區(qū)域。
根據(jù)本發(fā)明的示例性實施例,也增強了對應(yīng)于所分配的內(nèi)存塊的內(nèi)核內(nèi)部結(jié)構(gòu),以便存儲系統(tǒng)調(diào)用提供的cpu掩碼結(jié)構(gòu)。
根據(jù)本發(fā)明的示例性實施例,定位所述包含內(nèi)存區(qū)域的特定結(jié)構(gòu)之后,系統(tǒng)調(diào)用分別對于mem_region_set_cpumask(和mem_region_get_cpumask),將cpu掩碼從用戶空間內(nèi)存復(fù)制到內(nèi)核空間內(nèi)存(或從內(nèi)核空間復(fù)制到用戶空間)。在mem_region_set_cpumask的情況下,cpu掩碼在內(nèi)核空間復(fù)制并在標(biāo)識所分配的內(nèi)存塊的結(jié)構(gòu)中存儲。
圖5示出了本發(fā)明一實施例提供的在cow缺頁異常處理期間的操作系統(tǒng)內(nèi)核的示意圖。
圖5示出的操作系統(tǒng)內(nèi)核3000在cow缺頁異常處理期間可以利用數(shù)據(jù)庫2000早先提供(通過一組新的系統(tǒng)調(diào)用)的綁定信息,以便有選擇性地發(fā)出,而不是向共享地址空間的每個可用核心1010-1,...,1010-n廣播tlb終止ipi。
根據(jù)本發(fā)明的示例性實施例,在寫時復(fù)制缺頁異常處理期間,內(nèi)核3000有足夠的信息(已處理的硬件異常是提供出錯的地址),以便定位包含內(nèi)存區(qū)域,并獲得與該區(qū)域相關(guān)聯(lián)的cpu掩碼。
根據(jù)本發(fā)明的示例性實施例,如圖5所示,內(nèi)核3000可以隨后使用cpu掩碼,以便有選擇性地僅朝向相應(yīng)cpu掩碼指示的核心1010-1,...,1010-n發(fā)出tlb終止ipi。
默認(rèn)情況下,如果數(shù)據(jù)庫沒有提供cpu掩碼,操作系統(tǒng)內(nèi)核通過向共享地址空間的所有核心1010-1,...,1010-n廣播ipi來處理tlb終止,假設(shè)用戶空間/數(shù)據(jù)庫沒有提供信息可用于縮小在cow缺頁異常期間接收tlb終止的該組核心1010-1,...,1010-n的數(shù)量。
根據(jù)本發(fā)明的示例性實施例,在應(yīng)用/數(shù)據(jù)庫具有提供的cpu掩碼之后需要通過相關(guān)的系統(tǒng)調(diào)用恢復(fù)到“默認(rèn)”操作系統(tǒng)行為的情況下,可以提供“空”cpu掩碼以便恢復(fù)默認(rèn)行為。
該參考實現(xiàn)方案僅用作說明目的。相同的方案可以通過數(shù)據(jù)庫/應(yīng)用到操作系統(tǒng)內(nèi)核3000的不同種類的接口和語義來實現(xiàn)。
根據(jù)本發(fā)明的示例性實施例,可以增強內(nèi)存管理相關(guān)的操作系統(tǒng)內(nèi)核調(diào)用(例如mmap或新的系統(tǒng)調(diào)用),以便容納指示cpu掩碼(即內(nèi)存區(qū)域到一組處理核心1010-1,...,1010-n的綁定)的參數(shù)。
另一個例子是對現(xiàn)有操作系統(tǒng)內(nèi)核調(diào)用(例如mmap)的修改和擴展,為了tlb終止ipi目的,引入了隱式指示要通過調(diào)用分配的內(nèi)存區(qū)域的應(yīng)綁定到引發(fā)系統(tǒng)調(diào)用的cpu(如分配內(nèi)存區(qū)域的線程的cpu)的新標(biāo)志(例如map_bind)。
盡管是參考實現(xiàn)方案,但是提供了更多的靈活性,因為允許內(nèi)存區(qū)域到處理內(nèi)核1010-1,...,1010-n的顯式綁定和貫穿數(shù)據(jù)庫系統(tǒng)2000整個運行時間的綁定修改。
本發(fā)明還支持包含計算機可執(zhí)行代碼或計算機可執(zhí)行指令的計算機程序產(chǎn)品,這些計算機可執(zhí)行代碼或計算機可執(zhí)行指令在執(zhí)行時使得至少一臺計算機執(zhí)行本文所述的執(zhí)行及計算步驟。
通過以上啟示,對于本領(lǐng)域技術(shù)人員來說,許多替代產(chǎn)品、修改及變體是顯而易見的。當(dāng)然,所屬領(lǐng)域的技術(shù)人員容易意識到除本文所述的應(yīng)用之外,還存在本發(fā)明的眾多其它應(yīng)用。
雖然已參考一個或多個特定實施例描述了本發(fā)明,但所屬領(lǐng)域的技術(shù)人員將認(rèn)識到在不偏離本發(fā)明的范圍的前提下,仍可對本發(fā)明作出許多改變。因此,應(yīng)理解,只要是在所附權(quán)利要求書及其等效文句的范圍內(nèi),可以用不同于本文具體描述的方式來實踐本發(fā)明。
在權(quán)利要求書中,詞語“包括”不排除其它元素或步驟,不定冠詞“一”不排除多個。單個處理器或其它單元可以完成權(quán)利要求中描述的幾個器件的功能。
在僅憑某些措施被記載在相互不同的從屬權(quán)利要求書中這個單純的事實并不意味著這些措施的結(jié)合不能被有效地使用。計算機程序可存儲或分發(fā)到合適的介質(zhì)上,例如與其它硬件一起或者作為其它硬件的部分提供的光存儲介質(zhì)或者固態(tài)介質(zhì),還可以以其它形式例如通過因特網(wǎng)或者其它有線或無線電信系統(tǒng)分發(fā)。