linux – io_submit和带有O_ASYNC的文件有什么区别
我正在阅读这个
tutorial异步磁盘文件io,但它并没有让我清楚,实际上让我更加困惑.
根据本教程,有两种不同的异步IO模型: >异步阻塞I / O:使用O_ASYNC打开文件,然后使用epoll / poll / select. 至少从概念的角度来看,没有什么大不同,真的,io_submit可以让你发出多个io reqeusts,另一方面,使用带有O_ASYNC的read,你可以发出一个带有隐含文件位置的请求. 而guide也提到使用epoll替代Linux AIO:
使用epoll作为AIO替代品有什么问题?或者换句话说,我们需要一个新的接口io_submit来解决的问题是什么? 解决方法
我认为,io_ * api背后的关键问题是能够通过两个主要措施实现更高的IO吞吐量:
>最小化应用程序IO循环中的系统调用次数.可以提交多个请求批处理,然后,在稍后的某个时间,应用程序可以返回使用io_getevents()一次检查各个请求的结果.重要的是,io_getevents()将返回有关每个IO事务的信息,而不是epoll()在每次调用时返回的模糊“fd x has pending changes”位. 可以说,io_getevents()是非常重要的功能,因此io_submit()是一个方便的伴侣,可以有效地使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |