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

新型內存硬件環境中的事務管理系統綜述

2023-03-27 13:39:22梁文凱李詩逸王鴻鵬
計算機研究與發展 2023年3期
關鍵詞:一致性機制

胡 浩 梁文凱 李詩逸 王鴻鵬,2 夏 文,2

1(哈爾濱工業大學(深圳)計算機科學與技術學院 廣東深圳 518055)

2(廣東省安全智能新技術重點實驗室(哈爾濱工業大學(深圳))廣東深圳 518055)

事務作為支撐大型復雜場景的技術基石,以一個有限邏輯執行單元為現代應用技術服務提供強有力的可靠性保障[1].事務是構建數據管理應用的核心,后來這一理念被廣泛運用于數據庫系統中,為數據操作提供完整性、一致性、并發性和恢復性4 個基本屬性[2].傳統的事務管理系統以硬盤(機械硬盤(hard disk drive,HDD)和固態硬盤(solid state drive,SSD))為數據存儲中心,借助主存(dynamic RAM,DRAM)低延遲和隨機訪問速度快的特性緩存部分數據操作的關鍵信息,加速事務語義處理.但是,隨著數據存儲量的爆炸性增長以及業務種類的擴增,以Oracle[3],SQL Server[4]為代表的傳統關系型數據庫已經無法滿足工業界的需求,低延遲[5]、計算密集型[6]、I/O 密集型[7]等新型應用正在不斷涌現.一些學者提出非關系型數據庫,如Redis[8],HBase[9],MongoDB[10],Neo4J[11]等適用于聯機分析處理(on-line analytic processing,OLAP)[12]的新型數據庫.數據庫系統中的事務允許多個操作并發執行并保證數據狀態的一致性,但是通常數據庫中的一個事務包含多個指令.由于傳統數據庫中的數據存儲在磁盤上,因此事務執行周期較長.而軟件事務內存(soft transaction memory,STM)[13]旨在簡化并行編程模型,替代基于鎖的數據同步方案,高效服務上層應用程序,使應用程序得以簡化.并且,軟件事務內存與數據結構中每個模塊的加載和存儲相處更為融洽,從而使應用程序維護更簡便.軟件事務內存與數據庫中的事務不同之處在于前者研究的重點是并行編程模型范圍內的內存訪問效率,并且不保證持久性.

為了提高軟件事務內存的性能,先前的工作利用額外的數據結構、內存腳印等機制[14-15]減少磁盤訪問,這些機制在事務執行時產生較高的運行時開銷.近年來,為了最小化軟件事務內存的開銷,硬件事務內存(hardware transactional memory,HTM)[16-17]逐漸獲得了研究人員的關注.HTM 通過一系列事務相關的指令集在CPU 核心中的專有緩存區域追蹤事務的讀、寫集合,并使用通用的緩存一致性(MESI)協議保持事務的修改狀態,利用硬件檢測事務沖突并中止相關事務執行.英特爾的事務同步擴展(transaction synchronization extensions,TSX)[18]是一種商業HTM 機制的實現,于2013 年添加至CPU 處理器 中.TSX 分 為2 種實現模型:1)硬件鎖 定省略(hardware lock elision,HLE)允許CPU 不對事務操作對象集合的鎖進行持久化,從而致使資源在程序模型視角是空閑的,進一步提高性能;2)受限事務內存(restricted transactional memory,RTM)是HLE 的替代實現,它可以為應用開發者提供靈活的軟件接口,通過相應的指令集為事務代碼指定執行區域,這一實現模型被廣泛應用于實際場景中.

HTM 無法提供數據的非易失性,因此仍然要借助持久化設備保證數據的完整性.后摩爾時代意味著傳統的磁盤存儲設備已經到達了發展瓶頸,無法高速迭代產品.在這種不平衡的現狀下,主存(DRAM)和持久化存儲介質之間的I/O 帶寬和延遲會變得越來越大,難以滿足上層應用程序的性能需求.工業界和學術界開始尋求其他新型存儲技術的突破,提出了一系列的新型非易失性存儲器,如相變存儲器(phase change memory,PCM)[19]、電阻式存儲器(resistive RAM,ReRAM)[20]、自旋傳遞扭矩磁性存儲器(spin torque transfer magnetic RAM,STT-MRAM)[21]等.英特爾在2019 年發布了首款商用傲騰非易失性內存(optane DC persistent memory,Optane PM)[22],該介質利用一種類似PCM 的技術——3D XPoint,打破了硬盤和內存之間的柵欄屏障,提供高密度、大容量的非易失性存儲.Optane PM 可以直接放置在內存總線上,使用DDR-T 協議與內存控制器交互通信,允許程序使用異步命令同時保證數據時序,并且事務可以在非易失性內存控制器中重新排序.

然而,新型硬件的廣泛應用使得傳統的事務管理系統面臨諸多挑戰:1)HTM 受限于L1 緩存大小的限制,極易產生事務沖突,如何在解決事務沖突的前提下減少事務處理延遲是一個挑戰.2)持久化內存為事務管理系統提供相較于傳統持久化存儲介質低1~2 個數量級的訪問延遲,但是直接替換現有事務管理系統中的持久化存儲介質會無法發揮持久化內存的性能特點.3)為了保證數據的一致性,事務管理系統往往通過額外寫機制維護數據持久化順序,這容易成為新型硬件中事務管理系統的性能瓶頸,可能面臨新的可擴展性難題.

近年來,新型硬件中的事務管理系統已經成為了研究熱點,研究人員聚焦于如何保證事務處理系統的高并發、高可擴展性.本文梳理了近年來基于新型硬件的事務管理系統研究工作.首先,從新型硬件在體系結構中的層次架構、事務并發控制協議、軟硬件協同設計、崩潰一致性4 個方面闡述相關概念及問題.接著,對事務管理系統所使用的新型硬件進行分類,從事務性能、并發性、可擴展性等方面論述相關工作,明確基于新型硬件的事務管理系統設計目標.最后,對現有基于新型硬件事務管理系統設計的缺陷和瓶頸進行總結,指出基于新型硬件的事務管理系統的未來研究方向和具有價值性的設計原則.

1 新型硬件中事務管理系統的機遇與挑戰

新型硬件在計算機體系結構中的層次架構如圖1所示,本文聚焦于新型硬件對現有的事務管理系統的影響,因此僅從硬件本身帶來的挑戰和性能提升進行分析描述.

HTM 為事務 提供原子性(atomicity)、一致性(consistency)、隔離性(isolation)屬性.為了保證數據在共享內存中操作原語的原子性,程序編程模型通常采用鎖機制確保原子性.由于該機制在數據爭用時會阻塞其他進程處理,并且同步開銷較大,HTM以更簡單的事務編程模型允許事務推測性執行,從而提高并發性能.

由于目前商用的持久化內存較少,因此本文的新型持久化內存硬件特性以傲騰非易失性內存(Optane PM)為例進行描述,后文若描述非易失性內存對象不是Optane PM,則用持久化內存替代.Optane PM 提供低延遲的數據訪問,并且保證在機器發生意外崩潰時保證數據的完整性.傲騰非易失性內存具有3 種模式:Memory 模式、AppDirect 模式和混合內存模式.Memory 模式與DRAM 相同,目的是為上層程序應用提供高速、大容量的易失性存儲;AppDirect模式具有與硬盤類似的特性,它可以為上層程序應用提供更低延遲的持久化存儲;混合內存模式下,用戶可以根據需求對Optane PM 空間進行區域劃分,既可以提供大容量內存,又可以提供低延遲的持久化存儲.

上述HTM 和Optane PM 的特性為事務管理系統帶來了新的機遇,本文針對HTM 和Optane PM 特性對上層應用程序的性能增益進行評估,如表1 所示.

Fig.1 Architecture of the new hardware hierarchy圖1 新型硬件層次架構

Table 1 Performance Evaluation of New Hardware表1 新型硬件的性能評估

從表1 中可以觀察到,Optane PM 在延遲和吞吐上略差于DRAM,但是它在應用程序的性能增益上遠超過傳統的硬盤存儲.這是由于應用程序無需復雜的I/O 路徑,通過load/store 指令直接在Optane PM上讀寫數據.圖2 展示了Optane PM 在存儲層次結構中的3 種不同訪問路徑類型:1)Optane PM 作為主存和二級存儲之間的中間層,可以降低數據的訪問延遲并提高系統整體吞吐,相較于價格高昂的主存,可以有效降低數據總擁有成本.2)將主存和Optane PM 放置在同一層,使得Optane PM 既可以擁有類似主存高速隨機訪問的優勢,又可以提供非易失性存儲.3)將Optane PM 放在二級存儲層次,但是此架構下的數據關鍵路徑可以繞過主存,使用相應的指令集直接對Optane PM 上的數據進行訪問,僅適用于數據需要實時持久化存儲并對延遲有一定容忍度的場景.

Fig.2 Different memory organization layout architectures圖2 不同的內存組織布局架構

研究人員對Optane PM 特性進行深入測試[23-24],發現Optane PM 中的持久域無需額外的電池就可以提供系統崩潰或者意外斷電后的數據完整性服務,并且可以保證8 B 的原子寫,即只要程序以8 B 的粒度寫入Optane PM,無需額外的數據結構即可保證數據一致性.如圖1 中的ADR 區域,只要數據進入ADR 區域即可保證數據完整性,該區域已經在目前支持Optane PM 的第2 代英特爾至強可擴展CPU 上得到廣泛支持;eADR 區域與ADR 的區別之處在于它的持久域包括整個內存層次架構及CPU 緩存,只要數據進入CPU 緩存中就可以保證數據的完整性,不會因為系統崩潰以及意外斷電而導致數據丟失.

如果將Optane PM 直接放置在現有的應用程序上,具有3 點局限性:1)讀寫不對稱,已有的研究[23-24]表明在最理想的測試環境下,Optane PM 的順序讀延遲是DRAM 的2 倍,隨機讀延遲是DRAM 的3 倍,但是Optane PM 使用專有指令集的寫延遲與DRAM 相差不大.2)訪問粒度不匹衡,Optane PM 的帶寬不能隨著訪問粒度的增大而線性增長,研究表明小于256 B 的隨機訪問Optane PM 會引起寫放大,導致Optane PM 的使用壽命減少[23-24].3)可擴展性差,Optane PM 的吞吐率無法隨著線程數量的增長而線性擴展,在高并發場景下,這將會造成大量的資源浪費,并且產生性能瓶頸.

