开始新对话

未解决

此帖子已超过 5 年

1219

2013年11月14日 00:00

Symmetrix操作系统Enginuity缓存优化算法概览

​ ​
​ ​

​Symmetrix​​操作系统​​Enginuity​​缓存优化算法概览​

​ ​
​ ​

​ ​

​转载请在文首保留原文出处:​​EMC​​中文支持论坛​​https://community.emc.com/go/chinese​

​ ​
​ ​

​介绍​

​ ​
​ ​

​ ​

​ 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​​缓存技术解读​​ ​

​ ​

​ ​
​ ​

​参考​

​ ​
​ ​

​ ​

​Symmetrix​​动态缓存分区技术(​​DCP​​)原理与配置​

​ ​

​Symmetrix​​缓存技术解读(一)​

​ ​

​Symmetrix​​缓存机制解读(二)​

​ ​

​Symmetrix​​缓存机制解读(三)​​ ​

​ ​
​ ​

​应用于​

​ ​
​ ​

​ ​

​Symmetrix​​存储阵列​

​ ​

​ ​

​ ​

​ ​

​ ​

​ ​

​ ​

​ ​
没有回复!
找不到事件!

Top