• 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功能不仅限于现有机制(即经典的读/写或其他已建立的系统调用),而且还可以应用于新的原语。

  • 相关阅读:
    基于C#、Visual Studio 2017以及.NET Framework 4.5的Log4Net使用教程
    【done】剑指offer68:二叉树最近公共祖先
    Web系统常见安全漏洞介绍及解决方案-sql注入
    consul introduction
    Vue3+Vite+Koa2的一个前后端分离todolist记事本网站
    Netty—— 概念剖析(NIO vs BIO)
    讨论 | AR 应用落地前,要做好哪些准备?
    OpenHarmony应用开发—ArkUI组件集合
    基于图像识别的小车智能寻迹控制系统
    keep-alive缓存,三级路由不生效
  • 原文地址:https://blog.csdn.net/qq_36159989/article/details/136617904