隨著新型硬件商業化應用的興起,事務管理系統的發展面臨新的挑戰,主要包括2 個方面:

1)HTM 的區域容量以及并發控制協議增加了事務中止概率

HTM 可以提供硬件級別的事務沖突檢測,并減少各個核心之間的鎖同步開銷.在HTM 中,事務以類似樂觀并發控制協議(OCC)的方式執行.然而,互聯網正在重塑我們的日常生活,各種新型業務需求正在爆炸性增長,大事務和長事務等類型的事務所讀取或寫入的緩存行數量會溢出HTM 區域.因為HTM 中的事務在執行時是在CPU 核心的私有核心區域中處理.如果此時事務發生沖突,則有可能中止其他對相同緩存行讀取的事務,從而造成資源浪費.此外,事務的沖突檢測、沖突解決時機以及一致性保證也會制約事務管理系統的吞吐性能.僅使用單個核心的HTM 可以避免核間數據通信,減少事務沖突中止率,但是這種方案無法高度并行化.因此,如何擴展HTM 區域并選擇合適的沖突檢測時機,是設計硬件事務內存驅動的事務管理系統的重要挑戰.

2)Optane PM 的硬件特性限制了事務系統的性能

Optane PM 的延遲、吞吐特性會限制現有的事務管理系統的性能.相比較于傳統事務管理系統中的磁盤訪問方式,Optane PM 已經將訪問延遲降低至納秒級別.從理論層面分析得知事務管理系統沒有完全發揮Optane PM 的性能極限,主要原因有2 個方面:一方面,Optane PM 可以提供持久化存儲,但是它無法保證系統崩潰之后較大數據粒度存儲至Optane PM 上的數據一致性.而且,由于Optane PM 的讀寫不對稱以及訪問粒度等硬件本身特性的限制,目前現有的機制如日志等會造成大量的帶寬浪費并減少Optane PM 的使用壽命.另一方面,當前的事務并發控制協議需要重新設計沖突檢測策略以及持久化順序.Optane PM 無法隨著現代多核架構中內核數量的增加而線性擴展事務吞吐性能.并且Optane PM 可以為HTM 提供持久化存儲,但是當前的并發控制協議無法充分發揮硬件級別的性能以及Optane PM 訪問模式特性也會對HTM 進行制約,直接將二者結合會因為事務執行和存儲關鍵路徑上的等待問題而降低事務吞吐性能.

2 新型硬件環境下的事務相關概念

本文將從事務并發機制、軟硬協同、事務崩潰恢復機制3 個維度著手進行綜述.事務并發機制是保證事務性能的軟件基礎,軟硬協同是設計高性能事務管理系統的重要方向,事務崩潰一致性機制是保證事務管理系統的可用性.

2.1 事務并發控制協議

并發控制協議是事務管理系統的重要組件,其代表允許事務并發執行的最大限度為多少,而隔離級別則控制事務并發執行的性能.事務的隔離級別一般可以分為強、弱2 種級別.事務中強隔離級別為串行化(serializable),它意味著一次僅執行一個事務,一個事務結束之后才處理下一個事務.雖然這種隔離級別無需額外的機制保障數據一致性,但是它會制約事務管理系統的擴展性,這與語義模型的并發性趨勢相違背.弱隔離級別可以分為快照隔離(snapshot isolation,SI)和可串行化快照隔離級別(serializable snapshot isolation,SSI).快照隔 離級別 指的是事務在讀數據時并沒有讀取最新的數據項,而是選擇某個時間點具有一致性保障的數據快照(副本),目的是減少等待其他并發事務完成的時間.對于此隔離級別下的寫事務,事務容易發生“寫傾斜”異常.因為快照隔離級別并發執行的2 個事務存在修改同一個數據項的可能性,但是它們無法獲取雙方事務更新后的數據項狀態,從而無法保證數據一致性.可串行化快照隔離追蹤并發執行多個事務之間發生的沖突(讀-寫、寫-讀和寫-寫沖突),一旦檢測到沖突事務,系統則選擇中止其中一個事務達到可串行化執行的目的.

以上的并發控制協議隔離級別的實現機制分為基于鎖的協議和基于時間戳的協議.基于鎖的并發控制協議的典型代表是數據庫中的2 階段鎖(two-phase locking,2PL).2PL 在事務的執行過程中分為2 個階段:1)增長階段,這個階段事務獲取相應讀寫的數據項,并對其上鎖,阻塞其他事務對數據項操作.2)縮減階段,這個階段釋放增長階段獲取的數據鎖,并不獲取新的鎖.基于時間戳的并發控制協議對每個事務賦予唯一的時間戳,通過時間戳的大小避免并發事務之間的沖突,保證事務可串行化執行.

根據事務沖突類型以及并發控制協議的實現機制,并發控制協議可以分為悲觀并發控制、客觀并發控制和樂觀并發控制.2PL 就是典型的悲觀并發控制協議,適用于解決讀-寫和寫-寫沖突.但是悲觀并發控制對事務操作數據單元集合中的每個數據項都需要獲取鎖,而頻繁的鎖管理操作會降低事務處理性能.因此,客觀并發控制為了減少鎖開銷,使用基于時間戳的機制.每個事務開始時會獲取唯一的時間戳作為事務的開始標志,通過時間戳的邏輯順序,事務管理系統可以保證事務的讀寫操作有序執行.樂觀并發控制認為事務執行期間不會相互干擾,因此事務可以在執行期間不獲取任何鎖,直接對事務操作邏輯單元集合中的數據項進行更新.但是在事務提交之前,樂觀并發控制會驗證讀寫數據是否存在沖突.如果驗證失敗,則中止事務并回滾相關數據項;否則說明事務執行期間沒有任何沖突,則可以提交事務并持久化更新相關數據項.

HTM 的思想是“盡力而為”,因此當事務在硬件層面沒有成功提交時,需要使用軟件回退保證事務的執行進度.通常采用全局鎖序列化執行未能成功執行的事務.根據沖突檢測時機,現有的方案分為2 類:急切檢測和惰性檢測.急切檢測指的是在硬件事務啟動后立刻檢查全局鎖的狀態,如果發現已經上鎖,則該事務立刻中止;否則,事務則在硬件路徑上執行.并且,事務追蹤鎖的更新狀態,一旦發現其他事務獲取鎖,則中止事務.但是,急切檢測機制無法同時執行推測性事務和軟件回退路徑上的事務,而惰性檢測則是在事務提交之前獲取鎖狀態,類似于樂觀并發控制算法.HTM 通過黑盒和強原子性操作保證事務的一致性.但是當發生沖突時,非事務性訪問的位置都在事務性訪問之前進行排序,從惰性檢測的角度無法觀察到數據不一致的狀態,從而導致事務錯誤提交.

2.2 事務軟硬協同設計

隨著新型硬件技術的發展,僅使用新型硬件直接替代傳統事務管理系統中持久化介質的技術路線并不能發揮硬件本身的最大性能.原因是新型硬件的特性無法透明支持上層程序應用,導致軟件棧限制了事務吞吐性能,具體原因為:

研究表明[23-24]Optane PM 內部的訪問粒度為256 B,這與CPU 中的緩存行粒度64 B 不匹配,如果不對程序編程模型進行重構,將造成大量的寫放大.并且第3 代英特爾可擴展至強CPU 提供了有效的緩存行刷新(CLFLUSH)、優化的緩存行刷新(CLFUSHOPT)、緩存行寫回(CLWB)、非臨時存儲(NT-STORE)和內存屏障(FENCE)原語.CLFLUSH 指令能夠將指定內存地址的緩存行從CPU 緩存中淘汰,并向所有CPU核通知.如果該緩存行是臟數據,則在緩存行失效前寫回主存中.CLFUSHOPT 指令則是CLFLUSH 的優化版,其支持在訪問不同的緩存行時,可以不按照順序淘汰緩存行.CLWB 作為目前只有第3 代英特爾可擴展至強CPU 支持的指令,它的功能與CLFLUSH 相似,但是在緩存行的數據寫回主存之后,該緩存行仍顯示為未被修改的狀態,即寫回數據后不讓緩存行失效.NT-STORE 指令可以使數據繞過緩存,直接將數據寫入Optane PM.而FENCE 的功能則是保證訪存指令按照程序的邏輯順序執行,即在高并發場景中,多個load/store 指令對Optane PM 上的數據進行并發操作,緩存行刷回可能會并行執行,導致臟緩存行無法保證有序寫回,這時則需要FENCE 指令來約束緩存行的寫回順序.但是,Optane PM 相關的指令如CLFLUSH 和FENCE 在保證串行持久化時會產生較大的持久化開銷,降低系統性能.

HTM 作為底層硬件級別的沖突解決方案,其可以與Optane PM 結合.但是由于高速緩存行逐出策略具有黑盒屬性,Optane PM 的指令集無法對高速緩存行的狀態進行有效推測,從而可能出現事務數據持久化順序無法受到指令集約束的情況.

2.3 崩潰一致性

由于Optane PM 具有異步刷新功能,加載至ADR區域的數據并不會丟失.在系統意外斷電或者程序發生崩潰錯誤后是否可以維護數據一致性,是衡量事務管理系統可靠性的一個重要指標.即使事務管理系統發生故障,系統在恢復后仍然可以訪問正確狀態的數據.但是在實際程序語義模型中,由于一個事務內部可能需要修改多個數據項,系統崩潰故障可能發生在事務部分數據項已經完成變更狀態并持久化之后.而故障恢復模型可以在系統恢復時追蹤數據狀態,將數據恢復至正確狀態.

持久化模型保證事務管理系統的崩潰一致性,但是一致性模型規定的持久化順序會限制事務管理系統的吞吐性能.按照數據上下文持久化順序可以將持久化模型分為2 類:嚴格持久化和寬松持久化.程序語義中的嚴格持久化與Optane PM 上數據存儲順序一致.如果前面的數據沒有存儲完成,會阻塞后續的數據存儲,這種模型受到了排序約束從而導致性能瓶頸.寬松持久化模型允許數據持久化的順序與程序語義中上下文中的數據可見性順序不同,通過設計新的持久化屏障控制數據的可見性和存儲排序約束性.

構建在Optane PM 上的事務管理系統在崩潰恢復時對數據的操作原語同樣需要原子性操作.目前用作實現崩潰一致性的技術分為2 類:預寫日志和影子分頁.預寫日志要求在數據寫入Optane PM 之前將數據的變化記錄在日志中,日志先于數據持久化.當前主流的預寫機制分為undo 日志和redo 日志.undo 日志在每一個數據持久化之前首先創建一條日志并持久化,使多個獨立寫原子化地執行.系統崩潰重啟后利用undo 日志的內容將未完成的原子單元中的修改回退到一致性狀態.redo 日志采用異地更新方案,在日志中記錄更新后的數據版本,當事務單元的所有更新結束后首先將日志持久化,之后再將數據寫回到原位置.影子分頁與預寫機制的不同之處在于允許數據異地更新,從而減少預寫機制的冗余寫入.影子分頁也叫做寫時復制(CoW),它創建一個新的數據副本,并將原始數據以及后續的更新內容寫入到持久存儲,然后改變指針來指示新的對象/數據,而舊的對象/數據則可以被丟棄.影子數據對整合數據區域維護2 個(或多個)版本,每次只更新一個版本,保證了在任何時刻至少有一個副本處于一致性狀態,系統崩潰后通過觀察持久性狀態信息來選擇具有一致性版本的數據恢復.

本文對上述方案進行了總結,如表2 所示.表2中N為一個事務內修改的單元數,內存屏障數量表示持久化約束指令,flush 表示需要手動將緩存刷回到Optane PM 的次數.

Table 2 Performance Comparison of Write-ahead Logs and Shadow Paging表2 預寫日志和影子分頁的性能對比

undo 日志中每個單元更新引入2 個順序限制:日志數據必須在日志頭更新之前持久化,以及日志頭的持久化必須在更改數據之前.因此需要2 個內存屏障,并且需要對日志、日志頭以及數據本身執行3次緩存刷回,除此之外還需要保證每個事務的日志清空要在數據更新完成之后.

redo 日志異地更新數據,日志數據持久化后需要更新日志大小,之后才能原地更新Optane PM 對象,其中每個對象需要1 次緩存刷回,日志區域以及日志大小各需要1 次持久化寫入.

CoW 只需要保證事務在更新對象指針之前,每個操作對象的更新已經完成持久化,每次更新需要將對象本身以及對象指針刷回.并且,在以數據塊為單位的事務管理系統中,CoW 需要拷貝整個數據塊的內容,如果數據塊的容量被設置得很大將會導致較高的復制開銷.

雖然表1 所述方案的實現方式不同,但是它們有4 條共同原則:1)一定會有一個數據副本;2)一定會有一個持久性狀態信息來指示哪一個副本處于一致性狀態;3)要求至少一個持久化寫的順序限制;4)只有經歷一次與持久性設備之間的往返屏障之后才能保證數據持久化.這4 條共同的性質也是保證崩潰一致性的基本要求.

3 基于新硬件的事務管理系統研究

為了應對新硬件帶來的挑戰,相關研究學者針對新硬件本身特性和事務屬性展開了一系列相關工作.本節僅從單機事務管理系統相關文獻出發,并將這些文獻劃分為硬件事務內存驅動的事務策略研究、面向持久化內存的事務管理系統技術研究和面向新硬件的軟硬協同事務技術研究,并在最后對這3 個研究進行總結.研究框架圖如圖3 所示,從硬件本身、事務并發控制機制和持久化機制3 個維度進行分類分析.

Fig.3 The technical framework of transaction management system based on new hardware圖3 基于新硬件的事務管理系統技術框架

3.1 HTM 驅動的事務策略研究

隨著多核架構的發展,并行編程已經成為了當前程序語義模型的主流實現方案.為了保證同步訪問共享內存中的數據,傳統的方法容易導致程序上下文出錯,并且基于軟件運行時開銷較大.HTM 作為一個抽象的硬件級別解決方案,減少額外沖突檢測開銷,但是HTM 受限于區域容量限制,并且操作系統上下文中的原語操作容易中止事務,限制了HTM 的可擴展性.降低HTM 中的事務中止率,減少HTM 的軟件棧路徑開銷對于HTM 驅動的事務管理系統至關重要.表3 對目前主流的HTM 驅動的事務管理系統進行總結.表3 中的沖突檢測代表事務沖突檢測時機,其中惰性檢測意味著事務沖突檢測在提交時才進行檢測,急切檢測則反之.數據版本含義為數據持久化是否立即發生,惰性代表事務提交后數據進入緩沖區,急切則代表數據被日志所記錄.回退路徑則代表HTM 不提供進度保證,需要采用其他機制保證軟件回退.悲觀回退路徑代表事務回退時,需要對相關的數據項獲取鎖,重試則代表事務會丟棄所有執行的更新并重新啟動更新.

LogTM-SE[25]發現目前HTM 方法中的數據版本控制以及沖突檢測嚴重依賴L1 緩存.然而,這樣做一方面增加了L1 緩存的存儲壓力,另一方面也不利于訪問事務的狀態信息.LogTM-SE 利用簽名以及日志來存儲事務狀態信息,將事務執行路徑與L1 緩存解耦.簽名用來檢測事務沖突,在收到緩存一致性請求時,處理器立刻利用簽名信息檢查讀寫集合是否沖突.日志則用來保證事務沖突后可正確回退,因此LogTM-SE 發生數據更新時使用日志記錄數據的變化,出現事務中止回退時采用悲觀機制即獲取鎖的方式保證數據有序回退.簽名以及日志的實現僅需要少量修改現有硬件提供的緩存陣列,實現了事務執行路徑與L1 緩存的解耦.在此基礎上其允許事務狀態信息可以被軟件訪問,操作系統內核和運行時軟件可以利用這些信息來支持事務虛擬化,支持任意大小的事務,并且可以接受內存頁切換等操作系統活動.

Table 3 Classification of Transaction Strategy Research Driven by HTM表3 HTM 驅動的事務策略研究分類

EazyHTM[26]發現在事務之間發生沖突時立刻中止會增加級聯等待時間.為了解決事務潛在沖突,事務管理系統需要推測事務之間的優先級順序.但是,由于事務在執行時缺少先驗性知識,無法得到最優結果.即使得出正確結論,事務之間也無法保證高度串行化.基于此觀察,EazyHTM 將沖突檢測和沖突解決任務分離,在事務執行的同時進行沖突檢測,但是沖突解決推遲至事務嘗試提交時進行,從而實現惰性沖突檢測機制.這種機制類似于樂觀并發控制協議,但是與之不同的是,EazyHTM 可以避免事務提交時的驗證,減少驗證等待時間.為了保證在多個CPU核中的數據一致性,EazyHTM 通過對MESI 協議進行微小修改.其使用位圖維護事務提交時必須中止的事務列表,并且允許事務通過向其他CPU 核心廣播特殊請求,中止每個CPU 核心上正在執行的事務.通過設置2 個額外的標記位擴展私有緩存,分別代表關聯緩存行已被讀取和緩存行已被修改.EazyHTM允許事務管理系統在事務生命周期內維護一個完整的沖突快照,使用該快照可以進一步地提高事務處理性能.

由于EazyHTM 從事務中止中恢復服務時,無法確定與其他CPU 核心上的事務是否發生沖突,從而引發事務長時間等待處理的結果,降低事務性能.Pi-TM[27]可以加速這一過程,采用溫和的悲觀機制,在私有緩存中維護一個額外的單位,稱為Pi 位.當事務中止時,只有事務執行過程中操作的緩存行才會失效.并且事務可以立即重試,使用私有緩存的數據進行處理,無需額外的通信開銷.為了保證數據一致性,事務提交時會強制讀取集合中存在沖突的緩存行無效.當系統中事務沖突率較高時,Pi-TM 使用混合檢測方法,同時采用惰性沖突檢測以及使用之前的Pi機制.這2 種模式都發生在私有緩存中,因此可以安全交互.

HTM 的“請求者獲勝”原則在發生事務沖突時,會重復導致相同的事務中止,迫使執行更慢的非推測性路徑,并且對長時間運行的事務極為不友好.針對此場景,PleaseTM[28]解耦事務沖突一致性檢測路徑,僅在一致性請求中添加請求位,同時追蹤緩存行狀態,透明支持更深層次的一致性協議.PleaseTM 中的事務在接收到請求者消息時,可以根據實際執行過程自由選擇是否中止事務.為了保證序列化原子性執行,事務在重新請求緩存行時,需要重新獲取事務執行之前的舊數據來驗證數據是否發生變化.如果數據不一致,則中止事務.該機制的優勢是發生事務沖突時減少一致性協議中的數據傳輸,并可以與軟件事務內存協議協同工作,進一步提高性能.

“盡力而為”的HTM 的一個關鍵設計約束是避免修改一致性協議,因為在實際場景中,高速緩存行中的數據和狀態都是轉瞬即逝的,并且對緩存一致性協議進行修改容易引起程序語義模型崩潰.Forgive-TM[29]提出一種惰性沖突檢測模型,無需修改現有的緩存一致性協議,并且支持延遲沖突檢測.它采用“先行動,后請求”的原則,推測性寫入會立即寫入特殊緩沖區中,無需獲取全局寫入權限,僅在事務提交時才獲取寫入權限.在延遲寫入時,處理器僅檢查數據的讀取權限,只在讀取權限不可用時,才會對其他核心廣播獲取讀取權限.當事務對緩存行具有讀取權限時,該緩存行則被添加至LazySet,在本地私有緩存中該緩存行狀態則為臟數據,并且對于全局是不可見狀態.事務對緩存行檢索或存儲時,不會發生任何改變數據一致性的操作.當該事務提交時,Forgive-TM 分為2 階段提交:第1 階段是提交準備階段,對LazySet 中的所有數據獲取全局寫入權限,任何推測性訪問LazySet 中的數據都將被中止.第2 階段是提交階段,該階段的原則是盡力而為.如果該階段發生沖突,事務則向對等方發送一條特殊消息,阻止其他事務提交.由于延遲檢測與處理沖突會直接影響事務延遲,因此Forgive-TM 限制了LazySet 的大小,并采用打分機制推理緩存行發生事務中止的可能性.通過打分機制可以對一部分緩存行進行惰性寫入,從而降低延遲.并且Forgive-TM 在事務到達提交時,發送寫權限請求,允許操作重新排序為多核應用程序提供更高的可擴展性.

