I/O Passthru: Upstreaming a flexible and efficient I/O Path in Linux——泛读笔记

FAST 2024 Paper 论文阅读笔记整理

问题

新的存储接口继续在非易失性快速存储器(NVMe)存储上快速出现,但将这些创新融入操作系统的通用I/O堆栈具有挑战性且耗时。虽然NVMe标准不再局限于块I/O,但Linux I/O以块I/O路径为中心。由于缺乏可扩展的操作系统接口,新的存储创新难以被采用。

本文方法

本文提出了I/O Passthru,一种新的I/O路径,已进入主流Linux内核。这个新路径的关键组成部分是NVMe-char接口和io_uring命令。允许更快地部署任何新的NVMe功能,因为它没有额外的抽象;提供了一个高效且功能丰富的用户界面。

  • 构建了一个新的NVMe直通I/O路径,提供了比块I/O路径更高的灵活性和效率,如灵活的数据放置、计算存储和端到端数据保护。

  • 介绍了io_uring命令,一种在Linux内核中实现异步IOCTL的通用工具。

  • 在Linux内核的上游获得了这条路径,并将其集成到用户空间软件中,包括SPDK、xNVMe、liburing、fio和nvme-cli。

实验结果表明,(1)将其效率与现有的io_uring块路径进行比较,(2)通过将数据放置集成到Cachelib中来展示其灵活性。FIO峰值性能工作负载显示IOPS比块路径高16-40%。

实验

实验环境:

数据集:生产工作负载、

实验对比:IOPs、CPU利用率、提交延迟、写放大因子

实验参数:队列深度、设备数

总结

许多新的存储功能/接口不能很好地适应块层,并且由于Linux中缺乏适当的系统调用接口而面临采用变化。因此,之前只有两种选择:(1)在可能存在的块接口上使用同步NVMe直通,(2)切换到内核旁路解决方案。本文在内核中添加新的直通路径来创建一个新的替代方案。此路径将NVMe字符接口与io_uring相结合。并将此路径集成到各种用户空间库/工具,说明如何简化FDP SSD、端到端数据保护和计算存储的启用。还在io_uring中引入了ioctl的替代方案。io_uring_command基础设施确保io_uring功能不仅限于现有机制(即经典的读/写或其他已建立的系统调用),而且还可以应用于新的原语。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

妙BOOK言

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

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

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

打赏作者

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

抵扣说明:

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

余额充值