數據存儲產業服務平臺

Symmetrix操作系統Enginuity緩存優化算法概覽

存儲在線專欄文章:EMC Symmetrix存儲陣列從1988年誕生至今,名字從Symmetrix到DMX,再到VMAX,已經不下十幾種型號,硬件配置與架構完全更替。而不變的就是操作這個龐然大物的心臟,操作系統Enginuity。至于Enginuity到底是以什么內核而編寫的,就算EMC的工程師也很少有人能說得清楚。毋庸置疑的是這個擁有悠久歷史的存儲操作系統Enginuity讓Symmetrix一直以來領跑高端存儲,而其中Enginuity的性能優化算法在中間扮演了重要角色。本文將對Symmetrix操作系統Enginuity的緩存優化幾種算法進行介紹,讓讀者走進這個神秘存儲陣列的心臟。

Enginuity的最大化應用性能的緩存算法:

Symmetrix Enginuity的主要功能可以分為幾大塊,除了文本中要介紹的緩存性能優化算法以外。還包括支持高可用數據一致性、支持配置管理的虛擬池調配易用性與性能分層存儲、安全方面以及磁盤性能優化等功能。緩存性能優化功能作為Enginuity的核心組件,在保證處理并發與高負債的I/O過程中起著至關重要的作用。

眾所周知,高端存儲所需要支持的是一個復雜、且不斷變化的應用環境。Enginuity在設計初始就是為了滿足可以高速將大量數據進行高效的傳輸。Enginuity會利用一些內部的機制與算法來最大化前端應用的數據訪問,以及數據在陣列內部的復制。緩存與磁盤作為Symmetrix陣列中主要的數據載體,緩存速度明顯高于物理磁盤,即使是在現今閃存盤大行其道的情況下,緩存仍然還是作為存儲陣列中的主要加速方式。所以,任何存儲陣列研發都致力于最大化在內存中處理I/O,尋求緩存與物理磁盤之間的平衡,從而提升整體的性能性能,確保數據的一致性與安全性、更快的響應前端的數據訪問請求。為了達成這個目標,存儲系統需要知道哪些數據可能馬上要被訪問,然后把數據載入或者繼續留在緩存里。而且緩存與物理磁盤的這種平衡是一個連續的過程,且需要滿足所有邏輯卷。就Enginuity來說,它能通過一些算法來調整數據流與控制陣列性能,而且這些算法基于幾千臺已裝機的Symmetrix存儲陣列的實際分析而來,用來取保Enginuity可以根據已有的歷史數據,分析結果滿足最大化應用數據訪問性能。而Enginuity的緩存算法可以體現在以下幾個方面:

1.智能預讀算法:預讀算法的目的就是把需要的數據預先載入緩存,,因為任何智能存儲數據讀取的優先是訪問緩存,如果緩存沒有命中,再從物理磁盤載入數據到緩存,然后返回給前端應用主機。雖然預讀算法并不是Symmetrix首創,但是傳統的預讀算法只是簡單的基于任意數據大小與數據流的選擇,或者只是保守的預讀一個很長的順序讀寫的后續數據,還有為了滿足一些分散的小的I/O而去去讀一大段的數據從而滿足緩存命中的需求。而這種做法對于一些中短類型的順序讀的效果不是很好,而這部分的數據讀取在實際應用環境中發生的情況可能會在90%以上。如果預讀的算法工作不夠高效,就會導致大部分在緩存中的數據不會被前端應用訪問,造成資源浪費。Enginuity在處理預讀數據選擇的時候,會利用一些更加巧妙的方法來選擇預讀的數據。這種選擇基于動態的實時環境分析預估而得,且Enginuity的預讀算法只是會加載需要被訪問的數據,而不會影響其他I/O的活動。

2.基于標簽的緩存算法:Tag-Based Cache(TBC)算法是從Enginuity早期版本(5670)就提出的革命性算法,并且一直沿用至今。它的目的是解決存儲滿足不同的應用環境問題配置靈活性,TBC允許在很低的管理負債的情況下提供這種靈活性。簡單來說TBC的作用就是根據應用來分配緩存,他的主要體現就是Symmetrix Dynamic Cache Partitioning功能。(參考:Symmetrix動態緩存分區技術(DCP)原理與配置

3.PermaCache:談這個算法之前,我們要先談一下Enginuity處理駐留在緩存中數據的算法。Enginuity在空緩存的情況下,會結合預讀機制將數據漸漸載入緩存,滿足前端應用讀取的需求。當緩存用到一定的閥值以后,Enginuity會應用到LRU算法,這個是也是在行業中被廣泛使用緩存頁面替換算法,全程叫做Least Recently Used。LRU顧名思義就是把最久的未被使用的數據從緩存里替換為新的數據。而這種算法在某些情況下會有一點列示,例如某些數據他訪問優先級很高,但是被訪問的次數卻不多,我們通常把這些數據叫做HPRA(High Priority,Rarely Accessed)數據。對于這些數據,如果只是利用直接的LRU算法,這些數據會被很快的移除緩存,造成下次數據訪問的時候需要再次從物理磁盤載入,增加數據讀取的總時間,影響應用性能。而PermaCache算法就是為了解決這樣的問題, PermaCache可以將特定的數據(以磁道為單位)長久滯留于緩存,以提供高速的訪問響應。雖然這個方法配置起來需要EMC的工程師修改BIN文件,沒有用戶配置接口。但是作為一個極端的性能加速方法,它的作用顯而易見,也是緩存優化的選項之一。

上面我們介紹了三種Symmetrix操作系統Enginuity的緩存性能優化算法??梢钥闯?,作為加速應用的數據訪問速度主要載體-緩存,除了硬件本身的速度與緩存的大小以外,一些特定的算法同樣也可以在特定的情況下優化存儲性能,Enginuity的智能預讀、基于標簽的緩存算法,PermaCache都是可選的方式之一。Symmetrix的緩存處理機制比較復雜,本文只是羅列了其中一些功能。對于更多的Symmetrix緩存機制介紹,參考文章:Symmetrix緩存技術解讀

本文作者為EMC中文技術社區(https://community.emc.com/go/chinese)技術版主。如果您對本文有任何疑問和不同見解,也歡迎到EMC中文支持論壇參與討論。

未經允許不得轉載:存儲在線-存儲專業媒體 » Symmetrix操作系統Enginuity緩存優化算法概覽
精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走