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

Symmetrix动态缓存分区技术(Dynamic Cache Partition)是一种可供用户配置的高级缓存设置选项。它的作用是对Symmetrix的全局分布式缓存区域进行划分,并且将Symmetrix中不同磁盘设备根据分配策略应用到不同的缓存分区。满足不同的数据访问需求,优化阵列整体性能。本文介绍了DCP的原理和配置方法。

Dynamic Cache Partition原理与应用场景:

首先要解释一下DCP功能的主要作用,了解Symmetrix的人可能都知道,Symmetrix的缓存是全阵列共享的,所有链接到阵列的主机和应用都会用到共享缓存资源。(关于Symmetrix的缓存机制,参考文章:Symmetrix缓存技术解读)由于这种共享缓存机制存在,在多应用与多主机链接的环境下,有可能发生一种情况:一个缓存利用率比较大的应用,多数情况下这种应用会是随机读到比例较高应用(针对不同应用的IO访问类型,参考文章:关于不同应用程序存储IO类型的描述)为了满足更高的缓存随机读命中率,基于Symmetrix缓存算法,Symmetrix阵列会把最新读取的数据载入到缓存。但是,由于这类应用的数据访问特点,被缓存的数据可能只被读一次,而这部分只被读取一次的数据却占用了比较多缓存区域。某些情况下,为了释放缓存空间,还会强行刷新了另外一个对性能要求较高的应用的缓存区域。因为缓存的刷新是以区域为单位,而缓存中数据的存放则为更小的单位,就是一个区域包含了多个缓存存储单元,被多个应用说用到。从而导致这个应用“盗取“了其他高性能需求的应用的缓存区域,导致后者不能在使用阵列缓存中受益,整体性能受到影响。

在早期的Symmetrix阵列中,解决这个问题的方法是设置一种叫做LRU (Least Recently Used)Group的方式,加入到相应LRU Group中的磁盘设备会优先刷新自己所包含的缓存,从而不影响到其他LRU Group中的缓存区域。从而起到隔离那些缓存用量不是很高效的应用程序。而在VMAX以后的Enginuity版本,引入了动态缓存分区技术DCP。作为一个更强大的可配置的功能,DCP提供了更加高效的隔离缓存机制,使得应用可以在所配置的存区域内使用缓存区域,而不会影响到其他应用所对应的缓存区域。

默认情况Symmetrix VMAX中过所有的磁盘设备都会使用默认的Cache Partition,使用DCP功能的用户可以额外创建7个Cache Partition,然后将Device加入到这些Partition中。用户可以配置固定的缓存区域大小,也可以设置特殊情况下,配置某个磁盘设备在高负载的情况下借用其他缓存区域中的分区,从而提供了更多的缓存可操作性。

Dynamic Cache Partition配置方法:

DCP的可配置选项可以分为五种:

Minimum、Target、Maximum缓存比例定义了所配置的Cache Partition占所有缓存大小的百分比。配置了三个选项以后,Cache Partition的缓存用量就会介于Minimum和Maximum之间。而Target选项则定义的推荐的缓存用量值,也定义了上文中所提到的借用其他区域的缓存区域的触发阀值。当Cache Partition有额外用来满足I/O需求时,且缓存用量达到Target阀值,DCP会启用借用其他区域的缓存,但是总量不会超过Maximum设置。

而整个阵列层面,所有Cache Partition的Target值总和为100%。如果三个值相等,那这个Cache Partition则为固定大小。

Donation Time值用来决定一个Cache Partition内的缓存区域,被其他Cache Partition借用之前,保留的时长。就是说,一个Cache Partition中的某个区域没有执行过任何I/O操作的时间达到Donation Time值,这个区域则可以作为被其他Cache Partition“借用”的候选。越高的Donation Time值决定了缓存区域会被当前的Cache Parition使用越久,减少被其他Cache Partition借用的概率。

每一个Cache Partition还可以设置针对当前分区的Write Pending Limit设置(Write Pending内容参考文章:Symmetrix缓存的Write Pending)。配置的区间是Maximum分区大小的40%-80%。

用户可以使用Solutions Enabler(版本7.4以上)命令symqos来进行DCP的配置,主要的命令如下:启用和关闭DCP的命令是:

symqos -cp -sid SymmID enable | disable

检查DCP是否被启用的命令为,在命令输出中检查Cache Partitioning栏的状态:

symcfg list –v

创建Cache Partition的命令是:

symqos -cp -name PartitionName -sid SymmID create -target TargetPercent -min MinimumPercent -max MaximumPercent -wp WritePendingLimit -time DonationTime

例如,在Symmetrix阵列尾号为1234中创建一个名为TestPartition的Cache Partition,并且设置Target值为10%,Minmum为5%,Maximum为40%,Wrtite Pending为50%,Donation Time为10秒。使用命令:

symqos -cp -name TestPartition -sid 1234 -target 10 -min 5 -max 40 -wp 50 -time 10 create

将Device添加到Cache Partition的命令为:

symqos -cp -name PartitionName -sid SymmID add dev SymDevName

例如,将Device 310添加到名为TestP到Cache Partition,使用命令:

symqos -cp -name TestP -sid 310 add dev 001

将Device 002到012十个Device添加到名为TestP的Cache Partition,使用命令:

symqos -cp -name TestP -sid 310 -devs 002:012 addall

本文作者为EMC中文技术社区(https://community.emc.com/go/chinese)技术版主。如果您对本文有任何疑问和不同见解,也欢迎到EMC中文支持论坛参与讨论。