999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向兩段鎖并發控制的RDMA優化技術

2023-05-08 11:31:08李婧瑤張倩趙展浩盧衛張孝杜小勇
計算機與生活 2023年5期

李婧瑤,張倩,趙展浩,盧衛,張孝,杜小勇

中國人民大學 信息學院,北京100872

由于單機系統在計算能力和存儲容量上的限制,特別是擴展能力的不足,已經不能滿足互聯網各類應用場景對海量數據分析和處理的要求,分布式系統得到了產業和學術屆的重視。特別是分布式數據庫系統,由于支持分布式事務,在銀行、電商等關鍵任務領域得到了廣泛應用。然而,基于兩階段封鎖協議[1]的分布式系統受限于事務調度器的CPU 低利用率[2]和通信開銷所造成的瓶頸,其系統性能亟待提升。多進程、多線程、協程等技術在一定程度上緩解了這個問題,但并沒有使其得到根本解決。最優化數據分區模型以最小化通信需求[3-4]為目標,然而,實踐證明不管是靜態的還是動態的分區管理方法,在復雜多變的應用場景下,都不能完全避免集群中不同機器間的高通信成本[5]。

基于無限帶寬(infiniband,IB)高速網絡的遠程直接數據存取(remote direct memory access,RDMA)技術為解決這一問題提供了新思路。相關工作[6]指出RDMA 能在更有效利用CPU 的同時降低通信延遲,針對性緩解分布式數據庫系統中的現存問題。RDMA提供雙邊、單邊兩類原語,利用預編程的網卡(RDMA network interface card,RNIC)和成對創建的隊列對(queue pair,QP)繞開傳統TCP/IP協議棧和操作系統內核,直接訪問遠端內存。常用的操作包括單邊讀、寫、CAS和雙邊發送、接收等,其中單邊操作直接作用于遠端內存而無需遠端CPU 的參與,返回的結果被寫入預先指定的內存塊中,以提供高吞吐和低延遲,從而有效提升系統性能。RDMA 各原語特性及在分布式系統中的應用被廣泛研究:如分析多情境下RDMA 系統的性能瓶頸,并提供了一些優化方案[7];設計結合RDMA的鍵值存儲模式[8];提出基于RDMA的存算分離和共享內存架構[6,9-10];將RDMA和已有并發控制算法如OCC、NO WAIT、WAIT DIE等結合,結合實驗探究了最優實現方式[11-13]等。其中一些工作設計了分布式系統在RDMA下的鎖機制[11-13],然而它們或者僅提供排他鎖而不適應高沖突負載,或者提供多種鎖但招致高昂的加解鎖開銷,或者加鎖協議不通用而需要較多的架構更改,且都缺乏對沖突程度不同的多樣負載的考慮。為了更合理地設計新硬件下的分布式系統鎖機制,使其在保證操作原子性、數據一致性的基礎上受益于高性能網絡并盡量消除通信瓶頸,本文作出了如下貢獻:

(1)基于RDMA,對兩種常用的兩段鎖算法NO WAIT、WAIT DIE 進行了優化,提出單邊讀寫鎖和單邊排他鎖兩類加解鎖優化策略。

(2)提出使用RDMA 單邊原語進行加解鎖操作時的原子性問題,并提供了保障原子性的解決方案。

(3)進行了大量實驗,結果表明,基于RDMA 優化的NO WAIT和WAIT DIE算法相較于傳統的TCP/IP有最高5.3倍和10.6倍的性能提升。另外,本文提出的兩種加解鎖策略各自在低、高沖突負載下具有相對優越性。

1 遠程直接數據存取

1.1 基本原理

遠程直接數據存取(即RDMA)利用預編程的網卡(RNIC)和無限帶寬網絡(InfiniBand),可以繞過操作系統內核對遠端計算機內存進行直接訪問。與傳統的TCP/IP通信協議相比,RDMA具有速度快、時延低的優勢。RDMA 原語分為單邊和雙邊兩類:單邊操作包括讀(Read)、寫(Write)、原子操作(如compare and swap,CAS;fetch and add,FAA);雙邊操作包括發送、接收(Send/Receive)。

