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

枫林 发表于:13年11月28日 15:47 [原创] 存储在线

  • 分享:
[导读]EMC Symmetrix存储阵列从1988年诞生至今,不变的就是操作这个庞然大物的心脏,操作系统Enginuity。本文将对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中文支持论坛参与讨论。

[责任编辑:枫林]
枫林
IOPS和Throughput吞吐量两个参数是衡量存储性能的主要指标。IOPS表示存储每秒传输IO的数量,Throughput吞吐量则表示每秒数据的传输总量。两者之间也存在着相互的联系,本文就IOPS和Throughput吞吐量对存储性能衡量的场景入手,描述两者之间的变化关系与计算方法。帮助读者更好的了解存储的性能分析与规划。
官方微信
weixin
精彩专题更多
华为OceanStor V3系列存储系统是面向企业级应用的新一代统一存储产品。在功能、性能、效率、可靠性和易用性上都达到业界领先水平,很好的满足了大型数据库OLTP/OLAP、文件共享、云计算等各种应用下的数据存储需求。
12月15日,中国闪存联盟成立,同时IBM Flash System卓越中心正式启动
DOIT、DOSTOR、易会移动客户端播报中国存储峰会盛况。
 

公司简介 | 媒体优势 | 广告服务 | 客户寄语 | DOIT历程 | 诚聘英才 | 联系我们 | 会员注册 | 订阅中心

Copyright © 2013 DOIT Media, All rights Reserved.