首页
学习
活动
专区
圈层
工具
发布

linux AIO -- libaio 实现的异步 IO 简介及实现原理

1. linux AIO — libaio 实现的异步 IO POSIX AIO 是在用户控件模拟异步 IO 的功能,不需要内核支持,而 linux AIO 则是 linux 内核原声支持的异步 IO...关于 linux IO 模型及 AIO、POSIX AIO 的简介,请参看上一篇文章 libaio 实现的异步 IO 主要包含以下接口: libaio 实现的异步 IO 函数 功能 原型 io_setup...与 POSIX AIO 区别 从上图中的流程就可以看出,linux 版本的 AIO 与 POSIX 版本的 AIO 最大的不同在于 linux 版本的 AIO 实际上利用了 CPU 和 IO 设备异步工作的特性...POSIX AIO 支持非 direct-io,而且实现非常灵活,可配置性很高,可以利用内核提供的page cache来提高效率,而 linux 内核实现的 AIO 就只支持 direct-io,cache

5.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    现代异步存储访问API探索:libaio、iouring和SPDK

    Linux内核的最新API是io_uring。 作者提供了第一个针对io_uring的深度研究,并且和libaio、SPDK比较,探讨它的下性能和优缺点。...然而,在每个I/O操作中, libaio要依赖两个系统调用, 而且使用中断的方式通知I/O请求的完成, 这导致libaio的单个I/O性能并不好,如下图。...2、SPDK SPDK是Linux的高性能API。 它在用户空间映射了PCIe寄存器以配置CQ和SQ,用户通过轮询CQ来捕获I/O请求的完成,而不需要中断和系统调用。...类似的还有iou和libaio,当队列深度小于16时,二者KIOPS和延迟都很接近,当队列深度大于16后,iou的KIOPS和延迟比libaio要好——因为iou使用的系统调用比libaio少,所以可以更加充分的利用...2、io_uring在特定配置下的性能接近SPDK 3、性能的可扩展性需要仔细考虑 虽然SPDK的性能最好,但需要放弃Linux文件的支持。

    56610

    安装TensorNVMe和Deepspeed时遇到的坑:无root权限安装libaio依赖库

    如果你有root权限,用下面这行代码一键安装即可: sudo apt install libaio1 libaio-dev ---- 如果没有root权限,步骤如下 下载 libaio git clone...https://pagure.io/libaio 安装libaio 如果你没有 cd libaio make prefix=`pwd`/usr install 上面命令会在 /path/to/libaio.../usr路径下安装libaio,安装成功后会得到两个文件夹,结构如下: /path/to/libaio/usr/ |__incude |__libaio.h |__lib |__libaio.a...|__libaio.so |__libaio.so.1 |__libaio.so.1.0.2 将文件加入环境变量路径 之前我一直是将路径加入到PATH和LD_LIBRARY_PATH这两个变量中去,...你需要将路径改成你的路径: export CFLAGS="-I/path/to/libaio/usr/lib/include $CFLAGS" export LDFLAGS="-L/path/to/libaio

    2.9K50
    领券