RDMA通過服務器間的隊列對完成通信。在一臺服務器上,隊列對總是被成對創建,包括發送隊列和接收隊列,此外還有用于接收遠端消息反饋的完成隊列。在處理遠程數據讀寫請求時,其首先被封裝為工作隊列元素(work queue element,WQE)并放入發送隊列中,由RNIC遵循先進先出的原則異步處理。每一個WQE 都關聯到特定的注冊內存空間。以雙邊寫原語為例,本地發送隊列的WQE指向存放待寫數據的內存塊,通過RNIC形成的本端和遠端內存的直接連接,將數據寫入遠端接收隊列的WQE關聯的內存塊。相比雙邊原語,RDMA 單邊原語能夠進一步繞開遠端CPU,從而僅在請求端CPU 的參與下操作遠端內存數據,以提供更快速高效的遠程讀寫。因此,對于CPU密集型應用,單邊原語相對于雙邊原語效率更優。然后,RNIC會輪詢完成隊列以得到失敗或成功的操作結果。最后,操作結果被返回到預指定的內存塊,如RDMA Read返回讀取的指定數據元組,RDMA CAS返回比較當時的目標數據值等。

1.2 RDMA相關工作進展

RDMA 協議基于高速帶寬InfiniBand,雙邊原語繞開內核和單邊原語避免遠端CPU參與的特性為分布式系統架構的優化帶來了新的可能:包括存算分離[6,9]和共享內存[10]等。一方面,RDMA被廣泛應用在分布式事務處理中:如利用RDMA 單邊周期性協調時鐘,以達到時間戳的全局一致[14];通過不可靠雙邊RPC 實現內存數據庫[15];結合RDMA 和硬件事務內存(hardware transactional memory,HTM)轉移并發控制邏輯[16],并在此基礎上進一步支持多副本以保證高可用[17]等。另一方面,RDMA和現有并發控制算法的結合受到了廣泛研究。OCC被劃分為了執行、驗證、日志、提交四個階段,在批處理等優化下分階段探究了基于RDMA單邊或雙邊原語的最優實現[11]。另一工作設計數據鎖表以支持基于RDMA的多級粒度加鎖,包括讀寫鎖和意向鎖[12]。它利用RDMA 單邊寫信息到遠端,遠端執行加鎖并反饋,以此來取代RDMA雙邊操作并保障操作原子性。然而,此種加鎖方式雖然基于單邊原語,但事實上需要遠端CPU參與,且需要管理環形共享內存區,導致加鎖開銷較大,占事務總開銷的約70%,且這個比例甚至隨著節點的增加進一步上升。此外,DSLR(decentralized and starvationfree lock management with RDMA)算法[13]實現了基于RDMA的Lamport面包店加解鎖算法,以在保證去中心化的基礎上避免饑餓等待。但它可能導致死鎖,依賴超時控制完成死鎖檢測。與現有工作不同,本文針對常用的死鎖預防型2PL算法NO WAIT、WAIT DIE設計了雙邊和單邊排他鎖(mutex lock,M lock)、讀寫鎖(mutex/shared lock,M/S lock)這兩種高效的加解鎖策略,并比較了它們在不同沖突程度負載下的優劣,提供了更全面實用的參考。

1.3 RDMA原語特性

圖1展示了使用不同傳輸方式,包括基于以太網或InfiniBand 的TCP/IP 協議(TCP/IP over Ethernet,IPoEth;TCP/IP over InfiniBand,IPoIB)和RDMA 單邊讀寫原語時的吞吐量、延遲隨著傳輸消息大小的變化情況。在同一消息大小下,IPoIB得益于網絡優勢,優于IPoEth,而RDMA單邊總是提供最優的吞吐量和延時。因此,在新硬件基礎上,進一步設計基于RDMA原語的算法對于分布式系統有著積極的意義。

圖1 各傳輸方式基準分析Fig.1 Microbenchmark analysis for different communication methods

2 基于RDMA的兩段鎖機制