HTM 需要提供一個回退計劃來保證事務在經歷HTM 區域空間不足、頁錯誤以及高競爭導致的頻繁崩潰等場景時不會永遠阻塞下去,常用的手段例如Intel 提供的RTM 中采用積極的單一全局鎖機制,所有的事務在開始階段都需要檢查全局鎖是否被上鎖.如果是表明當前有事務正在執行回退計劃,則本事務直接崩潰,否則事務正常執行.然而這種機制嚴重限制了系統的并發性,當有一個事務執行回退計劃時,即使其他事務與回退計劃中的事務沒有沖突,也不得不等待其結束.CIT[30]對硬件做了少量修改,在緩存一致性協議的請求消息中增加推測位,在響應消息中增加請求位,并在L1 緩存中增加沖突隊列,沖突的事務請求將會被放置在沖突隊列,并在事務結束或者崩潰后移出隊列.CIT 借助沖突隊列使系統執行回退計劃時允許其他事務并發地執行,只有當沖突真正發生時才會中止事務,從而提高系統的并行性.CIT 通過消除或者避免獲取回退鎖的方式增加事務之間的并發性,并且所需的指令和硬件更改遠少于現有方法,可以顯著提高事務性能.

針對數據庫中事務內存同步數據開銷大的瓶頸,Leis 等人[31]對每個事務的讀寫集合分配一個時間戳,使用樂觀并發控制協議執行事務.由于事務發生沖突后回滾事務恢復數據時,為了保證數據一致性,需要對相應的數據項上鎖,產生較大的開銷.Leis 等人[31]分析了HTM 原理,發現HTM 可以捕獲沖突,并保證較低的回滾成本.當發生事務沖突時,因為HTM 內部有latch,只需要將事務修改的緩存行失效即可.而原本的數據副本依然存在L2/L3 緩存中,后續事務執行可以直接從高速L2/L3 區域中讀取.為了避免事務回滾時無限次重試,Leis 等人[31]使用事務開始執行時分配的時間戳計算安全時間窗口,以序列化的語義模型重新執行事務.為了提高HTM 中事務沖突錯誤識別率并提高事務插入性能,Leis 等人[31]提出一種友好的HTM 存儲模型,將內存區域分成多個zone segement,避免集中訪問同一內存位置造成的事務高沖突率.實驗結果表明該方法與數據庫結合可以提高事務并發性能,并且在多核處理器上具有較好的可擴展性.

新加坡國立大學的研究者分析了HTM 應用于OCC 時的性能變化.雖然在一些場景下可以取得較高的事務吞吐率.但是,在處理高爭用的工作負載時,性能遠低于理想情況.并且在事務中止后重新執行時,需要檢索相關數據進行處理.因此,HTCC[32]將數據冷熱分離,根據數據爭用熱度自適應選擇悲觀并發控制或者樂觀的HTM 訪問數據.為了降低事務中止后的頻繁重試執行,HTCC 維護一個工作集緩存,對事務操作原語進行保存,該機制可以減少頻繁的磁盤I/O.為了防止在高爭用時工作集緩存區中的數據項出現死鎖,HTCC 使用HTM 簡化程序語義模型.在事務處理時,HTCC 可以自動跟蹤事務的沖突訪問,對引發事務驗證失敗的記錄進行原子性來增加其計數器.為了保證事務的序列化提交,HTCC 采用時間戳機制為每個事務分配唯一標識進行排序.為了兼容數據庫中的操作原語,HTCC 使用標識位對每個記錄進行標識,并結合數據庫本身的操作原則進行處理.HTCC 通過降低事務沖突中止率,無需頻繁地重試執行,因此可以在多線程場景中展現較高的性能.

澳大利亞國立大學的Cai 等人[33]對HTM 特性進行了更加深入的研究,發現之前關于HTM 的工作僅僅考慮了容量對程序模型的影響,并沒有考慮緩存替換策略是決定事務讀取有效緩存行的關鍵因素.Cai 等人[33]對當前主流的英特爾處理器模擬了HTM的事務執行過程,通過觀察得出結論:事務管理系統在執行事務之前應該預熱相關數據.其目的是為了提高事務成功提交率,減少由于緩存行頻繁逐出而造成的事務高中止率,并且Cai 等人[33]事務管理系統應該優先逐出未被事務訪問的緩存行.

3.2 面向持久化內存的事務管理系統技術研究

持久化內存可以將數據持久化的延遲降低至納秒級別,由于持久化內存的特性與現有的傳統硬件并不相同,因此需要重新設計更適合新型硬件的事務管理系統,這是系統設計者的當務之急.為了全面理解面向持久化內存的事務管理系統技術,本文從事務自身的宏觀角度出發,對其進行總結,如表4 所示.表4 中的持久化方案意味著確保數據持久化和崩潰一致性的機制.并發機制代表事務并發執行時的事務管理機制.隔離級別包括最嚴格的線性化成為系統的瓶頸,去中心化分配事務唯一標識以及使用邏輯時間戳等方案更符合事務系統高擴展的趨勢.寫放大遵循TimeStone[34]的計算規則,是持久化內存上實際持久化數據大小和事務請求之間的比率.寫放大出現的原因是為了保證事務一致性從而引入了額外寫操作.管理粒度是指事務系統操作持久化內存區域的單元大小或者其鎖粒度,較小的管理粒度可以提高事務并發性能.(linearizability,LN)、可串行化(serializability,SR)以及快照隔離(snapshot isolation,SI)機制.LN 保證事務內的讀寫操作完全按照事務的執行順序執行.SR 相對放松了順序限制,允許不同事務的讀寫事務交錯進行,但是最終事務從整體上符合某一種線性順序.而SI 只需保證事務讀取的數據是在某一時刻具有一致性狀態的內存快照,但是可能會出現寫傾斜的問題.事務標識用來區別每一個事務,也可以用來作為恢復階段日志執行的順序,中心化分配的ID 通常會

Table 4 Classification of Persistent Memory-Based Transaction Management System表4 面向持久化內存的事務管理系統技術分類

Marathe 等人[46]通過實驗對比了基于undo,redo,CoW 機制的事務管理系統在模擬的持久化內存環境上的表現,綜合考慮了持久域、工作負載訪問模式、緩存一致性等因素.實驗結果顯示,每項技術在不同的場景中都有自己的優勢和缺點.基于預寫日志的技術需要寫日志以及數據本身,但是額外的寫操作會導致較大的開銷.為了保證數據一致性,預寫日志一定要在更新數據之前完成持久化操作.而undo 日志由于無法事先獲取寫集合,因此集合中每一個更新都需要保持嚴格的順序,對于N個日志項會增加2N個持久化屏障,從而導致性能急劇下降.redo 日志直接在日志中創建新版本數據并直接更新.但是由于新值僅出現在日志中,隨后而來的讀操作必須查閱日志才可以獲得最新值,有可能出現遍歷整個日志才可以找到最新值的情況.CoW 機制可以避免這些問題,但是引入了大量的元數據更新,例如對象的指針、內存分配器的元數據,這些元數據的更新主要是由較小的數據結構(小于64 B)組成,而非易失性內存內部的訪問粒度為256 B,大量較小的隨機元數據更新會導致嚴重的寫放大問題.同時CoW 也會產生較大的緩存局部性開銷.

1)基于undo 的日志事務管理系統

Kolli 等人[35]發現由于持久化內存存在較高的寫延遲,減少寫操作的順序限制對提高事務系統的性能至關重要.Kolli 等人[35]首先分析了理想情況下,即軟件可以識別出所有持久性寫之間的順序依賴時系統能夠實現的最小持久化關鍵路徑長度,并以此為基準優化現實的工作負載.文獻[35]總結了4 種持久化模型,分別是嚴格持久化(strict persistency)、階段持久化(epoch persistency)、鏈持久化(strand persistency)以及樂觀同步(eager sync).嚴格持久化限制任何2 個持久化操作之間的順序,保證強一致性,但是由于嚴格序列化,導致事務無法亂序持久化,降低事務吞吐率.階段持久化寬松了持久化順序的限制,要求保證2 個階段之間的持久化順序.鏈持久化將程序的執行劃分為鏈,新的鏈將會得到之前的事務持久化順序限制,從而保證每個鏈都是獨立的,鏈內通過持久化屏障保證順序.樂觀同步利用Intel x86 提供的緩存行刷新指令以及PCOMMIT 指令保證持久化的順序以及其對外可見的順序.Kolli 等人[35]在這4 種持久化模型的基礎上進一步引入延遲提交事務(DCT)減少了持久化操作之間不必要的順序限制,提高事務的性能.為了保證一致性,Kolli 等人[35]采用undo 日志記錄數據項的變化,并為每個線程維護一個日志來提高可擴展性.Kolli 等人只關注靜態事務,即執行前可以知道事務修改的內容,同時利用校驗和的方式保證日志的完整性,降低每次寫日志所需的內存屏障.由于使用了延遲提交,需要保證事務之間的順序,他們使用向量時鐘來排序事務,在系統崩潰后逆序恢復數據.DCT 在保證事務一致性時需要完成2次數據持久化,即undo 日志項和寫入對象數據本身,因此該方法寫放大為2.DCT 中靜態事務的先驗性知識并不適用于通用的場景,無法預先獲取現實場景中事務修改的數據集合.

