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