兩段鎖是應用最廣泛的并發控制協議之一,通過加鎖和解鎖協調事務間的沖突操作。它規定事務從第一次釋放鎖開始便不能再獲取鎖,由此將其劃分為獲取鎖的生長階段和釋放鎖的衰減階段。根據避免死鎖的方式不同,可分為NO WAIT、WAIT DIE[1]等。前者在加鎖沖突時直接回滾,后者判斷若加鎖事務時間戳小于所有持鎖事務時間戳則等待,否則回滾。嚴格的兩段鎖協議進一步要求在事務提交或回滾后才釋放鎖。本文定義鎖機制為提供不同鎖類型和沖突處理方式的加解鎖策略,并基于嚴格的兩段鎖協議和傳統讀寫鎖相容矩陣,設計了基于RDMA單、雙邊原語的NO WAIT讀寫鎖、NO WAIT排他鎖、WAIT DIE 讀寫鎖、WAIT DIE 排他鎖四類鎖機制,以加速操作,提升系統性能。

2.1 雙邊原語實現

與傳統TCP/IP 網絡傳輸方式相比,RDMA 雙邊過程并不涉及系統內核,傳輸效率相對高效。因此可以在原始基于TCP/IP 的并發控制算法之上,通過建立可靠連接隊列對(reliable connected queue pairs,RC QPs)來使用RDMA 雙邊原語Send 和Recv 傳輸事務的讀寫請求,而非基于TCP/IP 協議的請求以減少通信開銷。RC QPs 在創建時是一一對應的:一個發送隊列發出的消息只能由對應創建的接收隊列接收到。工作線程產生事務遠程讀寫請求時,可利用已創建的發送隊列發送消息到遠端接收隊列中,由于一個服務器中總會接收到來自其他多個服務器中多個隊列的消息,接收線程需要輪詢多個接收隊列來對不同來源的消息進行處理。

由于RDMA 基于工作隊列(WQE)機制進行消息的異步傳輸,產生Send 請求的工作線程無須等待Send 的消息被對方接收到便可發起新的Send 請求,隊列對中可同時存在多個未完成的WQE 等待。當發送隊列或接收隊列滿時,工作線程會等待接收隊列中的Recv請求被消費后再產生新的Send請求,因此當分布式事務負載大、消息通信非常頻繁時,發送隊列和接收隊列的容量一定程度上也會影響系統性能。通過多次測試,本文選擇較大的隊列容量,以使得在大多數情況下消息的傳輸效率都相對最佳。因為不存在額外通信開銷,在兩段鎖算法的雙邊和TCP/IP實現中,總是提供讀寫鎖以提高讀并發度。

2.2 單邊原語實現

在雙邊基礎上,RDMA 單邊操作能夠繞開遠端CPU以獲得更低的單次操作延時。故在次數相同的情況下,單邊原語往往更受青睞。然而,實踐中單邊的特性也帶來了一些問題。首先,盡管單次表現占優,但是某些并發控制算法下的復雜操作可能需要多次單邊,從而造成了額外開銷;其次,由于單邊操作僅依賴于本地而隔絕了遠端CPU,固有元數據結構不能滿足便捷存取的需求;最后,傳統分布式系統中采用線程鎖保障加解鎖操作原子性的方法已不再可行,如何在保留單邊優良性質的基礎上保證算法的正確性對其設計提出了新的挑戰。

2.2.1 元數據

遠端CPU在RDMA單邊通過RNIC和DMA(direct memory access)直接訪問遠端內存的過程中是無感的,因此需要重新定義元數據結構以便于數據讀寫。元數據結構如表1所示。鎖信息和數據相鄰,遠端或本地讀寫數據之前都需要首先判斷鎖沖突情況。由于RDMA原子操作僅支持8 Byte大小,為減少通信往返次數并便于保障原子性,鎖位總是64 bit。僅使用排他鎖時鎖位為零即無鎖,非零有鎖。其中WAIT DIE 使用加鎖事務開始時間戳ts 作為鎖信息,以便在加鎖失敗時比較時間戳大小來判斷是否回滾。區分讀寫鎖時,鎖位最低位存儲鎖類型信息,第二位及更高位存儲鎖數量信息。區分讀寫鎖的WAIT DIE 的鎖信息中進一步包含加鎖事務的時間戳數組。這里采用長度為N=4 的定長數組以便于實現單邊讀寫,第N+1 個并發讀事務將回滾。實驗驗證由此引發的回滾占總回滾事務的比例不超過1%,對回滾率的影響可忽略不計。

表1 元數據結構Table 1 Metadata structure

2.2.2 原子性

基于TCP/IP的遠程數據加解鎖通常由接收消息的遠端CPU 采用線程鎖保障操作原子性,RDMA 單邊需要重新考慮原子性問題。首先,單邊原語中的原子操作如CAS、FAA,有RNIC 底層機制提供原子性保障。然而,RDMA CAS和本地CPU CAS相互之間不能保障原子性。因此本地也將采用RDMA CAS來保證算法正確性,這可能造成一定的性能損失[11,16]。一些正交優化引入先進硬件特征HTM或為解決這一矛盾提供了可能,將作為本文的未來工作。

為了在支持讀寫鎖的同時保障原子性,基于表1數據結構,NO WAIT 算法首先RDMA Read 讀鎖信息,解碼并判斷是否沖突,并在不沖突時利用RDMA CAS 將之前讀到的鎖信息置換為重新編碼的新鎖。此時,若CAS失敗則兩次單邊之間原子性被破壞,需重試讀到加鎖的過程。支持讀寫鎖的WAIT DIE 需要額外在每次讀時驗證鎖位和時間戳數組中的鎖個數相同,以保證修改鎖位和時間戳數組操作間的原子性,防止讀到不一致的中間狀態。事實上,高速單邊通信下出現原子性問題的頻率一般較低:第3.2.2小節中實驗驗證平均每個事務因為原子性被破壞而導致的重試在大多數情況下不到一次,因此不會顯著影響分布式事務處理性能。

2.2.3 RDMA鎖機制

算法1 和算法2 給出了單邊RDMA 與不同鎖機制的結合方式。針對2PL 兩個階段分別考慮讀或寫兩種操作類型所涉及的加解鎖操作。為便于理解,僅展示訪問遠端數據情形,且僅涉及加解鎖相關操作。本地類似,只是采用本地直接讀寫取代RDMA讀寫。注意,偽碼中以CAS(a,b)來代表當目標值為a時置其為b的操作。實際上,具體數據總是在加鎖成功后遠端RDMA Read 得到,如有要提交的修改則在解鎖時一并寫回,以減少單邊次數,節省網絡開銷。

對于不區分讀寫鎖,僅支持排他鎖的情況,讀集和寫集元素的加解鎖相關步驟是一致的:RDMA CAS 直接加鎖(算法1,第11 行和第27 行),RDMA Write 置零解鎖(算法2,第19 行)。只是不同鎖機制的沖突處理方式有所差異。NO WAIT協議通過鎖沖突時立即回滾當前事務以避免死鎖。WAIT DIE 在鎖沖突時并不立即回滾,而是通過比較時間戳大小來決定是否等待(算法1,第30~32 行)。它以事務開始時間戳保序預防閉環等待來避免死鎖,僅回滾部分沖突事務。如果當前請求加鎖事務的開始時間戳小于持鎖事務時間戳時,則等待,否則回滾。基于TCP/IP的實現中,等待過程是非阻塞的:在每個數據項上維護一個等待隊列,每逢解鎖判斷其中是否有可執行加鎖。然而,RDMA 單邊加鎖時遠端是無感的,因此不能執行上述流程。此時重復發送CAS 請求以實現阻塞等待。

在單邊讀寫鎖的加鎖實現中,NO WAIT 首先RDMA Read讀回鎖信息,本地判斷沖突與否,并在不沖突情況下RDMA CAS 加鎖。如第2.2.2 小節中有關原子性的描述,兩次單邊之間可能存在其他事務對同一數據的更改從而破壞原子性,此時重試讀、本地判斷過程直到事務沖突回滾或加鎖成功(算法1,第3~9 行)。類似地,讀集元素解鎖順序執行讀鎖信息,CAS解鎖和可能的重試操作(算法2,第3~5行)。對于寫集元素,直接RDMA Write 置零解鎖(算法2,第7 行)。WAIT DIE 讀寫鎖的RDMA 單邊實現因為要額外維護加鎖事務時間戳數組的信息而更加復雜。它需要在讀時驗證鎖位和時間戳數組中的鎖個數相同,當讀到不一致的中間狀態時需要重讀(算法1,第15 行;算法2,第10 行)。在加鎖成功后及讀集元素解鎖前需要同步更新時間戳數組,若后續解鎖失敗要立即寫回原有時間戳以盡量縮短處于不一致中間狀態的時間(算法1,第22 行;算法2,第11~13行)。注意讀寫鎖算法通過支持并發讀操作提高并發度,但相比排他鎖算法需要更多次的單邊操作,造成額外開銷。由于寫集僅在鎖信息為0時允許加鎖,實現中實際上簡化了讀和沖突判斷步驟,直接RDMA CAS加鎖即可。