與DCT 不同的是,Kamino-Tx[36]支持動態事務,它主要關注如何減少事務提交關鍵路徑上耗時較長的對象拷貝操作,通過對事務邏輯執行單元中的數據對象維護2 個版本,將數據拷貝操作移出了事務提交的關鍵路徑,縮短了事務的提交延遲.傳統的事務一致性機制如預寫日志以及CoW 等,它們需要在事務提交之前持久化舊版本的數據.由于持久化內存寫延遲較高,Kamino-Tx 選擇維護一個后備版本的堆結構,事務在執行過程就地讀取或更新主區域數據對象,提交之后將本事務的修改拷貝到后備堆區域中,縮短了提交延遲.這種后備堆區域本質上也是一種undo 日志.然而直接備份整個堆空間將導致持久化內存中的內存開銷翻倍,Kamino-Tx 提出只備份頻繁訪問的數據對象,利用一個并發的哈希表來查找對象是否已經備份.系統支持設定備份空間的大小,當空間超過設定閾值時,將利用LRU 算法替換備份區域的對象并更新查找表.Kamino-Tx 在持久化內存中記錄事務修改的內容,將更新數據從主區域拷貝到備份區域或者在系統崩潰后從備份區域恢復.需要注意的是,Kamino-Tx 在持久化內存上備份熱點數據可以顯著提高具有傾斜特征的工作負載下的事務性能,但是直接在非易失性內存上同時記錄事務修改內容會增加持久性寫的開銷.

為了減少Kamino-Tx 的持久性指令帶來的開銷,Romulus[37]機制利用高速主存記錄修改的內容,在持久化內存中維護數據的雙副本,并存儲在2 個不同的區域,即主區域和后備區域.由于在某個時間點,Romulus 保證主區域和后備區域中的數據副本狀態至少存在一個是一致的.因此,系統崩潰后直接恢復整個數據存儲區域.Romulus 將持久化內存空間分為3 個區域:控制頭、主區域以及后備區域.控制頭存儲了系統的元數據信息,其中最重要的是事務狀態信息,包括“空閑”“執行”“拷貝”3 種狀態.“空閑”即系統內沒有事務執行,“執行”表示當前有事務正在執行并且修改了內存狀態,“拷貝”狀態表示事務執行完成正在備份事務的更新.Romulus 利用這3 種狀態判斷系統崩潰后如何恢復.后備區域是主區域的一個備份,事務執行過程中直接修改主區域,事務提交之后將更新拷貝到后備區域.為了減少數據拷貝開銷,Romulus 在修改主區域的同時在DRAM 中生成redo日志(此日志不需要持久化),記錄主區域中被修改的地址以及修改的大小,因此事務執行結束后只需要拷貝redo 日志中記錄的數據區間即可.Romulus 避免了重定向讀,讀取事務僅需要單個指令加載數據,并且將每個事務的內存屏障數目限制為4.因此,Romulus 在讀場景下的性能可以和線程數量呈線性關系,并且較少的持久性指令和較低的寫放大可以提高事務整體性能.但是由于Romulus 中的主、備區域大小是相同的,因此事務數據存儲空間只能使用持久化內存區域一半的空間,顯著降低了持久化內存的空間利用率.

ATOM[38]采用緩存行級別的undo 日志來保證持久化內存更新的數據一致性,利用內存控制器(硬件層次)創建日志.日志控制器位于L1 緩存,每個store操作都創建一條日志.由于undo 日志只需要保存事務開始前的數據版本,因此ATOM 利用一個日志位標記緩存行是否已經被記入日志,避免重復的日志持久化操作.undo 日志的性能瓶頸在于強制了日志操作與數據更新之間的順序,因此,ATOM 在硬件層面將日志與數據發送到同一個內存控制器,更新緩存之前首先在內存控制器對緩存行上鎖并寫日志.同時緩存控制器可以將數據更新到存儲緩沖區,不需要等待日志的持久化完成,等待日志持久化完成之后對緩存行解鎖使數據可以寫回至持久化內存,保證了日志與數據之間的持久化順序.在緩存不命中時,內存控制器加載到的數據是undo 日志需要記錄的版本,因此內存控制器直接對緩存獲取鎖,向緩存傳遞數據時添加日志位,避免了日志控制器向內存控制器的冗余數據傳輸.ATOM 利用類似數據庫中組提交的思想將7 個數據緩存行與一個元數據緩存行作為一個日志單元,減少57%的日志寫操作,并通過跟蹤日志更新的依賴關系和硬件更新的數據,將日志更新移出數據原子更新的關鍵路徑,提高事務執行效率.ATOM 通過更新緩存行級別的undo 日志以及記錄數據對象本身實現事務一致性,在內存控制器對緩存行中的日志進行修改時所使用的鎖并未持久化,因此ATOM 的寫放大為2.

2)基于redo 的日志事務管理系統

Mnemosyne[39]方法實現了一個簡單的持久內存編程接口,并且提供了4 種不同粒度的一致性保障機制:單字更新、追加更新、影子更新以及就地更新,這4 種機制隨著通用性的提高逐漸呈現性能下降的趨勢.Mnemosyne 中利用高性能的 raw word log(RAWL)日志結合現有的軟件事務內存系統TinySTM[47]來支持持久化內存事務.Mnemosyne 支持在代碼中用“atomic”關鍵字注釋事務代碼段,編譯器識別出事務代碼后觸發底層TinySTM 中提供的事務原語,系統為每個線程維護一個基于RAWL 的日志,事務更新數據時在DRAM 中創建redo 日志記錄更新的地址及數據,事務提交后日志刷回到持久化內存上持久化,數據原位置中仍然保留著未更新的數據,當訪問數據時首先檢查數據是否被更新,若被更新則到對應的日志中讀取最新的版本.為了保證系統的可擴展性,Mnemosyne 將地址空間分區,每個區域維護一個單獨的鎖,當訪問持久化內存空間時需要對該區域獲取鎖,若已經被其他事務持有鎖則該事務崩潰.Mnemosyne 的優勢是支持同步或異步地將日志中的數據刷回到原位置,不需要等待寫回操作,直接提交事務,縮短了事務提交的延遲.但是,Mnemosyne 的直接利用為DRAM 主存設計的TinySTM 提供事務語義,忽略了持久化內存的內部特性,無法充分利用持久化內存的性能優勢.

為了進一步提高持久性事務的性能,LOC[40]將持久化內存事務系統中的順序限制區解耦為事務內的順序執行和事務間的順序執行:事務內的順序執行指事務提交之前必須等待本事務所有更新的數據全部持久化,并且更新提交標記;事務間的順序執行指不同事務間持久化的順序一定要與它們提交的順序一致.這2 個順序執行原則保證了系統的崩潰一致性.但存在由于事務提交標記以及事務間的順序執行等待導致事務性能大幅下降的問題.LOC 提出“積極提交”與“推測持久化”2 種策略分別解決此問題.“積極提交”通過特殊的日志組織方式,即采用數據塊組來存放日志及其元數據,1 個數據塊組包含7 個數據塊和1 個元數據塊.并利用基于計數的事務提交協議,即統計事務修改的數據塊數設置閾值,將日志的完整性檢驗推遲到了恢復階段,而不是在提交之前等待日志完整的持久化完成,解決了事務內順序執行的限制,從而降低了事務提交的延遲.“推測持久化”策略通過設置一個推測窗口(sp-window),允許sp-window 內的事務可以亂序地持久化,但是可以保證事務順序提交.為了實現“推測持久化”,LOC 利用多版本CPU 緩存(mv-cache)保證多個線程并發執行并且跟蹤記錄事務的提交順序.多版本緩存將窗口內多個事務的修改都暫存在緩存之中,保證了不同事務重疊寫的可恢復性,并且可以將多個修改合并寫回持久化內存.恢復階段以整個推測窗口為單元執行整體恢復,一個事務成功提交的條件為該事務滿足計數提交協議并且同個窗口中之前執行的事務都已經成功提交.LOC 旨在提高事務持久化性能,首次分析了事務之間的依賴關系并分類闡述,針對事務內部與事務之間的依賴關系,減少持久化的順序開銷,在硬件層面以很小的開銷完成事務的執行管理并提供了較高的處理效率.但是,LOC 實現中使用WAL 機制,在事務執行時需要利用日志記錄修改對象的新版本,并且為每個事務分配1 個日志塊記錄事務執行狀態.在事務執行完成后,LOC 通過更新指針修改數據版本.通常一個指針的大小小于數據對象本身.LOC 為了提高事務崩潰恢復性能,通過靜態組織日志空間機制利用1 個元數據塊和7 個日志數據塊組成日志數據塊組進行持久化存儲.因此,LOC 的寫放大大于2.

Giles 等人[41]提出一種基于軟件的寫輔助持久性(SoftWrAP)機制,解耦事務生命周期路徑,分離事務執行和持久化路徑.SoftWrAP 在持久化內存中維護一個redo 日志來保證事務更新的原子性,日志中記錄數據更新后的值.該日志僅在崩潰恢復時使用,通過緩存行追加寫的方式進行有效更新,并定期刪除無效日志.SoftWrAP 使用軟件別名機制,允許在后臺中重定向持久化內存中被管理的區域數據,從而可以在DRAM 中直接修改,減少緩存行淘汰順序限制帶來的性能瓶頸,并且可以加速主存訪問持久化內存的訪問效率.SoftWrAP 利用2 個無鎖別名表來記錄重定向的關系,一個處于活躍狀態用來接收新的請求,另一個用來將數據寫回持久化內存從而可以釋放日志空間,實現了事務執行與持久化的并發執行.由于SoftWrAP 使用雙緩存別名表,1 次讀操作可能導致3 次重定向,降低讀操作的效率.并且其采用的1 對1 頁級別映射引入了較大的內存開銷,同時SoftWrAP 在保證事務一致性的前提下額外持久化一些元數據,因此該機制的寫放大不小于2.雖然Soft-WrAP 聲稱可以與并發控制解耦,但是為了保證事務正確的隔離性,其仍然需要使用別名表等機制對系統作出較大的修改,無法透明支持事務管理系統.

