自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SCM: 顛覆存儲系統(tǒng)軟件架構(gòu)

存儲 存儲軟件
SCM(Storage Class Memory)是一種新型的存儲介質(zhì),其特性與傳統(tǒng)的存儲介質(zhì)有很大的不同。如何基于SCM介質(zhì)的特性,在軟件層面做出相關(guān)的改變,充分發(fā)揮SCM的能力,是下一代超高性能存儲系統(tǒng)需要解決的至關(guān)重要的問題。
  • 背景

SCM(Storage Class Memory)是一種新型的存儲介質(zhì),其特性與傳統(tǒng)的存儲介質(zhì)有很大的不同。如何基于SCM介質(zhì)的特性,在軟件層面做出相關(guān)的改變,充分發(fā)揮SCM的能力,是下一代超高性能存儲系統(tǒng)需要解決的至關(guān)重要的問題。

  • SCM對存儲軟件的挑戰(zhàn)

SCM對存儲軟件的挑戰(zhàn)是多方面的,其中最關(guān)鍵的挑戰(zhàn)是軟件棧時延、網(wǎng)絡時延以及崩潰一致性,下面分別進行簡單的說明。

[[206182]]

  • 軟件棧時延

不同介質(zhì)的時延如下圖所示,在沒有SCM出現(xiàn)以前,時延從低到高分別是SRAM、DRAM、NAND(SSD)、Magnetic Disk(HDD)。可以看到,DRAM和NAND之間存在2-3個數(shù)量級的差異,這是一個明顯的性能鴻溝(Performance Gap)。SCM的時延在在DRAM和SSD之間,它的出現(xiàn)填補了這個性能鴻溝,這使得SCM既能夠被當作比較快的存儲設備來使用,又可以當作略慢一些的內(nèi)存(同時有非易失特性)來使用,如下圖右側(cè)所示(在圖中標為NVM)。

SCM填補了DRAM和NAND之間的性能鴻溝(FromSNIA)

在現(xiàn)有AFA存儲系統(tǒng)中,為追求NVMe SSD的極致性能,軟件棧本身帶來的時延已經(jīng)無法忽略 。相比SSD,SCM介質(zhì)的訪問時延有幾個數(shù)量級的差異(從數(shù)百微秒級到數(shù)百納秒級),軟件棧時延的問題將更為凸顯。如傳統(tǒng)的從應用到內(nèi)核的軟件棧對功能的分解層級清晰,對于慢速的存儲介質(zhì)是合適的,但對于SCM這樣的超高速介質(zhì)則成為了速度的瓶頸。

  • 網(wǎng)絡時延

基于同樣的原因,網(wǎng)絡時延在SCM系統(tǒng)中的占比也成為了影響系統(tǒng)時延的主要矛盾。如何構(gòu)建高速、穩(wěn)定的網(wǎng)絡,成為了能否在系統(tǒng)中充分利用SCM介質(zhì)性能的關(guān)鍵因素。

  • 崩潰一致性(CrashConsistency)

相對于傳統(tǒng)內(nèi)存,SCM可以提供相同的訪問接口(Byte Addressable SCM: Load/Store),同時提供了數(shù)據(jù)非易失能力。在基于內(nèi)存的計算機系統(tǒng)中,不需要考慮系統(tǒng)崩潰后內(nèi)存中數(shù)據(jù)的恢復問題(系統(tǒng)崩潰后內(nèi)存數(shù)據(jù)全部丟失,需要從其他地方恢復數(shù)據(jù)),而在SCM系統(tǒng)中需要考慮這個問題(如何在系統(tǒng)恢復后直接從SCM中恢復數(shù)據(jù)?)。這個問題極大影響了軟件系統(tǒng)的設計理念,如在數(shù)據(jù)寫入SCM的過程中,由于CPU保存到介質(zhì)的順序可能受到硬件的自動調(diào)整,需要根據(jù)數(shù)據(jù)在系統(tǒng)崩潰后被使用的順序來保證數(shù)據(jù)在存儲到SCM時的順序,或者能夠通過其他方式恢復數(shù)據(jù)的內(nèi)在一致性,否則就會發(fā)生數(shù)據(jù)損壞。

一個簡單的示例如下圖所示。程序的意圖是先寫入數(shù)據(jù)data[0]和data[1],然后再設置valid標志位為1,表示數(shù)據(jù)是有效的。然而如果不通過store和fence指令配合指定數(shù)據(jù)寫入SCM的順序,數(shù)據(jù)寫入SCM就可以被硬件調(diào)整。調(diào)整后的順序可能是先寫入valid標志,再寫入data。如果在寫入valid標志后,但data尚未寫入之前發(fā)生了系統(tǒng)崩潰,則在SCM將會存在錯誤的信息。在系統(tǒng)恢復后,將會將SCM中的垃圾數(shù)據(jù)認為是有效數(shù)據(jù),從而帶來數(shù)據(jù)一致性的問題:

訪存重排將會引入崩潰一致性問題

Data數(shù)據(jù)從Cache 到SCM介質(zhì)的持久過程,通常需要增加新的commit CPU指令,保障數(shù)據(jù)真正持久化到了NVM 介質(zhì)中。但是,在commit操作未執(zhí)行之前,由于Cache空間不足,引起的不可控、隨機的Data數(shù)據(jù)從Cache到SCM的持久化,讓數(shù)據(jù)不一致問題更復雜了。Commit操作影響了未來存儲應用軟件設計,甚至成為軟件架構(gòu)設計的關(guān)鍵要素。數(shù)據(jù)一致性與性能的矛盾仍然是永恒的架構(gòu)課題。

  • 如何應對這些挑戰(zhàn)
  • 應對軟件棧時延的挑戰(zhàn)

應對軟件棧時延挑戰(zhàn)的主要方法,是采用新的軟件分層模式,打薄軟件棧深度,減少軟件消耗。如開源的libpmem(http://pmem.io/)為持久化內(nèi)存提供了基礎的編程框架,在極致性能場景通過bypass傳統(tǒng)軟件棧的直通方式去除相應的時延消耗,如下圖最右側(cè)所示(引自http://pmem.io/2014/08/27/crawl-walk-run.html)。軟件可以從用戶態(tài)通過Load/Store直接訪問SCM,繞過內(nèi)核軟件棧,就能夠最大程度地減少軟件棧的時延開銷。

用戶態(tài)Load/Store直通模式提供最優(yōu)軟件棧時延

所以,軟件用戶態(tài)化,除了帶來維護性、App實例編排的好處外,性能優(yōu)化是更重要的。上圖直接訪問新介質(zhì)空間地址的信息,避免了內(nèi)核過多的操作。 內(nèi)核調(diào)度,系統(tǒng)調(diào)用的us級開銷,在us級的介質(zhì)面前,已經(jīng)過于重載,bypass 內(nèi)核操作新介質(zhì)成為必須的選擇。

  • 應對崩潰一致性的挑戰(zhàn)

保證崩潰一致性的最簡單方式是在寫入數(shù)據(jù)前先記錄日志(Log),并在故障恢復后通過日志回放來恢復數(shù)據(jù)(Redo)。這個方式只要保證日志在SCM上先持久化即可,其恢復過程相對簡單,不易出錯,但該方案的缺點是產(chǎn)生了兩倍的寫I/O,時延也增加了一倍,影響了SCM系統(tǒng)的可靠性和性能。

針對這一缺點,學術(shù)界提出了一些能夠避免寫日志,通過巧妙地組織數(shù)據(jù)結(jié)構(gòu)的更新順序來在crash后恢復一致狀態(tài)的方法。例如Write Optimal Radix Tree(WORT),通過記錄節(jié)點的層次信息,使得crash后可以檢測出不一致的節(jié)點,并通過檢查其子節(jié)點將狀態(tài)恢復到一致。

下圖是在WORT上插入一個新的parent節(jié)點的示意圖,每個節(jié)點最左側(cè)的數(shù)字表示節(jié)點所在的層次,后面的一個數(shù)字標志其子節(jié)點共同的prefix長度,其后是子節(jié)點共同的prefix本身(這里可以先忽略prefix長度和prefix本身)。圖中也標出了插入新的parent節(jié)點的操作順序:

  • 先產(chǎn)生新的parent節(jié)點C4
  • 再更新原來葉子節(jié)點B4的層次信息(原來層次為1,現(xiàn)在為3,新的層次為3是因為C4節(jié)點進行了prefix壓縮)
  • 再將A4節(jié)點的指針指向C4節(jié)點

假定在第二步之后第三步之前發(fā)生了crash,那么從A4沿著父子節(jié)點的指針訪問到B4的時候,就會發(fā)現(xiàn)期待的層次應該是1,但B4上記錄的卻是3,這就說明有crash發(fā)生過并需要恢復B4。這時可以通過檢查B4的任意兩個childrenkey的共同prefix,恢復出B4原來記錄的prefix長度(2)和prefix值(2, 0),并把層次信息恢復為1。

可以看出,WORT解決了崩潰一致性的問題,但數(shù)據(jù)結(jié)構(gòu)較復雜,同時其直接更新數(shù)據(jù)的方式有可能帶來介質(zhì)寫入的不均衡,影響SCM壽命。這說明學界在SCM專用數(shù)據(jù)結(jié)構(gòu)方面的研究,仍有很大的探索空間。

(關(guān)于WORT的更詳細介紹,請參考https://www.usenix.org/system/files/conference/fast17/fast17-lee.pdf)

  • 應對網(wǎng)絡時延的挑戰(zhàn)

隨著RDMA技術(shù)的不斷成熟,利用RDMA構(gòu)建低時延網(wǎng)絡成為構(gòu)建高性能存儲系統(tǒng)(包括使用SCM的系統(tǒng))的主要解決方案。通過RDMA通信,可以同時降低網(wǎng)絡時延(特別是小數(shù)據(jù)的網(wǎng)絡傳輸時延)和CPU在網(wǎng)絡傳輸相關(guān)動作上的消耗。存儲軟件需要基于RDMA協(xié)議對原有I/O路徑進行優(yōu)化,以獲得更高的性能。典型的方案包括使用RDMA實現(xiàn)數(shù)據(jù)鏡像,利用RDMA構(gòu)造存儲節(jié)點間的高性能通信機制等。

  • 總結(jié)

如何利用好SCM特別是Byte Addressable SCM,對存儲系統(tǒng)的軟件架構(gòu)設計提出了非常高的要求,這個命題的解法涉及了數(shù)據(jù)結(jié)構(gòu),算法,調(diào)度,協(xié)議,計算機體系架構(gòu)等多個方面,具有顛覆性影響,也是未來很長一段時間內(nèi)學界和業(yè)界的研究熱點。華為也在充分擁抱學界和業(yè)界的成果,同時積極追求創(chuàng)新,努力構(gòu)建SCM介質(zhì)應用的競爭力:

  • 在軟件時延上,進行Load/Store訪問方式的研究,打薄軟件棧。同時進行低時延調(diào)度框架的研究,保障SCM訪問時延不因為調(diào)度而發(fā)生大幅度波動,提高時延穩(wěn)定性。
  • 在崩潰一致性方面,進行SCM專用創(chuàng)新性數(shù)據(jù)結(jié)構(gòu)的研究。當前的成果已能夠在性能,磨損等方面進行均衡,相對業(yè)界其他數(shù)據(jù)結(jié)構(gòu)有更好的表現(xiàn)。在今年的Flash Summit大會上,華為針對SCM數(shù)據(jù)結(jié)構(gòu)的研究做了專題演講,把研究結(jié)果向業(yè)界共享:https://www.flashmemorysummit.com/English/Collaterals/Proceedings/2017/20170808_FN11_Zha.pdf
  • 在網(wǎng)絡方面,結(jié)合華為自研網(wǎng)絡芯片進行軟件棧垂直優(yōu)化,充分發(fā)揮RDMA的優(yōu)勢。

在使用好SCM上,學界和業(yè)界都在探索中,華為也將以開放、合作的姿態(tài),加入到這個進程,爭取在第一時間實現(xiàn)研究到產(chǎn)品的轉(zhuǎn)化,為客戶提供新一代的超高性能存儲而持續(xù)努力。

責任編輯:武曉燕 來源: 存儲與數(shù)據(jù)技術(shù)
相關(guān)推薦

2017-07-04 10:58:57

SAN存儲網(wǎng)絡存儲系統(tǒng)架構(gòu)

2017-07-10 09:02:24

NAS存儲云存儲

2018-09-29 14:08:04

存儲系統(tǒng)分布式

2017-10-19 08:45:15

存儲系統(tǒng)HBase

2014-11-21 13:58:20

漢柏

2010-02-25 18:09:41

Linux系統(tǒng)軟件

2018-01-31 08:44:20

數(shù)據(jù)存儲存儲設備存儲系統(tǒng)

2017-09-04 08:49:17

存儲原理架構(gòu)

2018-01-19 08:35:47

存儲系統(tǒng)SAS

2017-11-08 11:22:46

存儲趨勢系統(tǒng)

2022-08-30 07:39:37

GPFSSAN存儲

2010-01-14 15:56:29

2017-04-14 09:48:25

分布式存儲系統(tǒng)

2020-03-04 17:37:09

存儲系統(tǒng)硬件層

2021-06-18 06:00:31

存儲系統(tǒng)

2018-01-22 09:08:14

存儲系統(tǒng)性能帶寬

2011-07-28 09:27:29

2009-12-29 17:52:40

Ubuntu serv

2011-09-23 09:29:29

Hotmail
點贊
收藏

51CTO技術(shù)棧公眾號