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

懸崖邊的探討——聊一聊閃存的垃圾回收

存儲 存儲軟件
隨著技術(shù)的進步以及成本的降低,閃存已經(jīng)越來越廣泛的被企業(yè)級數(shù)據(jù)中心作為存儲介質(zhì)使用。相比傳統(tǒng)的磁盤介質(zhì),閃存的優(yōu)勢顯而易見:速度快,耗電低,省空間。特別在速度方面,閃存具備壓倒性的優(yōu)勢。

 隨著技術(shù)的進步以及成本的降低,閃存已經(jīng)越來越廣泛的被企業(yè)級數(shù)據(jù)中心作為存儲介質(zhì)使用。相比傳統(tǒng)的磁盤介質(zhì),閃存的優(yōu)勢顯而易見:速度快,耗電低,省空間。特別在速度方面,閃存具備壓倒性的優(yōu)勢。

比方說,客戶原來采用某款高端磁盤陣列的時候,處理某個作業(yè),需要花費6個小時。后來采用了閃存陣列,同樣處理該作業(yè),只需要1個小時就可以完成。閃存帶來的性能優(yōu)勢非常的明顯。

以上,并不是本文討論的重點。

本文的重點是,客戶剛剛采用閃存陣列的時候,處理作業(yè)只用1個小時,可是運行了一段時間之后,忽然有一天,客戶發(fā)現(xiàn)處理作業(yè)用了1小時25分鐘。于是,問題來了,客戶一方面覺得1小時20分鐘比6小時還是快多了,一方面也會想,為啥比起1小時,我現(xiàn)在處理作業(yè)的時間慢了4分之1?

[[222262]]

由此,我們來了解一下,閃存中的“寫懸崖(Write-Cliff)”現(xiàn)象。

什么是垃圾回收?

閃存是電子類介質(zhì),它處理數(shù)據(jù)的寫入和傳統(tǒng)的磁類介質(zhì)(磁盤或者磁帶)不同。在使用磁盤時,如果我們有新數(shù)據(jù)寫入某區(qū)塊,而該區(qū)塊還存有舊數(shù)據(jù),那只需要簡單的進行覆蓋即可。而閃存不同,新數(shù)據(jù)寫入的區(qū)塊,必須是空白區(qū)塊,如果該區(qū)塊存有舊數(shù)據(jù),那么必須先對舊數(shù)據(jù)進行“擦除”(Erase)。是的,當(dāng)數(shù)據(jù)存儲的越來越多,理論上最多當(dāng)寫入的數(shù)據(jù)總量達(dá)到閃存提供的所有容量之后,再次寫入更新時,就必然會產(chǎn)生“擦除”。

相比于常規(guī)的讀取和寫入操作,擦除有2個特點。

***,擦除的速度比讀寫要慢。

第二,擦除的處理單位要比讀寫大。

目前業(yè)界的閃存,基本上,讀操作的處理單位不大于4KB,寫操作的處理單位不小于4KB,而擦除的處理單位則是不小于1MB。這意味著,如果要寫入4KB的數(shù)據(jù),到某個已存有4KB舊數(shù)據(jù)的區(qū)塊,那我首先需要擦除其周邊1MB的區(qū)塊空間。

這相當(dāng)于您買了一套二手房三居室,規(guī)定要求說不能直接住,必須先還原成毛坯房再重新裝修,而且要求您必須先把整個小區(qū)250個住戶的房子全部恢復(fù)成毛坯房,然后才能重新裝修自己家??墒瞧溆?49個鄰居住的好好的,他們家里的東西怎么辦,答案只有一個,就是請他們?nèi)堪鸭野嶙?,搬到其他小區(qū)空著的房子里去。(好吧,強制拆遷啦!?。┊?dāng)然,搬完之后有個好處,就是未來再有249個新住戶進來,他們可以就在毛坯房的基礎(chǔ)之上直接進行裝修了(1MB一次性全部擦除)。

以上過程,我們稱之為閃存擦除效應(yīng)帶來的“垃圾回收”。為了更清晰的描述這個過程,借(Chao) 用(Xi) 某閃存廠商的圖片,來更為清晰的解釋一下。

 簡便起見,如下圖所示,假設(shè)某閃存設(shè)備一共提供了16個可寫的小塊,一次擦除必須以4個小塊為單位。

首先,我們寫入了一個“MyFile.doc”文件,占用了6個小塊,由于現(xiàn)在的16個塊都是“干凈”的空白狀態(tài),所以直接寫入即可。如下圖。

然后,我們更新了“MyFile.doc”文件。注意,在這里,作為用戶,我們認(rèn)為自己是在原來的位置上對文件數(shù)據(jù)進行了更新。但是閃存為了更快的完成處理,會物理上將新數(shù)據(jù)寫入另外的“干凈”區(qū)塊,并將原有舊數(shù)據(jù)所在區(qū)塊標(biāo)記為“失效”狀態(tài)。如下圖(灰色代表“失效,未擦除”數(shù)據(jù)塊,藍(lán)色代表“已占用”數(shù)據(jù)塊,白色代表“干凈,可寫入”數(shù)據(jù)塊)。

(同時為了解決應(yīng)用程序地址和實際物理存儲地址的對應(yīng)問題,閃存加入了“Flash Translation Layer”,用來實現(xiàn)上述兩個地址的映射。)

接下來,我們又需要寫入一個新文件“AnotherFile.doc”,同樣占用6個小塊,但是現(xiàn)在上圖中只剩下4個空白的“干凈”小塊了。因此,我們需要擦除左上角“失效”的4個小塊,擦完之后如下圖所示。

