Linux為何需要為全閃陣列做特殊優化?

2021-09-03 04:07:32 字數 2167 閱讀 2103

這周一參加了在小公尺公司舉辦的

china linux storage and file system workshop

會議。該會議主要**

linux

中的相關儲存技術,例如檔案系統和

raid

等技術,交流的比較多的還是檔案系統技術。在這個會議上我代表

memblaze

做了乙個來自產業界的技術交流,主要針對全閃陣列的需求,提出了對

linux

中的一些優化需求。應朋友的要求,在此對所做報告作乙個簡單的介紹,起到一點拋磚引玉的作用。

說到全閃陣列,這是乙個革命性的產品和未來的主流發展趨勢。我們有理由相信,未來的儲存產品的主要乙個形態就是全閃陣列。說起全閃陣列不得不提傳統的磁碟陣列。傳統的磁碟陣列是目前的主要儲存產品形態,但是,由於行業需求的變化、新技術的迭代,使得傳統磁碟陣列的問題變得日益突出,不能很好的滿足應用需求。而全閃陣列恰好可以解決傳統磁碟陣列的問題,滿足未來資料日益增長和應用日益複雜的需求。

簡單列舉一下,全閃陣列主要具有如下技術優勢:

全閃陣列的技術是十分複雜的。如果將傳統磁碟陣列中的磁碟簡單替換成快閃儲存器盤,那麼這種「所謂的全閃陣列」不是乙個真正意義上的全閃陣列。這是因為傳統磁碟陣列中的軟體是面向磁碟進行設計的,包括檔案系統和

raid

。而面向磁碟設計的軟體將會考慮到磁碟本身的一些問題,例如如何避免磁碟抖動,使得儲存效能達到更佳?傳統磁碟陣列軟體中所考慮的很多的問題在快閃儲存器上都不存在,而一些快閃儲存器中存在的問題卻沒有在傳統的儲存軟體中進行考慮。因此,如果簡單的將傳統磁碟替換成快閃儲存器盤,那麼整個系統將會面臨很多的問題,不能使得

ssd/

快閃儲存器的效能達到最佳。所以,乙個真正的全快閃儲存器陣列將是乙個面向

ssd/

快閃儲存器進行優化設計的系統,主要涉及到的一些技術包括:

其中,在全快閃儲存器陣列研發的過程中,

linux

系統的優化就是乙個非常關鍵和重要的步驟。在學習計算機體系結構的時候,我們都知道存在乙個「剪刀差」。這個「剪刀差」就是

cpu效能和

io效能之間的差距。隨著半導體工藝的不斷發展,

cpu效能在急劇的提公升,但是,

io效能卻增長非常的緩慢,從而導致

cpu和

io之間的效能差距越來越大。

io效能的瓶頸在於磁碟。主要是由於磁碟是一種機械部件,所以,效能很難得到大幅度提公升。非易失性半導體儲存器件的出現使得這種現象得到了好轉。特別是快閃儲存器技術的發展,使得後端儲存不再是乙個瓶頸點。整體效能的瓶頸已經從

io轉向了

cpu和前端網路,這是乙個非常重大的變化。真因為這個變化,使得我們在研發全閃陣列的時候,需要更多的考慮

cpu和前端網路的效能瓶頸優化問題。

另乙個問題是作業系統。在傳統儲存系統中,作業系統根本不是乙個問題。傳統儲存主要考慮是如何優化

io的順序,使得磁碟的抖動達到最低,從而提公升

io效能。並且在傳統儲存中,主要優化的都是頻寬和

iops

,對於latency

是很難做到低延遲的。在快閃儲存器儲存中,作業系統的優化變得非常關鍵,由於快閃儲存器儲存不僅優化頻寬和

iops

,而且需要優化延遲。因此,

linux

作業系統中的很多部分都需要進行特殊優化,從而降低延遲抖動。

全快閃儲存器陣列技術的發展將會對

linux

作業系統本身做出重大調整和優化,特別在低延遲io技術方面。無論是從技術挑戰,還是技術價值來看,對於研發來說,這都是一件非常有意義的事情。在這次的

linux

儲存技術會議上,

memblaze

還在現場進行了一次招聘。

未來的社會依賴大資料;儲存系統是資料的家;快閃儲存器是構建未來儲存系統的磚。整個產業鏈已經聯動起來,包括硬體、儲存軟體以及os,緊密圍繞在快閃儲存器儲存的周圍,一同構造明天的「資料」家園。

為何需要核函式

生存?還是毀滅?哈姆雷特 可分?還是不可分?支援向量機 之前一直在討論的線性分類器,器如其名 汗,這是什麼說法啊 只能對線性可分的樣本做處理。如果提供的樣本線性不可分,結果很簡單,線性分類器的求解程式會無限迴圈,永遠也解不出來。這必然使得它的適用範圍大大縮小,而它的很多優點我們實在不原意放棄,怎麼辦...

為何需要呼叫「super viewDidLoad」

super didreceivememorywarning void viewdidload 在上面的 中,什麼需要呼叫父類相應的方法呢?以viewdidload為例,父類 super 中的 viewdidload 會幫助你做一些初始化的工作,比如 a是父類,b繼承a,b 在viewdidload ...

為何需要驗證集?

在神經網路中有很多引數,有些引數,比如權重是可以通過訓練集學習更新的 但是有些引數是在訓練開始之前人為設定的,比如學習率 或初始學習率 層的大小等這類引數,我們可以稱之為超引數。這樣的引數一次訓練只能設定一次,很顯然為了找到乙個合適的數值,需要不斷調整其設定值,重複訓練模型,觀察其結果。那為什麼不直...