实验室存内计算方向工作被SCI检索的国际期刊JSA(Journal of Systems Architecture)接收,该期刊属于CCF B类/中科院2区。论文第一作者为胡俊成博士,通讯作者为车喜龙教授。其他合作者包括22级硕士生陈硕、23级硕士生魏皓阳、21级博士生王国毓、吉林大学计算机科学与技术学院21级本科生裴辰举。本论文提出的StorStack 是一个全栈、高度可配置的存储文件系统框架和模拟器,在确保了可靠性、灵活性和兼容性基础上,实现了性能优化。
研究背景
数据移动的成本日益提高,存内计算(In-storage Computing)在学术界引起了相当大的关注。虽然大多数存内计算研究允许直接处理数据,但这些方法并不能完全消除 CPU 在文件访问过程中的参与,数据仍然需要从文件系统移动到内存中进行处理。尽管有人尝试将文件系统放入存储设备中来解决这一问题,但由于绕过了内核且缺乏页面缓存,在面对高延迟存储设备时,系统的性能并不理想。为解决上述问题,我们提出了StorStack,一个全栈、高度可配置的存储文件系统框架和模拟器,以促进架构和系统级研究。通过将文件系统卸载到存储设备中,文件系统可以更接近数据,减少数据移动的开销。同时,它还避免了内核陷阱,减少了通信开销。更重要的是,这种设计使存储计算应用完全不需要 CPU 的参与。StorStack 还设计了用户级缓存,以便在存储设备访问延迟较高时保持性能。
实验设计
本文提出的StorStack设计包括三个主要组成部分,分别部署在主机端和设备端,如图1所示。主机端包括用户空间的用户库U-lib和内核空间的内核驱动模块K-lib,设备端包括文件系统运行时环境Firm-RT。并将工作流程分成数据平面(红色)和控制平面(蓝色),分别负责用户数据访问和系统功能的维护、可靠性及安全性保障。

虽然我们的设计位于存储设备,但与一般的Firm-FS不同,我们实现了文件系统与存储设备的解耦。文件系统会动态地加载到Firm-RT上,并可根据用户需求选择不同的文件系统,从而实现了文件系统的可替换功能。这种组织方式如图2所示。

为了确保文件系统的基本保障(如权限检查等),StorStack将控制平面置于可信区域中。与此同时,为了提升系统性能,本文提出了一种令牌机制,以避免在数据平面访问过程中,StorStack不必要地进入内核空间,进而减少内核陷阱的开销。具体工作流程如下图。

实验结果
StorStack的主机端和设备端都运行在Linux 5.15上,Firm-RT由QEMU及其主机上运行的系统模拟实现。本文测试了StorStack在不同设置下的表现,涵盖不同的缓存选项、设备访问延迟、线程数量和读写比例等因素。具体表现如下:
随机读写测试:

绕过内核的性能提升:

延迟的影响:

多线程性能:

JSA全称Journal of Systems Architecture,是被SCI检索的国际期刊,同时也是中国计算机学会(CCF)推荐国际学术刊物(计算机体系结构/并行与分布式计算/存储系统)B类。其范围从微体系结构级、系统软件级直至特定应用体系结构级。实时系统、操作系统、编程语言、通信(仅限于分析和软件栈)、移动系统、并行和分布式架构等方面以及计算机和系统架构领域的其他主题都属于本期刊的范围。