接下來,新的數(shù)據(jù)就可以被寫入到左上和右下總共的6個“干凈”小塊了。

現(xiàn)在,我們寫入***一個文件,需占用3個小塊??梢詮纳蠄D看到,空白“干凈”小塊只剩2個了。另外還有2個“失效”小塊,但是由于與有效數(shù)據(jù)同處一個擦除區(qū)域,無法直接擦除。因此,我們就需要進行數(shù)據(jù)的移動,如下圖所示,從而騰出一個整體的空間,使得擦除可以進行。這一步,就是之前講的鄰居搬家。

擦除完之后,我們就可以寫入占用了3個小塊的新文件了!

閃存“垃圾回收”帶來的“寫懸崖”和“寫放大”

回到文章一開始客戶遇到的性能下降25%的問題,在我們了解完閃存垃圾回收的過程之后,就很容易理解了。一臺40TB容量的閃存運到客戶現(xiàn)場,起始都是“干凈”的空白小塊,寫入速度很快。但隨著數(shù)據(jù)的不斷更新,或早或晚必然會出現(xiàn)區(qū)塊間數(shù)據(jù)搬運,數(shù)據(jù)擦除等后臺垃圾回收的相關(guān)操作,從而提供“干凈”的小塊給后續(xù)的寫入操作。這些操作和前端應(yīng)用程序并行,導(dǎo)致了性能的下降,我們稱之為“寫懸崖(Write-Cliff)”。

“寫懸崖”僅僅是垃圾回收帶來的問題之一。垃圾回收還帶來的另外一個問題,叫做“寫放大”。我們都知道閃存的每個Cell(顆粒)都是有寫入次數(shù)的壽命限制的。垃圾回收導(dǎo)致了額外的Cell寫入,加速了Cell壽命消耗。我們稱之為“寫放大(Write-Amplification)”。

如何處理“寫懸崖”

寫懸崖和寫放大都是閃存介質(zhì)與生俱來的特性,無論是SSD固態(tài)硬盤,還是目前的全閃存陣列廠商,都無法避免這兩個問題。

閃存廠商一般會通過介質(zhì)材料,算法以及架構(gòu)的優(yōu)化等手段,來將這兩種影響控制在一定的范圍內(nèi)。同時,對該問題處理的效果,也是衡量閃存陣列能力的因素之一。比如目前業(yè)界市場占用率很高的某閃存陣列廠商,宣稱通過以下手段來優(yōu)化寫懸崖的問題:

首先,采用“超供給”方式,通過提供更多的顆粒數(shù)量(比如用戶可見容量40TB,而實際物理容量超過67TB),用于減緩整體閃存壽命的磨損,并實現(xiàn)更為靈活的預(yù)防性垃圾回收。

同時,采用了“帶外”的垃圾回收處理機制,也就是為垃圾回收配置了專門的處理引擎,從而不占用處理前端應(yīng)用數(shù)據(jù)IO的硬件資源。

此外還有均衡磨損算法,監(jiān)測機制等手段,來優(yōu)化緩解這兩個問題。

消除誤區(qū),“寫懸崖”并不可怕

***,需要說明的是,寫懸崖并不可怕。

即使寫懸崖帶了的性能的降低,但速度降下來之后,處理得當(dāng)?shù)拈W存陣列,其性能還是要遠(yuǎn)遠(yuǎn)高于傳統(tǒng)磁盤陣列。好比您以5塊錢一股的價格買了一只股票,***的時候股票價格飆升到了30塊錢一股,但后來降到了25塊錢一股,并在25塊錢平穩(wěn)下來。那么整體來看,收益還是很好的。

以下是某廠商公布其全閃存陣列“寫懸崖”測試的測試結(jié)果,我們可以看到,“寫懸崖”發(fā)生后,該陣列依然運行在一個很高的吞吐量水平上。

當(dāng)然,在上面的圖中我們也看到了另外一個廠商的閃存產(chǎn)品,出現(xiàn)了嚴(yán)重的寫懸崖問題。所以在對閃存陣列選型時,一定要搞清楚閃存陣列廠商是否對該問題進行過優(yōu)化,并***讓廠商給出一些有說服力的數(shù)據(jù)或者測試報告。

責(zé)任編輯:武曉燕 來源: 老鳥論IT
相關(guān)推薦

2019-12-02 16:23:03

Python編程語言“垃圾”回收

2023-07-06 13:56:14

微軟Skype

2020-09-08 06:54:29

Java Gradle語言

2021-08-01 09:55:57

Netty時間輪中間件

2023-09-27 16:39:38

2024-10-28 21:02:36

消息框應(yīng)用程序

2021-12-06 09:43:01

鏈表節(jié)點函數(shù)

2021-03-01 18:37:15

MySQL存儲數(shù)據(jù)

2023-09-20 23:01:03

Twitter算法

2021-07-16 11:48:26

模型 .NET微軟

2023-11-02 08:37:46

Python換行轉(zhuǎn)義

2022-08-30 07:39:57

C++namespace隔離

2020-12-11 11:11:44

原子類JavaCAS

2021-06-29 08:45:55

邏輯變量法函數(shù)

2023-03-05 18:40:39

iptables防火墻軟件

2021-04-28 08:35:52

區(qū)塊鏈技術(shù)開發(fā)

2022-02-16 10:25:36

邊緣計算數(shù)據(jù)中心網(wǎng)絡(luò)

2011-07-04 16:48:56

JAVA垃圾回收機制GC

2019-06-12 05:51:59

智慧城市人臉識別互聯(lián)網(wǎng)

2020-01-03 11:04:54

安全測試滲透
點贊
收藏

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