算法1RDMA加鎖算法

輸入:事務讀請求集R,寫請求集W,鎖機制C。

輸出:加鎖成功返回Success,否則返回Abort。

算法2RDMA解鎖算法

輸入:事務讀請求集R,寫請求集W,鎖機制C。

輸出:無。

3 實驗

3.1 實驗設置

實驗基于MIT開源的多算法分布式并發控制測試平臺Deneva[18],引入了其對RDMA單邊和雙邊的支持,從而對本文算法性能進行驗證。Deneva中,事務首次訪問的節點作為協調者,按順序完成一系列遠程或本地操作,并最終提交或回滾。消息隊列中的遠程讀寫請求被消息發送線程封裝并通過TCP/IP發送至接收端。接收端工作線程輪詢工作隊列,完成本地讀寫,并向協調者返回處理結果。其中,數據遠程讀寫是非阻塞的:等待遠程讀寫時,協調節點暫存當前事務狀態并繼續處理下一工作隊列元素,從而提高處理效率。與此不同,基于RDMA 的兩階段加鎖實現方法利用其與本地內存存取媲美的高帶寬[6],通過在Deneva開源代碼中將遠程操作的消息發送和接收邏輯改為調用RNIC直接讀寫遠端內存,實現了第2.2.3 小節中描述的算法機制。為引入RDMA,系統初始化時首先在各節點線程間成對創建隊列對,分配注冊內存并綁定至相應RNIC。圖2展示了注冊內存的結構,包括數據區和臨時區。數據區存放索引、結構如表1 的并發控制元數據和具體數據內容,在作為被讀寫站點時使用;臨時區被分配給所在節點的各線程,用于暫存RDMA讀或CAS的返回結果,在作為讀寫發起站點時使用。一個典型的遠端數據讀取中,事務首先將遠端數據區中的對應索引讀取到本地臨時區中,然后根據索引指向地址讀寫遠端元數據進行加鎖并發控制,加鎖成功后方可讀取遠端數據內容。

圖2 RDMA注冊內存結構Fig.2 Registered data structure for RDMA

性能測試使用YCSB。YCSB(Yahoo!cloud serving benchmark)是雅虎公司開源的數據庫服務器端壓力測試工具。它提供了可調試參數如寫操作比例、沖突率等,以進行全面的評估。事務訪問服從Zipf 分布,即少量數據獲得大量訪問的長尾分布。分布參數Theta(又稱Skew Factor)在0 到1 之間,越接近1數據訪問沖突越大,用于測試系統在不同沖突率下的性能表現。實驗基于4 臺配置RDMA 的集群,并按照1∶1 的比例分配客戶端和服務端。每個節點配備125 GB 內存,2 個18 核的Intel Xeon Gold 5220 處理器,1 個RNIC 和ConnectX-5 InfiniBand MT27800。默認每個服務端8個并行工作線程,每個YCSB事務10個讀或寫請求。實驗對比第2章設計的基于RDMA原語的算法與Deneva中基于InfiniBand的TCP/IP的算法,以得出硬件本身的性能收益外算法帶來的優勢。

3.2 實驗結果及分析

3.2.1 算法性能比較

