背景
内存交换技术是当内存紧缺的时候,将内存中的页面交换到交换设备中(如zRAM,SSD等)。随着SSD的性能越来越好,越来越多的交换设备采用SSD。然而对于块SSD来说,数据频繁写入更新会导致频繁触发垃圾回收(GC)进行空闲空间的回收。而其中的有效数据搬移会导致额外的写放大,因此垃圾回收的效率决定了对寿命的影响程度。Zoned Namespace (ZNS)是一种新型SSD存储接口特性。一个ZNS SSD是由一系列逻辑可寻址zone(区域)组成,而每个区域物理上与SSD擦除粒度Block是对齐的。区域内的读可以是随机的,但是写必须是顺序的。
动机
对于数据中心而言,交换性能十分关键。因此本文针对于交换逻辑和SSD行为之间的相互作用进行分析,并得出4点重要发现。
发现1:块SSD执行GC时无法感知到已解除分配的交换槽(swap-slots)。
块设备SSD通常使用TRIM命令来使设备感知到交换槽的释放,然而对降低由于内存交换导致的GC开销效果并不明显。这是因为对于传统大粒度TRIM而言,连续512个逻辑地址页面的TRIM比较难以达到,故而TRIM指令的下发很少,使得效果并不明显;同时对于小粒度TRIM而言,由于TRIM本身带有的开销(如命令下发,元数据加载修改开销等),使得其效果也并不是很理想。图1展示了实验结果。
图1 TRIM对设备性能的影响
发现2:交换缓存无法感知到GC。
图2展示了设备使用率对读性能的影响。理论情况下不同设备使用率对读性能应该没有影响,然而经过测试发现当设备使用率高的时候读性能和写放大系数发生了变化。这跟交换缓存实现的原理有关。当设备使用率超过50%时,所有交换读请求不会存放在交换缓存中,此时swap-slot会被释放。当内存中逐出该数据时,则需要重新将数据写入交换设备中。这样设计的原因有二,一是避免swap-slot过多带来的管理开销,二是避免设备垃圾回收时搬移过多的数据量。图3展示了交换缓存中截断阈值对性能设寿命的影响。其中发现对读负载,阈值越大表现越好,因为避免了数据的额外写入;对读写混合负载,阈值越小表现越好,因为及时无效外存数据则会提升垃圾回收效率,提高性能。而对于静态阈值无法很好地满足不同工作负载的表现。
图2 设备使用率对读性能的影响
图3 交换缓存截断阈值对性能和寿命的影响
发现3:GC无法感知到页面访问特征。
对于TRIM而言,常见使用大粒度TRIM来降低开销。然而对于倾斜度较大的负载,无效掉的数据往往无法十分连续。这会影响TRIM的下发,从而影响GC效率。经过测试发现,采用均衡负载时,换出带宽为480MB/s;然而对于倾斜负载(512-slots TRIM)时,换出带宽为195MB/s,同时对于倾斜负载(8-slots TRIM)换出带宽为324MB/s。因此针对不同页面访问特征,GC无法很好的感知到,导致整体性能下降。
发现4:GC无法感知到操作系统的性能隔离。
图4显示了不同进程的换入带宽。CG.A为纯读进程,CG.B为读写混合进程。通过图中可以发现,不同进程之间的性能会被相互影响。而理想状态下不同进程之间的性能应该不受到影响,如读写混合负载引发的GC不应该影响纯读负载的性能。
图4 进程之间性能的相互影响
方法
为了解决上述的四个问题,ZNS SSD在本文中被使用。这是因为ZNS SSD随着设备使用率的提升依然保持着稳定的性能,如图5所示。本文提出ZNSwap,其中有三个关键设计目标:1. 实现资源高效的主机端GC:降低主机端GC最为消耗资源的反向映射表的开销。2. ZNGC-OS一体化:ZNGC可以直接获取操作系统暴露的信息来优化swap性能,避免TRIM的开销。3. 交换数据放置策略:通过一系列接口实现每个核之间的性能隔离、冷热数据间的性能隔离和进程之间的性能隔离。
图5 ZNS SSD随着设备使用率的不同性能的变化
1. ZNGC:ZNGC中实现了反向映射的设计,通过在页面的OOB区域中存储结构体来进行反向映射,而非通过记录地址转换表,从而节省开销。具体结构体设计如图6所示。
图6 Linux反向映射设计,阴影部分为ZNGC反向映射时所需要用到的结构体
2. ZNGC-swap一体化:其中包括四个部分内容。a)物理zone(空间)信息:每个空间与swap-slots的映射相关联,映射存储了每个swap-slot的状态。这样ZNGC和OS就可以立马知道swap-slot的状态转变,不需要TRIM和截断阈值来管理交换缓存。b)交换空间抽象:可以被用来swap-slot分配的活跃空间通过交换空间抽象进行暴露,从而避免管理物理空间的复杂性。c)ZNSwap策略:提供一系列接口使得可以定制化空间分配策略和回收策略。d)接口:本文定义了三个标准api,核策略、冷热策略和进程策略,分别是对每个核的数据、冷热数据和进程数据进行性能隔离。
图7 ZNGC 策略接口
实验结果
ZNGC-交换子系统收益:换出带宽实验结果如图8所示。正如预期,随着设备使用率的提升GC负担越重。同时,该文章衡量了80%设备使用率时,CPU的最大开销。发现,ZNGC的CPU开销小,同时交换性能表现更好。同时跟采用截断阈值相比,ZNSwap可以达到图3中的ideal。
图8 换出带宽和写放大与设备使用率的关系
进程交换性能隔离:同时运行两个进程,一个只读,一个只写,观察两个进程的换入性能。结果如图9所示。使用进程策略,可以使得ZNswap在该条件下达到最优带宽。
图9 进程性能隔离实验结果
总结
本篇文章针对基于块SSD开启内存交换进行分析后得出四个结论,块SSD垃圾回收时所存在的缺陷。进而提出使用ZNS SSD,并进行内存交换的优化设计。具体包括资源搞笑的主机端GC、ZNGC-OS一体化和交换数据放置策略。通过最终的实验结果可以得出,ZNswap可以得到较好的性能和较低的写放大,同时也实现了较好的性能隔离。
审核编辑:刘清
-
存储器
+关注
关注
38文章
7453浏览量
163608 -
交换机
+关注
关注
21文章
2623浏览量
99269 -
SSD
+关注
关注
20文章
2851浏览量
117234 -
SWAP
+关注
关注
0文章
51浏览量
12801
原文标题:ZNSwap: 探索内存交换的新出路
文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论