问题
随着SSD的速度越来越快,SSD上的Swap成为有效回收内存和提高系统效率的关键系统组件[3,14,18]。但一个关键限制是随着SSD利用率的增加,系统性能会下降。
由于SSD是异地更新,通过闪存转换层(FTL)将主机侧随机写入转换为介质所需的顺序写入,并维护每个块的逻辑到物理映射,并通过设备端垃圾回收(GC)来释放擦除块并回收新写入的容量。该接口将硬件管理与主机端软件解耦,因此使用SSD的软件和SSD的管理逻辑都无法看到彼此的活动。在交换的情况下,这种去耦阻碍了操作系统优化设备上数据放置的能力,以及设备利用交换机制的独特特性及其对设备的使用的能力。从而导致GC引起的写放大(WA),降低Swap性能。
在ZNS中,重建了主机对存储设备的管理和控制[25]。引入了区域的概念,区域不允许就地更新,并要求按顺序写入。要回收区域中的空间,需要对其进行重置,然后才可以发出新的写入操作。它能够实现主机侧存储控制,而不必处理低级别的介质管理,如损耗均衡或纠错。
本文方法
本文提出了ZNSwap,针对分区命名空间(ZNS)SSD优化的交换子系统。
-
利用ZNS对驱动器上的数据管理的控制,引入主机端ZNGC。但主机侧GC将在主机中产生不可接受的空间开销,需要为TB级设备中的每个4KiB块维护反向映射。ZNSwap将反向映射信息到与交换出的页面内容一起写入的逻辑块元数据中,避免了主机中的这些开销。
-
细粒度空间管理。操作系统使用TRIM提示块SSD解除分配特定的LBA,从而降低SSD侧GC的负载,但TRIM的开销很大,导致带宽显著下降。ZNGC利用了对操作系统内部页面有效性结构的直接访问,而没有与TRIM相关的昂贵开销。
-
动态ZNGC优化。动态调整存储在交换设备中的交换页面数量,提高了以读为主和混合读写工作负载的性能。操作系统在交换设备中保留未修改的交换入内存页面的副本,以避免这些页面的换出惩罚。此类页面可占用的磁盘空间量由操作系统静态限制(在Linux中为50%,不可配置)。但这个静态阈值并不适用于所有工作负载。
-
灵活的数据放置和空间回收策略。ZNSwap允许定制磁盘空间管理策略,以根据特定系统的交换需求定制GC逻辑。例如,强制将寿命相似的数据主机代管到同一区域,或者专用一个单独的区域来处理特定租户的交换来实现更好的性能隔离。
-
准确的多租户计算。ZNSwap与cgroup机制集成,将GC开销显式地归因于不同的租户,从而提高了它们之间的性能隔离。
使用标准的Linux交换基准和两个生产键值存储来评估ZNSwap。与传统SSD上的Linux交换相比,ZNSwap显示出显著的性能优势,例如不同内存访问模式的稳定吞吐量,以及在实际使用场景下memcached键值存储中,99%延迟低10倍,吞吐量高5倍。
实验
实验环境:服务器具有2×Intel Xeon Silver 4216 CPU、512 GiB内存(2×256 GiB DDR4 2933 Hz)、Ubuntu 20.04、Linux 5.12.0。1TB生产级Western Digital ZN540 ZNS SSD、相同硬件平台和介质的等效1TB传统块SSD(7%OP)。SSD的最大顺序读取和写入带宽分别为3.2GiB/秒和1GiB/秒。随机4KiB读取和写入分别达到1.4GiB/秒和1GiB/秒。对于ZNS SSD,每个区域的可写容量为1077MiB,并且格式化后每个LBA可以存储64B的元数据。
数据集:vm-scalability[22]、pmbench[58]、memcached-ETC[23,29,45]、redis-YCSB[16,27]
实验对比:带宽、写放大、尾延迟
实验参数:交换设备利用率、不同数据集
总结
针对ZNS SSD上的交换子系统设计,现有方法垃圾回收开销高、性能差。本文提出ZNSwap,引入了与交换逻辑共同设计的主机端ZNGC。(1)将每个4K块的反向映射信息、与交换出的页面内容一起写入的逻辑块元数据中,避免了反向映射开销。(2)细粒度空间管理。利用了对操作系统内部页面有效性结构的直接访问,没有与TRIM相关的昂贵开销。(3)动态ZNGC优化。动态调整存储在交换设备中的交换页面数量,提高了以读为主和混合读写工作负载的性能。(4)灵活的数据放置和空间回收策略。允许定制磁盘空间管理策略,以根据特定系统的交换需求定制GC逻辑。(5)准确的多租户计算。ZNSwap与cgroup机制集成,将GC开销显式地归因于不同的租户,从而提高了它们之间的性能隔离。
标签:泛读,写入,交换,un,GC,Swap,ZNSwap,SSD,页面 From: https://blog.csdn.net/qq_36159989/article/details/137008922