StreamCache: Revisiting Page Cache for File Scanning on Fast Storage Devices——论文泛读

ATC 2024 Paper 论文阅读笔记整理

问题

在高性能计算中,大多数应用程序表现为两种文件扫描I/O模式:在每个I/O阶段,每个文件由一个进程独立访问(N-N模式)或由多个进程共享(N-1模式)。文件扫描的数据重用率较低,因为即使在N-1模式下,不同的进程也会访问每个文件的不同部分。

页面缓存的缓冲I/O可用于文件扫描,因为页面缓存可以透明地提供缓冲、数据聚合、I/O对齐和预取。然而,在快速存储设备上(NVMe SSD)使用页面缓存进行文件扫描会带来两个性能问题:

  • 缓冲I/O随着设备带宽的增加而扩展性较差,限制了其在快速存储设备上的性能。由于页面缓存中的预读和写缓冲机制,缓冲I/O在一个SSD上的性能优于直接I/O。随着存储设备变得更快,缓冲I/O性能几乎没有改善。当SSD数量大于1时,缓冲读取带宽增加不超过35%,缓冲写入带宽没有明显改善。

    尽管在这个实验中,直接I/O在文件扫描方面比缓冲I/O表现出更好的可扩展性,但本文认为文件扫描可以从页面缓存中受益:(1)对于读写工作负载,使用缓冲I/O模式对小I/O进行文件扫描比直接I/O模式表现更好[42],因为读工作负载的预取和读写工作负载的I/O聚合。(2)页面缓存可以缓冲写工作负载的数据并执行异步回写,有效地减少关键路径中的I/O延迟。(3)在同时处理读写请求时,由于对I/O地址和大小的严格限制,使用直接I/O需要额外的I/O对齐工作[18]。

  • 后台回写会显著影响写密集型文件扫描的性能。当后台回写处于活动状态时,前台I/O带宽性能下降31.7%。由于快速存储设备的设备带宽充足,后台回写在快速存储设备上更加密集。限制后台回写速率并不是一个永久的解决方案,因为它会导致内存中脏页的累积,从而阻止前台I/O请求。

上述问题是由于工作负载特性和内核内页面缓存管理的共同影响而产生的。文件扫描的数据重用率低,导致页面缓存未命中率高,内存脏率快速增长。(1)当页面缓存未命中时,页面缓存会在关键路径中分配空闲页面,而内核中与页面分配相关的大量开销会阻碍前台I/O性能。(2)页面缓存以页面粒度维护脏状态,如页面脏和回写,导致前台写入和后台回写之间发生强烈的锁争用,因为它们都操纵共享索引XArray[54]。

本文方法

本文提出了StreamCache,用于快速存储设备上文件扫描的页面缓存管理系统。

  • 使用轻量级的流跟踪方法,以连续流的粒度记录缓存页面的状态。对于每个打开的文件,StreamCache都会维护一个流跟踪树,并在缓冲的I/O请求到达时更新该树。此外,当I/O模式高度顺序时,StreamCache会保留一个流指针来降低流跟踪开销。所有流都保存在两个系统级流LRU列表中,用于页面回写和逐出。

  • 使用基于流的页面回收方法来降低对前台I/O请求的干扰。StreamCache有一个内核线程池,它利用流跟踪模块快速定位脏页进行回写。从XArray中提取这些脏页的指针,而无需获取自旋锁,从而降低了对前台I/O请求的干扰。此外,StreamCache使用每个文件的回写计数器进行文件同步。当StreamCache检测到空闲页面数量不足时,它会利用基于流的驱逐来回收干净的页面。

  • 使用两层内存管理方法,通过利用CPU缓存局部性来加速页面分配。StreamCache有一个系统级内存池,在每个核心的双向链表中维护零阶空闲页面。在内存池之上,StreamCache还为带宽要求高的应用程序设计了从内存池中按文件缓存到批处理页面分配的缓存。

在XFS中实现了StreamCache。实验结果表明,与现有方法相比,StreamCache可以将科学应用程序的I/O带宽提高44%,并将大型语言模型的检查点/重启时间平均减少15.7%。

总结

针对页面缓存的缓冲I/O进行优化,现有方法可扩展性较差,后台回写会显著影响前台I/O性能。本文提出了StreamCache,用于快速存储设备上文件扫描的页面缓存管理系统。包括3个技术:(1)使用轻量级的流跟踪方法,为每个打开的文件维护一个流跟踪树,并保留一个流指针来降低流跟踪开销,用于页面回写和逐出。(2)使用基于流的页面回收方法。利用流跟踪快速定位脏页,利用脏页的指针而无需获取自旋锁。(3)使用两层内存管理方法。系统级内存池,在每个核心的双向链表中维护零阶空闲页面。为带宽要求高的应用程序,从内存池按文件缓存到批处理页面。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙BOOK言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值