楓林 發(fā)表于:13年11月28日 15:47 [原創(chuàng)] DOIT.com.cn
存儲在線專欄文章:EMC Symmetrix存儲陣列從1988年誕生至今,名字從Symmetrix到DMX,再到VMAX,已經(jīng)不下十幾種型號,硬件配置與架構(gòu)完全更替。而不變的就是操作這個龐然大物的心臟,操作系統(tǒng)Enginuity。至于Enginuity到底是以什么內(nèi)核而編寫的,就算EMC的工程師也很少有人能說得清楚。毋庸置疑的是這個擁有悠久歷史的存儲操作系統(tǒng)Enginuity讓Symmetrix一直以來領(lǐng)跑高端存儲,而其中Enginuity的性能優(yōu)化算法在中間扮演了重要角色。本文將對Symmetrix操作系統(tǒng)Enginuity的緩存優(yōu)化幾種算法進(jìn)行介紹,讓讀者走進(jìn)這個神秘存儲陣列的心臟。
Enginuity的最大化應(yīng)用性能的緩存算法:
Symmetrix Enginuity的主要功能可以分為幾大塊,除了文本中要介紹的緩存性能優(yōu)化算法以外。還包括支持高可用數(shù)據(jù)一致性、支持配置管理的虛擬池調(diào)配易用性與性能分層存儲、安全方面以及磁盤性能優(yōu)化等功能。緩存性能優(yōu)化功能作為Enginuity的核心組件,在保證處理并發(fā)與高負(fù)債的I/O過程中起著至關(guān)重要的作用。
眾所周知,高端存儲所需要支持的是一個復(fù)雜、且不斷變化的應(yīng)用環(huán)境。Enginuity在設(shè)計初始就是為了滿足可以高速將大量數(shù)據(jù)進(jìn)行高效的傳輸。Enginuity會利用一些內(nèi)部的機制與算法來最大化前端應(yīng)用的數(shù)據(jù)訪問,以及數(shù)據(jù)在陣列內(nèi)部的復(fù)制。緩存與磁盤作為Symmetrix陣列中主要的數(shù)據(jù)載體,緩存速度明顯高于物理磁盤,即使是在現(xiàn)今閃存盤大行其道的情況下,緩存仍然還是作為存儲陣列中的主要加速方式。所以,任何存儲陣列研發(fā)都致力于最大化在內(nèi)存中處理I/O,尋求緩存與物理磁盤之間的平衡,從而提升整體的性能性能,確保數(shù)據(jù)的一致性與安全性、更快的響應(yīng)前端的數(shù)據(jù)訪問請求。為了達(dá)成這個目標(biāo),存儲系統(tǒng)需要知道哪些數(shù)據(jù)可能馬上要被訪問,然后把數(shù)據(jù)載入或者繼續(xù)留在緩存里。而且緩存與物理磁盤的這種平衡是一個連續(xù)的過程,且需要滿足所有邏輯卷。就Enginuity來說,它能通過一些算法來調(diào)整數(shù)據(jù)流與控制陣列性能,而且這些算法基于幾千臺已裝機的Symmetrix存儲陣列的實際分析而來,用來取保Enginuity可以根據(jù)已有的歷史數(shù)據(jù),分析結(jié)果滿足最大化應(yīng)用數(shù)據(jù)訪問性能。而Enginuity的緩存算法可以體現(xiàn)在以下幾個方面:
1.智能預(yù)讀算法:預(yù)讀算法的目的就是把需要的數(shù)據(jù)預(yù)先載入緩存,,因為任何智能存儲數(shù)據(jù)讀取的優(yōu)先是訪問緩存,如果緩存沒有命中,再從物理磁盤載入數(shù)據(jù)到緩存,然后返回給前端應(yīng)用主機。雖然預(yù)讀算法并不是Symmetrix首創(chuàng),但是傳統(tǒng)的預(yù)讀算法只是簡單的基于任意數(shù)據(jù)大小與數(shù)據(jù)流的選擇,或者只是保守的預(yù)讀一個很長的順序讀寫的后續(xù)數(shù)據(jù),還有為了滿足一些分散的小的I/O而去去讀一大段的數(shù)據(jù)從而滿足緩存命中的需求。而這種做法對于一些中短類型的順序讀的效果不是很好,而這部分的數(shù)據(jù)讀取在實際應(yīng)用環(huán)境中發(fā)生的情況可能會在90%以上。如果預(yù)讀的算法工作不夠高效,就會導(dǎo)致大部分在緩存中的數(shù)據(jù)不會被前端應(yīng)用訪問,造成資源浪費。Enginuity在處理預(yù)讀數(shù)據(jù)選擇的時候,會利用一些更加巧妙的方法來選擇預(yù)讀的數(shù)據(jù)。這種選擇基于動態(tài)的實時環(huán)境分析預(yù)估而得,且Enginuity的預(yù)讀算法只是會加載需要被訪問的數(shù)據(jù),而不會影響其他I/O的活動。
2.基于標(biāo)簽的緩存算法:Tag-Based Cache(TBC)算法是從Enginuity早期版本(5670)就提出的革命性算法,并且一直沿用至今。它的目的是解決存儲滿足不同的應(yīng)用環(huán)境問題配置靈活性,TBC允許在很低的管理負(fù)債的情況下提供這種靈活性。簡單來說TBC的作用就是根據(jù)應(yīng)用來分配緩存,他的主要體現(xiàn)就是Symmetrix Dynamic Cache Partitioning功能。(參考:Symmetrix動態(tài)緩存分區(qū)技術(shù)(DCP)原理與配置)
3.PermaCache:談這個算法之前,我們要先談一下Enginuity處理駐留在緩存中數(shù)據(jù)的算法。Enginuity在空緩存的情況下,會結(jié)合預(yù)讀機制將數(shù)據(jù)漸漸載入緩存,滿足前端應(yīng)用讀取的需求。當(dāng)緩存用到一定的閥值以后,Enginuity會應(yīng)用到LRU算法,這個是也是在行業(yè)中被廣泛使用緩存頁面替換算法,全程叫做Least Recently Used。LRU顧名思義就是把最久的未被使用的數(shù)據(jù)從緩存里替換為新的數(shù)據(jù)。而這種算法在某些情況下會有一點列示,例如某些數(shù)據(jù)他訪問優(yōu)先級很高,但是被訪問的次數(shù)卻不多,我們通常把這些數(shù)據(jù)叫做HPRA(High Priority,Rarely Accessed)數(shù)據(jù)。對于這些數(shù)據(jù),如果只是利用直接的LRU算法,這些數(shù)據(jù)會被很快的移除緩存,造成下次數(shù)據(jù)訪問的時候需要再次從物理磁盤載入,增加數(shù)據(jù)讀取的總時間,影響應(yīng)用性能。而PermaCache算法就是為了解決這樣的問題, PermaCache可以將特定的數(shù)據(jù)(以磁道為單位)長久滯留于緩存,以提供高速的訪問響應(yīng)。雖然這個方法配置起來需要EMC的工程師修改BIN文件,沒有用戶配置接口。但是作為一個極端的性能加速方法,它的作用顯而易見,也是緩存優(yōu)化的選項之一。
上面我們介紹了三種Symmetrix操作系統(tǒng)Enginuity的緩存性能優(yōu)化算法。可以看出,作為加速應(yīng)用的數(shù)據(jù)訪問速度主要載體-緩存,除了硬件本身的速度與緩存的大小以外,一些特定的算法同樣也可以在特定的情況下優(yōu)化存儲性能,Enginuity的智能預(yù)讀、基于標(biāo)簽的緩存算法,PermaCache都是可選的方式之一。Symmetrix的緩存處理機制比較復(fù)雜,本文只是羅列了其中一些功能。對于更多的Symmetrix緩存機制介紹,參考文章:Symmetrix緩存技術(shù)解讀
本文作者為EMC中文技術(shù)社區(qū)(https://community.emc.com/go/chinese)技術(shù)版主。如果您對本文有任何疑問和不同見解,也歡迎到EMC中文支持論壇參與討論。
公司簡介 | 媒體優(yōu)勢 | 廣告服務(wù) | 客戶寄語 | DOIT歷程 | 誠聘英才 | 聯(lián)系我們 | 會員注冊 | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.