加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

随机IOPS全面逾越,腾讯云CSG存储网关高机能缓存技能详解

发布时间:2018-03-29 23:52:22 所属栏目:云计算 来源:站长网
导读:CSG存储网关是基于腾讯云高机能、高靠得住性的工具存储体系COS对外提供iSCSI、NFS和CIFS/SMB会见协议。作为一种殽杂云方案, 辅佐用户不消修改当地应用就可以把数据上传到COS。网关可以陈设在用户IDC也可以陈设在腾讯云上,产物形态如下所示。 1.缓存掷中率

CSG存储网关是基于腾讯云高机能、高靠得住性的工具存储体系COS对外提供iSCSI、NFS和CIFS/SMB会见协议。作为一种殽杂云方案, 辅佐用户不消修改当地应用就可以把数据上传到COS。网关可以陈设在用户IDC也可以陈设在腾讯云上,产物形态如下所示。

随机IOPS全面超越,腾讯云CSG存储网关高性能缓存手艺详解

1.缓存掷中率和延时是技能上两大挑衅,

网关和COS之间必要走外网来通信,外网收集存在延时高、发抖和丢包等题目,并且还会占用客户大量带宽。

现实场景下,我们发明用户常常会见的数据只是一小部门热门数据,存在局部性特点,以是假如能在网关上加一层缓存且缓存掷中率足够高的话,理论上网关就可以到达靠近当地磁盘的读机能,也可以镌汰对带宽占用。

缓存的巨细受容量的限定只能生涯一部门热门数据, 必要按照场景选择吻合的缓存算法。评价缓存体系优劣一样平常通过掷中率和延时两个指标,缓存算法一样平常都是在两者间衡量。影响掷中率的要害就是缓存替代算法,而延时首要跟并发锁计划有关。一样平常缓存体系回收一把大的全局锁,对付CSG回收当地磁盘作为存储介质的体系,平凡的SATA盘延时差不多10ms阁下,假如回收全局锁最多只有100qps/s, 以是必要对锁举办优化。

2. 业界现有技能实现进程及破绽理会

业界广泛的做法是回收缓存替代算法是LRU,譬喻Linux内核page cache、 memcached等。典范的实现方法是hashtable + 双链 + 全局锁的方法,可是这种实现存在两大题目:

全部的操纵都必要加全局锁造成并发低,延时高

对付数据会见局部性差的场景命缓存失效中率低,好比次序扫描

针对这两个题目常见的实现改造思绪是:

捐躯LRU特征,即镌汰节点移动到head的次数, 从而低落全局锁的竞争,可是也许会造成热门数据被裁减

LRU链表分两段或多段,基于必然的会见计策办理局部性差的场景

memecached 和page cache也是基于这两种改造思绪优化的,下面说明下memecached 和page cache的详细实现细节。

memcached 的LRU算法实现:

每个节点一把锁掩护节点数据和索引

LRU链表分为hot、warm和cold三个子链表,巨细比例为 32:32:34

每个子链表一把全局锁,maintainer 线程根上述比例维持链表长度时要加全局锁

节点会见时只必要加节点锁同时标志为active 并不移动办理了锁斗嘴题目,并且分三个子链表共同拟定的会见计策办理结局部性差的场景。可是只是由maintainer 线程按照 active 暗示来判定是否移动到 head, 太过的捐躯LRU特征会造成热门数据被裁减导致掷中率低。

page cache 的LRU实现:

全局锁(zone锁)

LRU链表分为activate和inactivate两个子链表, 比例为1:1

也是回收分两个子链表办理结局部性差的场景, 可是依然回收的是全局锁没有对锁做优化。

memecached 和page cache的实现针对局部性差的场景都是回收拆分链表的方法。针对全局锁的题目memecached 中固然回收了节点锁,可是太过的捐躯LRU特征会造成缓存掷中率低。

3. 高机能腾讯云CSG技能背后细节

CSG在实现的参考了这两个方案的优弱点,但愿可以或许在并发机能的缓和存的掷中率之间达到均衡, 详细实现如下:

hashtable每个bucket一把锁掩护节点和索引,一把全局锁掩护LRU链表

链表由midpoint指针分为hot 和cold两个子链表,默认的节点数比例是 2:1

随机IOPS全面超越,腾讯云CSG存储网关高性能缓存手艺详解

CSG也是通过midpoint把LRU链表分别为hot 和cold两个子链表来办理局部性差场景。锁的优化回收的是段锁+全局锁,对节点的会见是先加段锁会见数据,移动节点时才加全局锁,把全局锁的临界区节制到了最小范畴。这样即担保了LRU特征晋升了缓存掷中率并且锁斗嘴也不严峻, 现实测试4线程加全局锁修改链表可以到达50w+/s的并发满意了需求。

如上图所示我们实现的段锁hashtable是对每一个bucket一把锁,对hash到统一个bucekt的key加统一锁,多线程并发锁斗嘴小并发高。hash斗嘴时回收的链式斗嘴处理赏罚, 当load_factor > 1.0时会自动举办resize,担保key和 bucket锁得比例小于1:1。

下图是多线程环境下跟stl 中unordered_map 加全局锁机能比拟数据,测试情形4 cpu + 8G mem。

随机IOPS全面超越,腾讯云CSG存储网关高性能缓存手艺详解

随机IOPS全面超越,腾讯云CSG存储网关高性能缓存手艺详解

比拟发明纵然单线程机能也差不多10%的机能消费,4线程下是unordered_map的两倍以上, key越多锁斗嘴越少并发机能也越好。

4. 与竞品读机能比拟

测试情形:4cpu + 16Gmem + 1G网卡    平台: cvm + CBS(平凡盘100G)+ 卷 500G

测试器材:fio -ioengine=libaio -iodepth=128 -direct=1 -rw=randread -bs=[32k|64k|512k]

随机IOPS全面超越,腾讯云CSG存储网关高性能缓存手艺详解

数据比拟在局部性较量好的场景随机范畴80G,CSG的延时比海外知名云商低10%阁下。局部性较量差的场景随机范畴500G, CSG 读随机IOPS是竞品3倍。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读