存档

文章标签 ‘AIO’

nginx对Linux native AIO机制的应用(实现篇)

2013年1月12日 没有评论 9,015 次浏览

从前面文章已经了解到,在Linux系统上,要使用native... [阅读更多]

nginx对Linux native AIO机制的应用(配置篇)

2013年1月12日 没有评论 6,651 次浏览

从0.8.11版本开始,nginx开始支持Linux native... [阅读更多]

Linux native AIO与eventfd、epoll的结合使用

2013年1月9日 没有评论 11,851 次浏览

在前面的示例libaio_test.c和native_aio_test.c中,可以看到对磁盘aio请求(本文的aio都指此类)的使用有阻塞等待,这明显之处为对io_getevents()函数(当然,其它函数,比如io_submit()也有一定程度的阻塞)的调用,它会等待并获取已完成的io请求,如果当前没有或少于指定数目的io请求完成,那么就会等待直到timeout。 io_getevents()函数的等待会导致整个进程的阻塞使得程序无法继续向下执行,如果程序还有其它阻塞点,那么有必要想办法把这多处等待合而为一同时进行,从而提高并行性,也就是通常所说的select/epoll等这类多路复用技术。 本文就以epoll为例,介绍一下在linux下,如何把aio结合并应用到epoll机制里。我们知道,epoll机制的最大好处就是它能够在同一时刻对多个文件描述符(通常是由众多套接字形成的描述符集合)进行监听,并将其上发生的读/写(或错误等)事件通知给应用程序,也就是做到时间上的复用。如果能够把aio也放到epoll机制里,即把aio当作epoll机制里的“一路io”,那么就能使得aio与其它可能的等待操作(比如:读/写套接字)共同工作,从而达到时间复用的目的。 作为epoll机制里的“一路io”,需要一个文件描述符来反馈对应的发生事件,而对于纯aio而言,是没有文件描述符作为代表的,因此linux系统上多出了一个eventfd()的系统调用: #include... [阅读更多]

异步I/O之native AIO篇

2013年1月6日 6 条评论 9,729 次浏览

本文介绍Linux下另外一种异步I/O,即由Linux内核实现提供的native... [阅读更多]

异步I/O之glibc AIO篇

2013年1月1日 2 条评论 5,797 次浏览

Linux下可用的异步I/O(以下简称为AIO)有两种,一种由Glibc实现提供,另一种是由Linux内核实现提供,而本文介绍的是glibc内的AIO。 在介绍AIO之前,需要对Linux上的各种不同I/O模型有一个较好的了解,而在这里:http://www.ibm.com/developerworks/cn/linux/l-async/,已经有了很详细的解释,这无需多说。 先来看示例,从感观上来进行认识: /** ... [阅读更多]