国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于rdma和htm的分布式并發(fā)控制方法

      文檔序號(hào):9646479閱讀:514來(lái)源:國(guó)知局
      基于rdma和htm的分布式并發(fā)控制方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及分布式計(jì)算和多核計(jì)算技術(shù)領(lǐng)域,具體地,涉及分布式多核內(nèi)存計(jì)算中對(duì)于共享內(nèi)存數(shù)據(jù)的并發(fā)控制方法。
      【背景技術(shù)】
      [0002]分布式多核的并發(fā)內(nèi)存計(jì)算的并發(fā)控制是現(xiàn)代計(jì)算機(jī)的重要特質(zhì),可以方便開發(fā)人員推算程序的正確性,并且直接關(guān)系到應(yīng)用的執(zhí)行效率。現(xiàn)有的解決方案主要有軟件的方法,比如二階段鎖和樂(lè)觀并發(fā)控制。然而這些方法在多核內(nèi)存計(jì)算下和分布式計(jì)算下有比較大的開銷。二階段鎖對(duì)每個(gè)數(shù)據(jù)的操作有很大的開銷,而樂(lè)觀并發(fā)控制在分布式環(huán)境下有多輪網(wǎng)絡(luò)通信的開銷。
      [0003]硬件事務(wù)性內(nèi)存HTM (Hardware Transact1nal Memory)是新的硬件技術(shù),直接由處理器提供執(zhí)行程序時(shí)對(duì)共享內(nèi)存數(shù)據(jù)的并發(fā)控制,具有非常低的開銷。然而硬件事務(wù)性內(nèi)存只能在單機(jī)中使用。HTM提供XBEGIN操作讓處理器進(jìn)入HTM模式,使用XAB0RT中斷這次執(zhí)行,并且將內(nèi)存狀態(tài)退回到調(diào)用XBEGIN前的狀態(tài)后再次進(jìn)入HTM模式在此執(zhí)行之后的程序,使用XEND退出HTM執(zhí)行模式。
      [0004]遠(yuǎn)程內(nèi)存直接訪問(wèn)RDMA (Remote Direct Memory Access)是新的網(wǎng)絡(luò)通信技術(shù),直接由網(wǎng)卡來(lái)對(duì)遠(yuǎn)端機(jī)器的內(nèi)存進(jìn)行操作,擁有非常高的吞吐量和低延遲的特性。然而RDMA提供的對(duì)遠(yuǎn)端機(jī)器內(nèi)存操作的方法十分有限,主要有讀,寫和原子比較再替換操作。這對(duì)如何利用RDMA操作來(lái)進(jìn)行分布式并發(fā)控制帶來(lái)了挑戰(zhàn)。
      [0005]因此,如何利用新的硬件技術(shù)如HTM何RDMA,合理的設(shè)計(jì)軟件協(xié)議,減少分布式內(nèi)存計(jì)算中并發(fā)控制的開銷,提升應(yīng)用程序的性能和系統(tǒng)機(jī)器的資源利用率,實(shí)已成為本領(lǐng)域技術(shù)人員亟待解決的技術(shù)難題。

      【發(fā)明內(nèi)容】

      [0006]針對(duì)現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種基于RDMA和HTM的分布式并發(fā)控制方法。
      [0007]根據(jù)本發(fā)明提供的基于RDMA和HTM的分布式并發(fā)控制方法,包括如下步驟:
      [0008]步驟1:根據(jù)程序需要訪問(wèn)的數(shù)據(jù)選擇執(zhí)行服務(wù)器;
      [0009]步驟2:通過(guò)選定的執(zhí)行服務(wù)器獲取程序需要訪問(wèn)的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行保護(hù);
      [0010]步驟3:讀取全部數(shù)據(jù)并緩存至執(zhí)行服務(wù)器后,在HTM中執(zhí)行程序。
      [0011]優(yōu)選地,所述步驟1包括:根據(jù)程序需要訪問(wèn)的數(shù)據(jù)集合得出哪些服務(wù)器中包含需要訪問(wèn)的數(shù)據(jù),并根據(jù)這些服務(wù)器分別擁有的事務(wù)數(shù)據(jù)的的條目數(shù)量,選擇包含事務(wù)所要訪問(wèn)的條目的服務(wù)器作為執(zhí)行服務(wù)器來(lái)執(zhí)行程序。
      [0012]優(yōu)選地,所述步驟2包括:
      [0013]步驟2.1:獲取程序需要訪問(wèn)的遠(yuǎn)端數(shù)據(jù),并對(duì)遠(yuǎn)端數(shù)據(jù)進(jìn)行保護(hù),即使得遠(yuǎn)端數(shù)據(jù)在程序結(jié)束前不會(huì)被其他有沖突的程序訪問(wèn)到;
      [0014]步驟2.2:在程序開始執(zhí)行前,執(zhí)行服務(wù)器通過(guò)分布式內(nèi)存鍵值數(shù)據(jù)庫(kù)找到程序的遠(yuǎn)端數(shù)據(jù)在其他服務(wù)器的內(nèi)存位置,若遠(yuǎn)端數(shù)據(jù)是需要修改的數(shù)據(jù)則使用RDMA原子指令將遠(yuǎn)端數(shù)據(jù)所在的其它服務(wù)器的服務(wù)器狀態(tài)設(shè)置為上鎖狀態(tài),否則將所述執(zhí)行服務(wù)器的數(shù)據(jù)設(shè)一個(gè)機(jī)器時(shí)間來(lái)作為時(shí)間戳,用于表明所有執(zhí)行服務(wù)器在這個(gè)時(shí)間戳前無(wú)法修改數(shù)據(jù);
      [0015]步驟2.3:在修改完所有遠(yuǎn)端數(shù)據(jù)在其所在的其他服務(wù)器上的狀態(tài)后,使用RDMA讀操作將所有的數(shù)據(jù)讀到執(zhí)行服務(wù)器的本地緩存中,其中,將只讀的遠(yuǎn)端數(shù)據(jù)的時(shí)間戳也記錄到執(zhí)行服務(wù)器的本地。
      [0016]優(yōu)選地,所述步驟3包括:
      [0017]步驟3.1:在將程序所需要的所有遠(yuǎn)端數(shù)據(jù)讀回到執(zhí)行服務(wù)器的本地緩存后,調(diào)用硬件提供的HTM指令進(jìn)入硬件事務(wù)性內(nèi)存模式;
      [0018]步驟3.2:根據(jù)所訪問(wèn)的數(shù)據(jù)是本地?cái)?shù)據(jù)還是遠(yuǎn)端數(shù)據(jù)執(zhí)行不同的操作;
      [0019]若數(shù)據(jù)的訪問(wèn)為本地?cái)?shù)據(jù)的讀寫操作,則,具體地,
      [0020]當(dāng)為讀操作,檢查本地?cái)?shù)據(jù)是否處于上鎖狀態(tài),若處于上鎖狀態(tài)則調(diào)用硬件提供的中斷HTM指令中斷該次程序執(zhí)行,并將程序的修改進(jìn)行回滾;否則進(jìn)行讀操作;
      [0021]當(dāng)為寫操作,檢查本地?cái)?shù)據(jù)是否處于上鎖狀態(tài),若本地?cái)?shù)據(jù)上有時(shí)間戳,則判斷該時(shí)間戳是否比當(dāng)前執(zhí)行服務(wù)器的時(shí)間晚;若檢查得到本地?cái)?shù)據(jù)處于上鎖狀態(tài)或者本地?cái)?shù)據(jù)上的時(shí)間戳晚于執(zhí)行服務(wù)器的時(shí)間,則調(diào)用硬件提供的中斷HTM指令中斷這次程序執(zhí)行并回滾程序的修改;否則進(jìn)行在本地?cái)?shù)據(jù)上進(jìn)行寫操作;
      [0022]若數(shù)據(jù)的訪問(wèn)為遠(yuǎn)端數(shù)據(jù)的讀寫操作,則在所述遠(yuǎn)端數(shù)據(jù)在執(zhí)行服務(wù)器的本地緩存中進(jìn)行讀寫操作,具體地,
      [0023]當(dāng)程序全部執(zhí)行完成后,對(duì)所有的遠(yuǎn)端只讀數(shù)據(jù)進(jìn)行時(shí)間戳檢查,若有一個(gè)遠(yuǎn)端只讀數(shù)據(jù)的時(shí)間戳比當(dāng)前執(zhí)行服務(wù)器的時(shí)間早,則調(diào)用硬件提供的中斷HTM指令中斷該程序的執(zhí)行,重新對(duì)遠(yuǎn)端只讀數(shù)據(jù)設(shè)置比當(dāng)前機(jī)器時(shí)間戳要大的時(shí)間戳后,再一次執(zhí)行步驟3 ;
      [0024]步驟3.3:當(dāng)遠(yuǎn)端數(shù)據(jù)的時(shí)間戳都檢查完成后,對(duì)于調(diào)用硬件指令退出HTM事務(wù)模式;并對(duì)程序所有修改的遠(yuǎn)端數(shù)據(jù)使用RDMA寫操作將本地緩存中遠(yuǎn)端數(shù)據(jù)修改的值寫回到遠(yuǎn)端服務(wù)器,利用RDMA原子操作把程序訪問(wèn)的遠(yuǎn)端數(shù)據(jù)的狀態(tài)變?yōu)槌跏蓟癄顟B(tài)。
      [0025]與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:
      [0026]1、本發(fā)明中的方法通過(guò)RDMA網(wǎng)絡(luò)可以中斷HTM的特性,在分布式并發(fā)控制中運(yùn)用HTM作為主要的并發(fā)控制,因此可以利用HTM的高效的事務(wù)保護(hù)的特性,優(yōu)化程序執(zhí)行時(shí)對(duì)于本地?cái)?shù)據(jù)訪問(wèn)的保護(hù)的性能,同時(shí)可以和遠(yuǎn)端數(shù)據(jù)的保護(hù)方法運(yùn)用在一起。
      [0027]2、本發(fā)明利用分布式環(huán)境下機(jī)器間的幾乎一致的時(shí)鐘來(lái)實(shí)現(xiàn)了對(duì)只讀數(shù)據(jù)的租約的機(jī)制,這樣通過(guò)數(shù)據(jù)上的時(shí)間戳來(lái)共享只讀的數(shù)據(jù),提高了分布式程序執(zhí)行的并行性,進(jìn)一步提升了分布式環(huán)境下利用RDMA的并發(fā)控制方法的性能。
      [0028]3、本發(fā)明對(duì)于現(xiàn)有的數(shù)據(jù)庫(kù)系統(tǒng)支持,能夠降低數(shù)據(jù)庫(kù)系統(tǒng)為執(zhí)行事務(wù)的強(qiáng)一致性所帶來(lái)的性能開銷,提升數(shù)據(jù)庫(kù)系統(tǒng)的資源利用率以及整體的性能。
      【附圖說(shuō)明】
      [0029]通過(guò)閱讀參照以下附圖對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
      [0030]圖1為本發(fā)明提供的基于RDMA和HTM的分布式并發(fā)控制方法的原理示意圖一;
      [0031]圖2為本發(fā)明提供的基于RDMA和HTM的分布式并發(fā)控制方法的原理示意圖二 ;
      [0032]圖3為本發(fā)明提供的基于RDMA分布式內(nèi)存計(jì)算的分布式并發(fā)控制方法的的遠(yuǎn)端數(shù)據(jù)保護(hù)方法的流程圖。
      【具體實(shí)施方式】
      [0033]下面結(jié)合具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。以下實(shí)施例將有助于本領(lǐng)域的技術(shù)人員進(jìn)一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對(duì)本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn)。這些都屬于本發(fā)明的保護(hù)范圍。
      [0034]根據(jù)本發(fā)明提供的基于RDMA和HTM的分布式并發(fā)控制方法,包括如下步驟:
      [0035]步驟1:根據(jù)程序需要訪問(wèn)的數(shù)據(jù)選擇執(zhí)行服務(wù)器;
      [0036]步驟2:通過(guò)選定的執(zhí)行服務(wù)器獲取程序需要訪問(wèn)的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行保護(hù);
      [0037]步驟3:讀取全部數(shù)據(jù)并緩存至執(zhí)行服務(wù)器后,在HTM中執(zhí)行程序。
      [0038]優(yōu)選地,所述步驟1包括:根據(jù)程序需要訪問(wèn)的數(shù)據(jù)集合得出哪些服務(wù)器中包含需要訪問(wèn)的數(shù)據(jù),并根據(jù)這些服務(wù)器分別擁有的事務(wù)數(shù)據(jù)的的條目數(shù)量,選擇包含事務(wù)所要訪問(wèn)的條目的服務(wù)器作為執(zhí)行服務(wù)器來(lái)執(zhí)行程序。
      [0039]所述步驟2包括:
      [0040]步驟2.1:獲取程序需要訪問(wèn)的遠(yuǎn)端數(shù)據(jù),并對(duì)遠(yuǎn)端數(shù)據(jù)進(jìn)行保護(hù),即使得遠(yuǎn)端數(shù)據(jù)在程序結(jié)束前不會(huì)被其他有沖突的程序訪問(wèn)到;
      [0041]步驟2.2:在程序開始執(zhí)行前,執(zhí)行服務(wù)器通過(guò)分布式內(nèi)存鍵值數(shù)據(jù)庫(kù)找到程序的遠(yuǎn)端數(shù)據(jù)在其他服務(wù)器的內(nèi)存位置,若遠(yuǎn)端數(shù)據(jù)是需要修改的數(shù)據(jù)則使用RDMA原子指令將遠(yuǎn)端數(shù)據(jù)所在的其它服務(wù)器的服務(wù)器狀態(tài)設(shè)置為上鎖狀態(tài),否則將所述執(zhí)行服務(wù)器的數(shù)據(jù)設(shè)一個(gè)機(jī)器時(shí)間來(lái)作為時(shí)間戳,用于表明所有執(zhí)行服務(wù)器在這個(gè)時(shí)間戳前無(wú)法修改數(shù)據(jù);
      [0042]步驟2.3:在修改完所有遠(yuǎn)端數(shù)據(jù)在其所在的其他服務(wù)器上的狀態(tài)后,使用RDMA讀操作將所有的數(shù)據(jù)讀到執(zhí)行服務(wù)器的本地緩存中,其中,將只讀的遠(yuǎn)端數(shù)據(jù)的時(shí)間戳也記錄到執(zhí)行服務(wù)器的本地。
      [0043]所述步驟3包括:
      [0044]步驟3.1:在將程序所需要的所有遠(yuǎn)端數(shù)據(jù)讀回到執(zhí)行服務(wù)器的本地緩存后,調(diào)用硬件提供的HTM指令進(jìn)入硬件事務(wù)性內(nèi)存模式;
      [0045]步驟3.2:根據(jù)所訪問(wèn)的數(shù)據(jù)是本地?cái)?shù)據(jù)還是遠(yuǎn)端數(shù)據(jù)執(zhí)行不同的操作;
      [0046]若數(shù)據(jù)的訪問(wèn)為本地?cái)?shù)據(jù)的讀寫操作,則,具體地,
      [0047]當(dāng)為讀操作,檢查本地?cái)?shù)據(jù)是否處于上鎖狀態(tài),若處于上鎖狀態(tài)則調(diào)用硬件提供的中斷HTM指令中斷該次程序執(zhí)行,并
      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1