DudeTM[42]利用“影子內存”(shadow DRAM)來避免redo 和undo 日志存在的問題,DudeTM 提供了一個開箱即用的持久化組件,可以結合任何現有的STM 或HTM 共同構建一個持久內存事務系統.因此,DudeTM 并發機制依賴于事務內存進行實現.DudeTM以內存頁為單位將持久化內存上的內容映射到DRAM中,事務執行過程中原地更新或讀取DRAM 中的影子頁,避免了redo 日志帶來的重定位讀以及undo 日志頻繁地刷回持久化內存操作.事務更新影子頁的同時構建redo 日志,記錄修改的內存地址和內容,執行完成之后需要將日志持久化到持久化內存.為了提高事務的可擴展性,每個線程維護一個日志.DudeTM在 “再現”階段利用構建的redo 日志將更新寫回,日志的寫回順序必須與事務的執行順序一致,否則無法保證一致性.為了保證事務的串行化執行,DudeTM利用一個全局遞增的事務ID 來為每一個事務分配唯一的標識進行排序,并將日志順序寫回持久化內存.但是由于每個線程都需要頻繁的讀取并更新全局的事務ID,導致其成為整個系統的擴展瓶頸.并且DudeTM 只使用單一的線程來執行“再現”過程,寫密集場景下單線程的數據刷回操作會造成很高的延遲,同時日志回收產生相關的同步成本也會成為阻礙系統可擴展性的關鍵因素.

Pisces[43]是一個“讀友好”的事務系統,通過快照隔離機制降低事務隔離級別從而獲得了更高的事務性能.為了利用緩存局部性并減少快照隔離數據的查找開銷,Pisces 采用雙版本并發控制來實現快照隔離,每個對象只有原始版本以及利用redo 日志構建的新拷貝版本.當事務試圖更新一個對象時,它創建一個原始對象的拷貝并直接修改拷貝對象,事務提交時再將新版本數據拷貝至原始對象.讀操作根據事務的時間戳來判斷讀取新/舊版本,并發寫操作利用對象鎖來避免沖突.但是,事務提交時舊版本的數據仍可能被其他線程正在運行的事務訪問,因此不能簡單地將新版本數據直接拷貝回原始版本.Pisces利用RCU(read copy update)機制[48]確保寫回操作的正確性,即寫回之前需要等待所有可能訪問舊版本數據的事務(開始時間小于本事務結束時間的所有事務)都結束后才將新版本寫回.Pisces 的優點是利用3 階段提交法避免了Optane PM 持久化開銷對讀操作的性能影響.首先是持久化階段將事務的日志持久化到Optane PM;之后是并發提交階段,在這一階段保證更新的數據對其他事務可見;最后是寫回階段,在這階段執行RCU 機制并將新版本數據寫回到原始對象.3 階段提交法使事務的更新不必等待耗時較長的數據持久化操作結束即可對其他事務可見,實現了近乎非阻塞的讀操作.并且,Pisces 的快照隔離可以確保事務的無鎖讀取操作,進一步地提高讀場景下的性能.但是,Pisces 采用的雙版本并發控制機制和日志回收期間的同步寫同樣會影響事務的可擴展性.

TimeStone[34]在Pisces 的基礎上進一步利用多版本并發控制(MVCC)來提高系統的可擴展性,并且首次提供了多種隔離級別.TimeStone 使用多層日志結構TOC 來保證數據崩潰一致性并最小化寫放大問題,MVCC 實現事務系統的高擴展性并以此為基礎提供了多種隔離級別.當一個線程上的事務更新數據對象時,首先在當前線程的TLog(位于DRAM)創建數據副本并直接更新,同時在OLog(位于Optane PM)記錄執行的操作保證立即持久化,事務成功提交后會利用ordo 機制[49]獲取事務的提交時間,并將TLog中的副本添加到對象的版本鏈中.當事務讀取數據時,需要在對象的版本鏈中查找提交時間早于本事務開始時間并且最新的版本,獲得數據的引用,使得事務并行性得以提升.當TLog 或者OLog 空間不足時TimeStone 會執行檢查點機制,僅需要將被更新對象的最新版本持久化到CLog(位于Optane PM)上,減少對Optane PM 的直接訪問.由于日志中的數據可能正在被引用,TimeStone 采用MV-RLU[50-51]的策略回收日志,等待所有可能引用待回收數據版本的事務結束之后再執行回收操作.TimeStone 利用多層日志架構機制最小化寫放大開銷,并且支持3 種事務隔離級別:快照隔離、可串行化、序列化,允許用戶可以通過其提供的接口在事務執行時指定隔離級別.TimeStone 的實驗結果表明,TLog 減少了日志寫入,僅有6%的TLog 被寫入CLog,因此TOC 機制有效降低了事務的寫放大.

3)基于CoW 的日志事務管理系統

Wang 等人[44]通過實驗發現持久化內存事務系統的擴展瓶頸在于不同線程事務之間的依賴與沖突,并且基于時間戳的持久化順序引入了不必要的依賴.因此他們提出了SP3 方法來提高多核場景下事務系統的并發性能.SP3 利用OCC 并發地執行和提交事務.SP3 首先創建一個對象的索引表,將對象映射到一個控制條目,這個控制條目包含了對象的鎖、最新版本的指針以及最近一次更新的事務ID 等.在OCC的讀階段,事務使用無鎖機制讀取數據并添加到讀集合(read set),事務的更新暫存到寫集合(write set)中.SP3 采用CoW 策略,即修改對象前先拷貝,并直接在拷貝版本上更新,因此寫集合只需要記錄拷貝對象的新地址.同時SP3 也會生成redo 日志,這一階段最重要的是需要記錄事務之間的依賴關系.事務訪問或更新對象前都需要先訪問其控制條目,獲取該對象最近修改的事務ID 并添加到依賴集合中.SP3 在事務提交階段引入了預測持久化機制來提高并行性,即在更新持久化之前允許更新對其他線程可見.提交階段首先執行OCC 并發控制協議驗證依賴數據是否已經被更新,通過比較訪問依賴集合中對象的控制條目記錄的最新地址與讀集合中記錄的地址判斷是否發生沖突.驗證完成之后將暫存的寫集合映射到控制條目中,即將對象的新地址以及本事務ID 更新到控制條目中,此時事務的更新將對其他線程可見.之后持久化日志以及依賴集合等待其依賴集合中的事務全部執行結束后提交事務,保證崩潰后的可恢復性.在恢復階段通過每個事務的依賴集合構建有向無環圖,并刪除未提交事務的日志.有向無環圖構建成功后利用拓撲排序決定恢復階段事務執行的順序.SP3 目標是提高多核之間的事務可擴展性,無需等待事務中的數據持久化階段完成即可允許更新后的數據對其他線程可見,減少因事務持久化時間過長而引發的事務沖突中止率.SP3 的邏輯時間戳可以提高系統的擴展性,但是全局的對象索引表依舊會成為系統擴展的瓶頸.SP3 在日志中記錄事務操作對象的指針變化,通常小于對象本身,因此該方法寫放大小于2.

Wu 等人[45]觀察到Optane PM 的特性,即隨機寫與順序寫之間有較大的性能差距,并基于避免較小的寫和盡量順序寫2 項原則設計以CoW 為基礎的原型系統.由于CoW 機制的元數據更新導致很多較小的寫操作,因此ArchTM 將內存分配元數據、對象CoW 索引元數據放置在了DRAM 中以減少Optane PM 上的元數據寫.同時利用注釋機制來保證崩潰一致性,即將對象的元數據與對象本身存儲在一起.為了盡可能地提高順序寫,ArchTM 中采用了全局單鏈表內存分配結構對小對象數據項分配空間,充分利用空間局部性.因為連續分配的對象很可能會連續訪問或修改,每個線程有自己的私有分配鏈表,只有私有分配空間耗盡才會從全局鏈表中獲取新的空間.由于對象以64 B 為單元進行分配,這種方式容易導致內存碎片,ArchTM 中使用后臺線程以4KB 粒度統計空間利用率,當小于50%時就對數據進行聚合.通過Optane PM 感知架構,ArchTM 避免了小的數據寫入,聚合可合并的數據,并將其寫入Optane PM,充分利用Optane PM 硬件內部的優勢.為了提高事務吞吐率,ArchTM 需要維護額外的元數據,同時為了確保事務崩潰一致性需要將這部分元數據持久化,因此ArchTM 的寫放大為1~2.

3.3 面向新硬件的軟硬協同事務技術研究

HTM 僅支持事務的ACI 屬性,持久化內存可以提供內存映射的持久化數據存儲,簡單的編程模型可以將2 種新型硬件結合在一起.但是大部分軟硬件協同策略為了保證事務的一致性語義,使用額外的機制集中式維護事務執行順序.事務的集中式處理不僅會影響系統的吞吐率,還會限制事務系統在現代多核架構上的可擴展性.明確軟硬協同策略的缺點并提出新型軟硬協同的事務協議,對于新型硬件環境下的軟硬協同事務管理系統至關重要.表5 對新硬件的軟硬協同技術進行了總結分類.硬件是否修改代表該研究對硬件是否進行修改,以及代表該機制移植性是否簡便.HTM 區域代表研究中HTM 控制的區域空間.日志機制代表研究采用何種機制加速事務處理以及保證崩潰一致性.持久化代表研究中允許數據持久化是否可以等待,以便于減少頻繁的寫入.可擴展性則代表該機制是否在多線程模型下隨著線程數量的增加吞吐率也隨之增加.事務標識意味著研究方法如何區分事務的唯一性以及事務之間的順序.

由于RTM 受限于L1 緩存的區域大小,數據只能短暫滯留在LLC 緩存行中,并且LogTM-SE[25]在中止事務時會阻塞其他修改同樣數據單元的事務并發執行.為了快速實現ACID 編程模型,DHTM[52]使用HTM 與非易失性內存相結合,從而加速事務處理性能.DHTM 采用一種基于HTM 的redo 日志,在內存中維護一個單獨的區域,允許寫入覆蓋緩存中先前的值,提供持久化和原子性保證,并對L1 中的緩存行設置標簽位,目的是跟蹤讀取和寫入集合,從而將RTM 從L1 緩存擴展至LLC 中.為了保證隔離性,推測性讀取的緩存行必須在事務提交之前交由另外一個處理器修改,并且推測行讀取的緩存不得被修改和寫入.當正在執行的事務的緩存行從L1 緩存溢出時,事務會中止執行.因此,DHTM 維護一個溢出列表,記錄緩存行的狀態以及內容地址.為了減少從LLC 到持久化內存的數據移動,并利用日志先于數據落盤的特性,DHTM 在LLC 上創建時間緩沖窗口,使用寫合并機制減少數據持久化延遲.DHTM 通過減少持久化開銷提高了事務整體性能,但是DHTM在硬件中構建redo 日志為事務提供的崩潰原子性操作,無法擴展到其他高級語言的持久化模型中.并且,合并寫機制仍然會將冗余寫入這一過程放置在持久化內存的關鍵路徑上,可能會增加后續事務延遲,從而影響事務管理系統的服務質量.

