Introduction
对NVMe Flash的远程访问实现了数据中心内Flash容量以及IOPS的灵活扩展和高利用率。但是,现有的用于远程Flash访问的系统会带来巨大的性能开销,或者无法隔离共享每个Flash设备的多个远程clients。
在实现对Flash的远程访问方面存在重大挑战。要实现低延迟,需要在server和client的网络和存储层上将处理开销降至最低。除了低延迟之外,每台服务器还必须以最低成本实现高吞吐量,从而使一个或多个NVMe Flash设备且具有少量CPU cores的机器达到饱和。此外,要管理共享一个Flash设备的多个租户之间的干扰以及Flash设备的不均匀读写行为,需要一种隔离机制,以保证所有租户的可预测性能。最后,在共享程度,部署规模和用于远程连接的网络协议方面需要具有灵活性。现有的仅软件用于远程Flash访问的选项(例如iSCSI或基于事件的服务器)无法达到性能预期。最近提出的硬件加速选件,例如基于RDMA架构的NVMe,缺乏性能隔离,并且部署灵活性有限。
我们提出了ReFlex,一个用于远程Flash访问的软件系统,其性能与访问本地Flash几乎相同。ReFlex使用数据平面内核紧密集成网络和存储处理,以在低资源需求下实现低延迟和高吞吐量。数据平面设计避免了中断和数据拷贝的开销,针对局部性进行了优化,并在高吞吐量(IOPS)和低尾部延迟之间取得了平衡。ReFlex包括一个QoS调度程序,该调度程序实现优先级和速率限制,以便为共享设备的多个租户实施针对延迟和吞吐量的服务水平目标(SLO)。ReFlex提供了用户态库和远程块设备驱动程序来支持client应用程序。