為了分析在不同負載下的表現,圖3 給出了NO WAIT 的四種不同實現:基于InfiniBand 的TCP/IP(IPoIB)、RDMA 雙邊(two-side)、RDMA 單邊讀寫鎖(M/S lock)和排他鎖(M lock),在寫事務比例為0.5的測試數據集下的吞吐量(單位:TPS)和回滾率隨沖突大小的變化情況。其中,單邊讀寫鎖在讀寫負載下實現了相對InfiniBand 上TCP/IP 最高5.3 倍(Theta=0.85)的吞吐提升。得益于繞開遠端CPU 的特性,RDMA單邊實現總是優于雙邊和IPoIB上的實現的:在相同沖突程度下帶來更高的吞吐量和更低的回滾率。類似的,RDMA 雙邊實現避免操作系統內核并利用高速網絡,在不同沖突情況下均優于IPoIB上的實現。然而,區分讀寫鎖和僅提供排他鎖的兩類單邊實現的相對優劣卻并不絕對,而是跟負載有關。在低沖突負載下,單邊排他鎖相比讀寫鎖有更高的吞吐量。這是因為單邊讀寫鎖在提供更靈活多樣的加鎖機制的同時,引入了額外的往返通信開銷(參見第2.2.3小節算法1、算法2),針對讀集元素的加解鎖總是需要兩次往返(RDMA Read+CAS),而單邊排他鎖僅需要一次單邊通信(RDMA CAS 或Write)。負載沖突小時,區分讀寫鎖帶來的更高讀并發度所具有的好處不及額外通信開銷所帶來的劣勢,此時排他鎖算法表現更好。相對的,當Theta>0.8,單邊排他鎖算法回滾率大于20%時,讀寫鎖算法因其更高的讀并發度而具有相對優勢。

圖3 NO WAIT在讀寫數據集上的算法性能比較Fig.3 NO WAIT algorithm performance comparison on read-write dataset

為進一步驗證區分讀寫鎖算法的優越性,圖4給出了以上四種實現在只讀事務上的吞吐量和回滾率。只讀負載的沖突大小對于區分讀寫鎖的單邊、雙邊和IPoIB 實現無顯著影響:并發讀總可以執行,回滾率始終為0(為清晰呈現,圖4(b)僅列出單邊回滾率),吞吐量平穩。此時始終有RDMA單邊讀寫鎖優于雙邊,雙邊優于TCP/IP。不同的是,盡管低沖突負載時單邊排他鎖算法依舊最優,高沖突讀負載下的高回滾率使得其性能急速下降。在Theta>0.9 且回滾率大于40%時單位時間吞吐量甚至不及Infini-Band上的TCP/IP實現。

橫向比對圖3(a)和圖4(a)中相同算法的吞吐情況,可見IPoIB和雙邊實現在只讀負載下具有相對稍高的吞吐量,而單邊排他鎖和低沖突下的單邊讀寫鎖算法對于寫事務比例并不敏感,后者甚至性能有所下降。這是因為只讀負載節省了寫回的通信開銷,而單邊讀寫鎖算法因為讀相對寫更復雜,讀負載比例的增多而增大了復雜操作比例。

圖4 NO WAIT在只讀數據集上的算法性能比較Fig.4 NO WAIT algorithm performance comparison on read-only dataset

圖5 列出了WAIT DIE 在寫事務比例為0.5 時的性能評測結果。類似NO WAIT,幾乎總有單邊優于雙邊,雙邊優于TCP/IP。其中RDMA 操作依賴其高效性,減小了加鎖時長,因此在同一沖突水平下往往有更低的回滾率。由于維護加鎖事務時間戳數組的額外開銷,WAIT DIE 單邊讀寫鎖優勢減弱,僅在沖突率極高(Theta>0.9)時略優于單邊排他鎖算法。驗證了盡管具有單次高效性,RDMA 單邊原語并不擅長實現復雜操作。注意到基于TCP/IP 的WAIT DIE 在沖突率高時吞吐量下降顯著,在Theta=0.85時單邊排他鎖實現了10.6 倍的吞吐量提升。類似NO WAIT,WAIT DIE讀寫鎖在高沖突只讀數據集上吞吐量穩定,回滾率趨于0,相比排他鎖算法具有更顯著的相對優勢,這里不再重復展示實驗結果。

圖5 WAIT DIE算法性能比較Fig.5 WAIT DIE algorithm performance comparison

3.2.2 重試情況分析

第2.2.3小節加解鎖算法均涉及重試操作。重試操作可分為兩類:原子類重試和等待類重試。原子類重試指由于加解鎖過程中原子性被破壞引起的重試操作(算法1,第9 行;算法2,第5 行和第14 行;以及算法1第15行和算法2第10行可能的重讀),而等待類重試是對WAIT DIE算法中等待(WAIT)的具體實現:通過反復重試發送請求,直到加鎖成功或回滾(算法1,第18、25和第31行)。為了測量重試操作對上述算法性能的影響,表2分別統計了不同鎖機制的事務平均重試次數。由表可見,操作間原子性被破壞所引發的重試較少。如NO WAIT讀寫鎖機制下平均每個事務原子類重試不到0.2次,對性能影響較小。相比之下等待類重試次數較多,特別是WAIT DIE 讀寫鎖機制在高沖突Theta=0.95 時平均等待重試可達近12次,這進一步解釋了其在圖5(a)中的不高吞吐量。