Table 5 Classification of Soft/Hardware Co-design in New Hardware Environment表5 新硬件環境下軟硬件協同設計的分類

cc-HTM[53]不需要對硬件作任何修改,它將事務分為執行階段和持久化階段:執行階段利用Intel 處理器提供的HTM 原語并發執行,為了防止緩存替換導致的持久化內存中的數據不一致,寫操作會被映射到DRAM 中的 ALIAS TABLE,同時在易失性的緩存中生成日志,事務執行結束后再將日志持久化到持久化內存,避免HTM 事務執行期間訪問持久化內存延遲過高導致的事務崩潰.執行階段結束之前,cc-HTM 用RDTSCP 指令獲取“持久化時間戳”,并以此為序將事務放入優先隊列,事務進入“等待”狀態.專用持久化線程按照順序從優先隊列取出事務并將其更新的數據寫回到持久化內存上的原地址,形成一個符合一致性的“檢查點”,寫回后通知事務結束等待并提交.cc-HTM 還提供一個延遲參數,允許事務在持久化完成之前提交事務,應用可以根據自己的需求權衡更短的延遲與更高的一致性來設置參數區間.cc-HTM 利用遞增的全局事務計數器來作為開始與結束的時間戳,并且采用只有一個持久化線程來從優先隊列取出事務并將其更新寫回到原位置.cc-HTM 允許從事務關鍵路徑中移除延遲較大的內存屏障指令,由上層應用決定持久性時機,但是這種方法會增加上層應用的復雜性.

NV-HTM[54]與DudeTM[42]類似,同樣使用“影子頁”以及redo 日志的方式解耦事務的執行與持久化.NV-HTM 使用CPU 提供的物理時間戳來作為事務ID 的唯一標識,支撐事務的序列化執行順序,避免了全局邏輯事務ID 帶來的擴展瓶頸.每個線程記錄當前正在運行的事務時間戳,事務提交之前需要等待所有線程中更早開始或提交的事務結束以保證一致性.NV-HTM 通過檢查點策略來將日志寫回釋放日志空間.首先對每個線程的日志結尾指針進行一個原子快照,快照之前的日志都是可以回收的區域,使用反向過濾檢查點機制反向遍歷線程的日志快照,以更新的地址為鍵、內容為值創建一個鍵值對,只記錄最近的更新并且合并相關的數據項,減少回寫次數;遍歷完所有的線程后將鍵值對中的內容寫回持久化內存,并刷回緩存;最后利用“檢查點日志”(CPLog)原子性更新所有線程日志的起始指針.NVHTM 通過將日志刷新延遲到事務提交之后,消除了事務執行關鍵路徑中的日志刷新延遲.但是,NVHTM 需要事務按照順序線性提交來保證一致性,這樣引入了過多的等待,導致系統性能下降.

Avni 等人[55]發現隨著處理器核心數目的增加,基于鎖的原子性操作越來越成為系統的瓶頸,利用HTM 可以避免這個問題,但HTM 無法直接訪問持久化內存介質使其難以構建HTM 和持久內存的事務系統.Avni 等人提出一種PHTM 方法,對硬件作出修改,同時引入了新的指令透明刷回(TransparentFlush,TF).TF 支持在HTM 執行過程中將數據從緩存刷回到持久化內存并且不會使事務崩潰,也不會使緩存行失效,Avni 等人[55]利用TF 指令結合HTM 與持久化內存構建了PHTM.事務執行過程首先在線程自己的緩存中修改對象并構建undo 日志,此時的修改內容是私有的,外部沒有可見性.在事務提交之前,PHTM 首先利用TF 指令持久化本事務的日志,提交之后持久化提交狀態標記并將事務的修改寫回到持久化內存中的原始位置,寫回成功之后即可回收日志空間.PHTM 利用標記來保證每個地址最多允許出現在1 個日志中,這樣避免了日志回收過程中多線程日志之間的通信.標記類似于一個寫鎖,事務寫數據地址之前需要等待標記被釋放才能繼續執行.PHTM 僅對日志中記錄的部分事務順序執行,通過額外的鎖機制實現,可以有效防止發生沖突的事務刷新日志,同時保證重放階段的正確性.但是,PHTM 在事務執行期間一直持有鎖直至事務的所有日志都刷新到持久化內存才釋放.在此期間,PHTM 可能遭受鎖爭用,從而引發大量的事務中止.

PHTM 僅允許順序執行事務,無法支持硬件和軟件之間的事務并發執行,這將導致硬件事務內存在回退時會中止軟件事務內存的執行,降低事務并發性.PHyTM[56]提出一種基于持久化內存的混合事務機制,提供3 種事務路徑.首先是基于軟件事務內存(STM)路徑,PHyTM 使用類似2PL 的悲觀并發控制協議,對相應數據項獲取鎖阻塞其他事務訪問.STM路徑通過日志回放機制實現數據持久化操作.其次是Slow HTM 路徑,不同于STM 路徑的是它無需獲取寫入地址的鎖,而是只需檢查寫入地址的鎖狀態.由于HTM 本身的特性,Slow HTM 可以提供原子性操作,因此該路徑下的事務無需等待回放日志即可實現數據持久化寫入.如果事務在執行階段和驗證階段發現沖突,則中止該事務.當事務重試次數超過閾值時,則交由STM 路徑執行.最后一個是Fast HTM 路徑,允許事務在讀取數據時使用類似數據多版本的機制,僅保證當前數據在某個狀態下的一致性,無需查看鎖的狀態.為了保證數據一致性,該路徑下的每個事務通過驗證STM 路徑上是否有正在寫回階段的執行事務.如果有,則中止該事務;否則,繼續處理.當事務中止次數超過閾值時,事務會交由Slow HTM 執行.Fast HTM 在只讀場景中沒有額外的同步開銷.同時,為了減少鎖同步開銷,PHyTM 維護一個類似數組結構的共享地址鎖存儲體,通過散列計算內存中的地址獲取唯一的鎖存儲位置,防止對同一位置的內容重復獲取鎖.PHyTM 通過自主切換事務執行路徑機制有效減少事務并發執行時由于回退引發的事務中止,但是PHyTM 僅關注了軟硬件之間的事務并發執行,忽略了可擴展性對事務性能的影響.

NV-PhTM[57]指出在持久化內存系統中提供事務模型,軟件與硬件事務內存各有優缺點.軟件模式更加靈活且不受限制,但是對于短事務造成很嚴重的性能下降;硬件模式開銷更小,效率更高,但是受到硬件資源的限制,并且提供的是一種“盡力而為”機制,不保證事務的成功提交.因此,NV-PhTM 提出結合硬件與軟件的模式,將系統分為3 個階段,分別對應執行硬件事務內存(HW),軟件事務內存(SW)以及串行化模式(GLOCK)這3 種不同的路徑,并利用啟發式動態選擇最合適的執行路徑.HTM 利用NVHTM[54]結合CoW 技術將持久化內存區域映射到DRAM 中,軟件事務內存基于PSTM[55]結合日志提供事務模型.啟發式階段轉換綜合考慮系統的事務崩潰率、事務大小以及日志剩余容量等因素.比如事務較小則會切換到HTM 模式,多次資源受限導致事務崩潰將會切換到軟件模式,崩潰率過高將會進入到串行化執行等機制.

Crafty[58]通過構造無損undo 日志(nondestructive undo logging)來解決HTM 與持久化之間的矛盾,即在事務提交前將日志持久化,但是在HTM 執行過程中持久化會導致事務崩潰.“無損undo 日志”將事務的完整執行過程分為2 個HTM 事務和一次日志持久化操作:1)第1 階段Crafty 利用HTM 執行事務,每一次修改數據前需要構建一條undo 日志,在這一階段的結尾,HTM 事務執行前后的新舊數據都具有可見性,利用暫時還沒有持久化的undo 日志逆序將這個HTM 事務所作的更新還原并利用新數據構建redo 日志.2)在上一個HTM 事務結束之后與下一個HTM 事務開始之前將undo 日志持久化.3)事務在這個階段的開始時利用邏輯時間戳來檢查第1 階段結束后是否有事務成功提交.如果沒有,則沒有發生沖突,Crafty 利用HTM 與第1 階段構建的redo 日志更新數據;否則,需要通過驗證階段進一步檢查是否真正有沖突產生,驗證階段即重新執行事務邏輯,檢查undo 日志中每一個條目地址所在位置的值.如果沒有沖突則可以提交事務,否則需要崩潰事務重新執行.Crafty 使用2 個策略保證事務的執行.當事務間競爭激烈導致的系統頻繁崩潰且一段時間內沒有事務成功提交時,系統將回退到單個全局鎖(single global lock,SGL)模式,即事務執行前首先需要驗證是否有事務獲取了全局鎖,如果有則直接中止.這項策略保證了系統至少有一個事務可以正常進行.其次,Crafty允許將事務拆分成多個小的事務執行,防止緩存不足而導致的崩潰,當事務更新的數據達到預設的閾值后將構建undo 與redo 日志.但是,Crafty 可能出現事務重復執行的情形.因為在使用HTM 啟動事務時,Crafty 需要使用全局時鐘檢查該事務是否是首次執行.如果驗證失敗,則需要重新執行事務.在高并發時全局時鐘的更新可能會產生爭用,導致事務頻繁執行,產生額外開銷.

Castro 等人[59]為了更好地發揮HTM 和Optane PM的性能,提出一種可擴展的持久硬件事務 SPHT.SPHT 不需要額外的硬件支持,就可以提供強一致性,即所有成功提交的事務及其依賴事務在系統崩潰后都可以被恢復.為了避免順序持久化日志帶來的擴展性瓶頸,SPHT 允許不同線程的事務能夠并發刷回日志.每個線程記錄當前正在執行的事務ID 及其持久化標記,當時間戳小于等于當前事務ID 的事務都全部完成持久化操作,當前事務才可以成功提交.全局持久化的“提交標記”記錄最新的事務ID,用作恢復階段找到最新具有一致性的恢復點.多個事務并發提交時,只有具有最大時間戳的事務會更新標記,避免了Optane PM 上冗余的數據寫入而引發的高延遲以及線程間的爭用.目前的日志回寫階段具有2 個擴展瓶頸:1)必須遍歷所有線程的日志才能確定日志的執行順序;2)必須執行順序回寫日志操作來保證一致性.為了解決這2 個瓶頸,SPHT 將日志按照事務的時間戳順序用指針鏈接起來,不再需要遍歷日志來構建事務間的順序關系.同時,SPHT 將Optane PM 內存區域分區,不同的日志寫回線程寫入不相交的區域,這種空間分片機制使日志回寫操作得以并行擴展.

