Linux内核AIO与libaio?

Linux内核AIO与libaio?,第1张

Linux AIO也可以由内核空间实现,异步I/O是Linux 2.6以后版本内核的一个标准特性。对于块设备而言,AIO可以一次性发出大量的read/write调用并且通过通用块层的I/O调度来获得更好的性能,用户程序也可以减少过多的同步负载,还可以在业务逻辑中更灵活地进行并发控制和负载均衡。相较于glibc的用户空间多线程同步等实现也减少了线程的负载和上下文切换等。对于网络设备而言,在socket层面上,也可以使用AIO,让CPU和网卡的收发动作充分交叠以改善吞吐性能。

在用户空间中,我们一般要结合libaio来进行内核AIO的系统调用在用户空间中,我们一般要结合libaio来进行内核AIO的系统调用。AIO的读写请求都用io_submit()下发。下发前通过io_prep_pwrite()和io_prep_pread()生成iocb的结构体,作为io_submit()的参数。这个结构体指定了读写类型、起始地址、长度和设备标志符等信息。读写请求下发之后,使用io_getevents()函数等待I/O完成事件。io_set_callback()则可设置一个AIO完成的回调函数。

指的是 块设备文件.

对应一个文件,举个例子, 路径为  /dev/sda

一般在 linux 驱动 知识中 提及.

通过/dev/sda(块设备文件)可以访问磁盘,也可以通过文件系统来访问磁盘,这是仅有的两种访问磁盘的方式.

参考链接中的图  linux内核响应一个块设备文件读写的层次结构网页链接


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8645701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存