开始新对话

未解决

此帖子已超过 5 年

7299

2013年7月21日 19:00

VMAX的全局缓存效率如何?

有几个疑问:

1、VMAX互联的RapidIO平均时延大约是多少?

2、通过怎么样的配置才能尽量使读写的数据在本控制器命中,而不需要转发?有无最佳实践之类的介绍文档

3、全局缓存是根据一定大小将LBA均衡分布到各控制器进行归属控制吗?对于不归属本控制器的IO访问就转发到归属控制器?

4、对于增加控制器的情况,如何重新均衡的?

1.2K 消息

2013年7月21日 20:00

你好。我是论坛版主Jason周。我注意到,你的这个帖子被不小心创建在了你的个人的版面内了。建在个人版块里的帖子其他人基本没机会看到,所以很少会有回复。至于为什么会发生这样的情况以及如何避免,可参考我写的这个帖子 【帮助说明】如何避免帖子在不经意间被创建在了错误的版面里,导致收不到回复(因为别人看不到帖子)

我现在已把你的帖子移动到中文支持论坛内的 存储系统 版块里了,这样更多的朋友能够看到,相信稍后会有懂VMAX的朋友们来跟你分享或解答。以后建议先由中文支持论坛首页 用顶部的导航按钮先进入相应的版块(例如:存储系统),然后用右边操作栏里的“开始一个讨论”来创建帖子提问或者分享,这样创建出来的帖子默认就是在你所在的版块的,避免帖子被无意中创建在了个人版块内。谢谢!

63 消息

2013年7月21日 20:00

多谢版主... 望专家答疑解惑。

3.2K 消息

2013年7月21日 23:00

可能 楼主还是按照 VNX的思维看待VMAX。SYmmetrix系列就是用 global cache 把引擎关联成多活方式啦。

63 消息

2013年7月22日 00:00

换个方式问,如果多台主机分别通过不同的引擎访问相同的数据,如何处理?

3.2K 消息

2013年7月22日 00:00

5 Practitioner

 • 

274.2K 消息

2013年7月22日 03:00

你好,关于您的第3、4问题,我的回答如下:

3.控制器是有配对的,全局缓存在各个控制器之间也有配对关系,互为冗余。互为配对的内存(DIMM)大小必须相同。内存最小的存储单位大小一致并且是均匀分布的。

4.增加了控制器内存通过其内部机制实现均衡。如果要对LUN的负载进行均衡,在前端可以通过增加连接链路或改变连接链路来实现。后端可以通过改变配置或使用VLUN Mirgration功能来实现。

至于第1、2个问题,具体的数值和文档可能要售前的同志会比较清楚。但我觉得您对此不必担心,我们尚未发现RapidIO造成了性能瓶颈。

63 消息

2013年7月22日 03:00

是否是某个LUN的缓存固定归属某个控制器,其他控制器要访问这个LUN的数据会将IO转发到归属控制器?也就是某个LUN的缓存只会在一个特点的控制器中,配置LUN映射给主机是需要尽可能把主机访问该LUN的优选路径配置到该控制? 有点晕了,那全局缓存又是什么意思呢

63 消息

2013年7月22日 05:00

感觉我的理解能力有限,还是没搞明白...  你就告诉我数据是否会转发?什么情况下会转发?如何配置能避免这种情况吧..

5 Practitioner

 • 

274.2K 消息

2013年7月22日 05:00

VMAX会用相关的算法把某个LUN刚被读取或可能会被读取的数据放到缓存,如果一定时间内该数据没有被主机访问,该数据可能会被移出缓存。相同的数据下一次读到缓存的时候可能处于不同的位置。

所以说所谓全局缓存就是一个全局共享的内存池。

5 Practitioner

 • 

274.2K 消息

2013年7月22日 05:00

你是说内存里的数据是否会在控制器内存之间被转发吗?他们是不会转发的。

如果你想了解如何避免incoming IO写到另一个控制器控制的后端,这就是你最初提出的第二个问题,售前方面可能会有相关的文档解释这个问题。

3.2K 消息

2013年7月22日 06:00

用一张老图, 来说明情况. DMX的架构也能说明问题

dmx.jpg

362 消息

2013年7月22日 17:00

您是按照director吧得

63 消息

2013年7月22日 18:00

VMAX的物理架构不一样吧,VMAX是双控堆叠,引擎间通过RapidIO Switch链接的,各控制器如果要访问其他控制器的缓存肯定是有一定时延的,按照最优效率的情况各控制器应该尽量访问自己控制器的GM空间。还有个问题不知跨控制器访问缓存,我们的VMAX是否通过RDMA来做的?

2.1K 消息

2013年7月22日 21:00

Freshplus,你提的问题一向都比较深入,值得探讨。

对于VMAX跨控制器访问缓存,到底是不是用RDMA来实现的,不是很清楚,也没有相关的信息。不过据我了解,每个控制器都会有一个特别的区域,叫做Global System Data,这部分区域是在所有的控制器上是一样的,其中包括Device Table(用来记录Device上数据对应的Cache位置),和Director Mailboxes(控制器之前的通讯队列)。跨控制器的缓存访问的确是在某些情况下会发生,而且随着引擎的增加而增加。

至于你询问,怎么避免这种情况,我觉得找到对应创建磁盘对应Member的控制器是哪几个(RAID-1,后端物理磁盘会分布在两个控制器上,RAID-5 3+1是4个,不过前提你安装的阵列上有这个数量的控制器。然后做MAP操作的时候把Device Map到对应控制器的FA端口上,那么前端过来的IO会通过同一个Director的内。但是,我觉得跨阵列的缓存访问,不会造成太多延迟,因为同样的电子通讯链路,只要带宽不满和两端处理器队列不满,处理器能够处理通讯请求,它们的速度还是取决于物理速度,这个通过控制器的内部总线通讯没有太大的区别,个人见解,呵呵。

另外,如果你对VMAX的缓存工作机制感兴趣,我之前写的几篇文章你也可以看一下。

Symmetrix缓存技术解读(一)

Symmetrix缓存机制解读(二)

Symmetrix缓存机制解读(三)

63 消息

2013年7月22日 23:00

Fenglin好久不见~  多谢解答。还有几个疑问,跨控制器的缓存访问发生在什么时候? 我理解可能有几种情况:

1、当本控制器读未命中时会看全局缓存在其它控制器中是否有数据,如果有则会跨控访问

2、LBA按照某粒度均衡归属到各控制器,IO访问本控制器时发现归属控制器是其他控制器则转发到其他控制器

3、对于写IO,如果其他控制器已经有读缓存了,那么会通知其他控制器读缓存失效,本控制器处理写IO;或者这个写IO转发到有读缓存的控制器去执行

不知VMAX采用的什么机制

找不到事件!

Top