3.4 小 結

新型硬件中的事務管理系統的2 個基本要素為崩潰一致性和事務并發性能.崩潰一致性需要通過額外的日志等機制保證數據一致性[60-61],順序化和持久化操作可能會對事務并發性能造成影響.同時,事務并發機制為了提高性能,可能會亂序執行并提交事務,這也會對崩潰一致性造成影響,二者的關系相輔相成.目前新型硬件上的事務管理系統使用數據庫中廣泛使用的技術保證崩潰一致性,通過比較觀察得到5 點結論:1)對于更新數據較多的場景,使用redo 日志可以使事務系統達到更高的性能;2)對于讀為主的工作負載,使用undo 日志可以獲取更好的性能;3)CoW 解決了日志中的2 次寫入問題,但是復制開銷會產生寫放大.4)redo+CoW 混合機制可以靈活應用于事務系統,提高事務系統性能.比如SoftWrAP[41]和DudeTM[42]利用該機制減少寫放大和寫入次數.并且,軟硬結合的事務系統如cc-HTM[53],NV-HTM[54],NV-PhTM[57],SPHT[59]使用該機制獲得了更高的性能.5)事務應避免昂貴的持久化內存指令使用,盡可能地使用合并寫機制.對于事務并發性能,LOC[40]和SP3[44]等機制的目的是減少硬件順序化開銷.Pisces[43]和TimeStone[34]等機制通過提供不同的隔離級別有效提高不同工作負載下的事務并發性能.ArchTM[45]和SPHT[59]充分利用Optane PM 內部特性,打破了事務管理系統的可擴展性瓶頸.總之,面向新型硬件的事務管理系統可以通過修改事務提交順序和降低事務持久化開銷,在保證數據一致性的前提下減少額外的冗余數據寫入,實現高可擴展性的并發控制協議,從整體上提高面向新型硬件中的事務管理系統性能.

4 未來展望

新型硬件具有與傳統硬件不同的特性,如HTM支持原子性寫入,持久化內存既可以保證類似主存的高速訪問,又可以提供二級存儲的非易失性.現有的事務管理系統無法有效發揮新型硬件的最大性能,因此需要對傳統事務管理系統中的關鍵路徑和技術路線進行重新抽象化,結合現實場景中的業務需求進一步地對新型硬件環境下的事務管理系統進行設計.

1)設計新型硬件環境中多核架構下的并發控制協議.NUMA 架構已經成為當前服務器的主流趨勢,未來可能出現數十核乃至上千核的平臺架構.跨NUMA 節點的數據訪問會造成一定的開銷和訪問延遲.雖然傳統事務管理系統中已經針對NUMA 架構下的數據訪問進行了一系列的優化,但是目前新型硬件環境下的并發控制協議并沒有對此進行重新設計.NUMA 架構已經成為了制約新型硬件環境下并發控制協議的前置放大器,事務無法具有高擴展性.并且隨著業務場景的工作負載日益復雜,不同場景下的應用程序語義與不同并發控制協議之間的結合各有優勢.如何感知程序語義、智能化實時調整并發控制協議是未來的研究工作.雖然當前其他新型硬件如ReRAM 技術尚不成熟,沒有在工業界大面積推廣使用,但這種存算一體化的新型硬件可以打破現有的馮·諾伊曼架構瓶頸,提供高性能、低功耗的硬件服務,減少數據從內存單元移動至計算單元的開銷,這為研究者帶來更多的機遇與挑戰.但是,如何高效利用存算一體化新型硬件的內部特性設計并發控制協議可能是未來的研究路線,如帶寬、訪問粒度、硬件介質內部數據處理最大并行度等維度對事務管理系統的性能影響.并且,如何保證基于存算一體化事務管理系統的一致性可能會得到更多的關注.

2)設計異構事務管理系統.當前HTM 和非易失性內存結合的工作主要考慮了事務管理系統執行路徑如何實現1+1 > 2 的高性能優勢,并沒有針對硬件本身特性進行優化,也沒有在性能和硬件壽命之間進行權衡.非易失性內存的持久域已經擴展到LLC層次,可以有效延展HTM 的區域.各種新興的異構硬件架構正在對現有的體系結構產生挑戰.如CPU和GPU/FPGA 結合為上層應用提供更高效率和低延遲的處理性能.但是,由于異構硬件本身硬件特性的不同,無法在不同的工作負載下發揮最大性能.因此,研究者可以進一步考慮異構硬件下的耦合事務執行路徑,抽象化表征屬性設計事務模型.并且,服務質量是衡量事務管理系統的一項重要指標,即事務管理系統在保證高并發的同時保障尾延遲被用戶所接受.新型硬件環境下的長尾延遲出現的原因主要包括事務并發原語沖突和持久化屏障開銷大.異構事務管理系統可以從底層構建與傳統事務系統不同的組織布局,消除事務執行冗余路徑.異構事務管理系統可以進一步設計相關程序模型,如異構一致性模型,該模型從底層構建原子性存儲,從而提供系統可靠性服務.

5 總結

利用新型硬件可以為事務管理系統提供高效的運行效率,但是設備工藝本身的不足同樣會成為新的挑戰.由于HTM 受限于區域容量限制,無法從根本上減少事務沖突率;并且非易失性內存訪問粒度、讀寫不均衡、持久化屏障開銷大等問題制約了事務管理系統性能,導致事務管理系統無法真正發揮高并發、可擴展性強的優勢.

本文從新型硬件本身特性、事務層面特性和持久性路徑等方面出發,介紹了目前相關研究工作,并且結合實際應用場景需求給出了未來基于新型硬件的事務管理系統的重要研究方向.未來復雜的業務需求對事務管理系統的設計也提出了更高的要求,因此相關研究人員要結合新型硬件特性,立足于未來存算一體化的發展趨勢,設計智能感知事務管理系統,保證新型硬件環境下的事務管理系統的可靠性.

作者貢獻聲明:胡浩負責搜集相關研究工作以及文章整體撰寫;梁文凱負責硬件特性分析并協助文章撰寫;李詩逸負責討論論文框架和修改論文;王鴻鵬負責對目前研究熱點和未來發展方向的內容進行補充;夏文負責文章框架調整、整體思路的指導,并修改論文.

猜你喜歡
一致性機制
關注減污降碳協同的一致性和整體性
公民與法治(2022年5期)2022-07-29 00:47:28
構建“不敢腐、不能腐、不想腐”機制的思考
注重教、學、評一致性 提高一輪復習效率
對歷史課堂教、學、評一體化(一致性)的幾點探討
IOl-master 700和Pentacam測量Kappa角一致性分析
自制力是一種很好的篩選機制
文苑(2018年21期)2018-11-09 01:23:06
ONVIF的全新主張:一致性及最訪問控制的Profile A
定向培養 還需完善安置機制
中國衛生(2016年9期)2016-11-12 13:28:08
基于事件觸發的多智能體輸入飽和一致性控制
破除舊機制要分步推進
中國衛生(2015年9期)2015-11-10 03:11:12
主站蜘蛛池模板: 国产 日韩 欧美 第二页| 亚洲欧美成人在线视频| 亚洲欧美另类视频| 国产日本欧美在线观看| 欧美成人综合视频| 亚洲AV无码久久精品色欲| 亚洲欧美日韩中文字幕在线| 国产亚洲视频免费播放| 波多野结衣中文字幕一区二区| 中文字幕1区2区| 91年精品国产福利线观看久久| 亚洲三级网站| 成人精品亚洲| 国产亚洲欧美另类一区二区| 99re精彩视频| 伊人久久久久久久| 久草网视频在线| 婷婷亚洲最大| 99久久精品无码专区免费| 男女男免费视频网站国产| 精品久久久久久成人AV| 8090午夜无码专区| 日韩国产无码一区| 色悠久久久久久久综合网伊人| 欧美精品导航| 国产成人啪视频一区二区三区| 美女免费精品高清毛片在线视| 久久精品aⅴ无码中文字幕| 久久香蕉欧美精品| 亚洲免费毛片| 一级在线毛片| 99在线观看免费视频| 欧美精品啪啪| 国产十八禁在线观看免费| 国产免费自拍视频| 国产成人夜色91| 久久a毛片| 久久综合婷婷| 精品久久久久久久久久久| 91精品小视频| 久久精品国产在热久久2019| 亚洲国产成人精品无码区性色| 国产成人精品日本亚洲77美色| 狠狠色婷婷丁香综合久久韩国| 国产成人91精品| 精品国产aⅴ一区二区三区| 91精品啪在线观看国产91九色| 亚洲V日韩V无码一区二区| 欧美日韩免费在线视频| 亚洲天堂高清| 国产精品手机视频一区二区| 久久久久亚洲精品成人网| 色丁丁毛片在线观看| 久久久久人妻一区精品色奶水| 亚洲精品亚洲人成在线| 538精品在线观看| 啪啪免费视频一区二区| 国产一区二区三区免费观看| 亚洲视频欧美不卡| 自拍欧美亚洲| 91精品久久久无码中文字幕vr| 国产黄色爱视频| 97se亚洲综合在线天天| 国产精品xxx| 亚洲最新地址| 亚洲日韩每日更新| 久久精品无码一区二区国产区| 在线精品视频成人网| 18禁影院亚洲专区| 国产第一色| 精品色综合| 亚洲精品少妇熟女| 亚洲成a人片| 国产成人精品高清不卡在线| 毛片在线播放a| 国产91精品调教在线播放| 国产在线麻豆波多野结衣| 97视频精品全国免费观看| 中国国产高清免费AV片| 欧美人在线一区二区三区| 九色免费视频| 亚洲成a∧人片在线观看无码|