表2 事務平均重試次數統計Table 2 Number of retry in transaction

4 結束語

本文提出了基于RDMA的兩段鎖并發控制優化技術。利用高帶寬、低延時等特性,本文對兩段鎖算法中加解鎖的實現進行了重新設計與優化,提出了單邊讀寫鎖和排他鎖這兩種加解鎖策略。利用這兩種策略,本文優化并實現了兩種主流的兩段鎖算法(NO WAIT和WAIT DIE)。實驗結果顯示,優化后的算法相較于基于InfiniBand 上TCP/IP 協議的算法分別有最高5.3 倍和10.6 倍的性能提升。值得注意的是,通過調整測試負載中的事務沖突率,本文發現:在高沖突率下,采用單邊讀寫鎖策略時性能較優;而在低沖突率下,采用排他鎖策略性能較優。這一現象在只讀數據集上更顯著。其中WAIT DIE 讀寫鎖的優勢因實現復雜單邊操作而有所減弱。因此,基于負載中沖突率的高低和讀事務比例,動態調整算法的加解鎖策略,從而適應于不同負載的需要,是未來的一個研究工作。

主站蜘蛛池模板: 国产正在播放| 亚洲无线国产观看| 一级毛片中文字幕| 久久伊人色| 视频二区中文无码| 日韩一级毛一欧美一国产| 婷婷色丁香综合激情| 国产在线观看成人91| 国产Av无码精品色午夜| 国产在线视频欧美亚综合| 亚洲一区无码在线| 欧洲亚洲一区| 免费A∨中文乱码专区| 亚洲Aⅴ无码专区在线观看q| …亚洲 欧洲 另类 春色| 日韩色图区| 国产精品白浆在线播放| 亚洲精品视频网| 天天色综网| 青草午夜精品视频在线观看| 欧美日本在线观看| 中文字幕va| 久久精品aⅴ无码中文字幕| 欧美在线视频不卡第一页| 98精品全国免费观看视频| 午夜天堂视频| 色吊丝av中文字幕| 日韩精品无码一级毛片免费| 青青操国产| 久久综合丝袜日本网| 毛片免费观看视频| 亚洲天堂网在线观看视频| 久久综合婷婷| 亚洲 日韩 激情 无码 中出| 40岁成熟女人牲交片免费| 波多野结衣视频网站| AV不卡在线永久免费观看| 中文字幕2区| 国产精品无码一二三视频| 午夜国产在线观看| 日韩无码视频播放| 国产呦精品一区二区三区下载| 91精品专区国产盗摄| 99色亚洲国产精品11p| 国产成人精品综合| 毛片基地美国正在播放亚洲 | 另类重口100页在线播放| 国产高潮流白浆视频| 国国产a国产片免费麻豆| 久久国产亚洲偷自| 亚洲黄色成人| 毛片网站观看| 99手机在线视频| 丰满人妻中出白浆| 日本高清成本人视频一区| 91高清在线视频| 伊人天堂网| 人妻一区二区三区无码精品一区| 亚洲丝袜第一页| 国产乱人伦偷精品视频AAA| 亚洲精品天堂自在久久77| 香蕉蕉亚亚洲aav综合| 99re经典视频在线| 在线观看亚洲国产| 亚洲色图另类| 欧美日韩成人| 在线看片中文字幕| 久草国产在线观看| 欧美日本中文| 久久96热在精品国产高清| 精品国产成人高清在线| 波多野结衣一区二区三区四区| 日韩av电影一区二区三区四区 | 蜜臀AVWWW国产天堂| 欧美啪啪网| 国产在线一区视频| 色综合狠狠操| 精品福利一区二区免费视频| 久久99精品久久久久久不卡| 无码国内精品人妻少妇蜜桃视频| 在线观看网站国产| 精品国产美女福到在线不卡f|