101得票4回答
POSIX异步I/O(AIO)的状态是什么?

在网络上有一些零散的页面介绍 POSIX AIO 设施,内容详细程度不尽相同。它们当中没有一个是非常新的。它们在描述什么并不清晰。例如,“官方”(?)Linux 内核异步 I/O 支持的网站在此处表示套接字无法工作,但我 Ubuntu 8.04.1 工作站上的“aio.h”手册页似乎都暗示它可...

56得票1回答
Linux中POSIX AIO和libaio之间的区别是什么?

我所理解的是: POSIX AIO APIs在<aio.h>中进行了原型设计,您需要使用librt(-lrt)链接您的程序,而libaio APIs在<libaio.h>中,您的程序需要链接libaio(-laio)。 我无法理解的是: 1.内核是否会以不同的方式...

55得票4回答
事件驱动和异步之间有什么区别?epoll 和 AIO 之间呢?

事件驱动和异步通常被用作同义词。它们之间有什么区别吗? 此外,epoll和aio之间有什么区别?它们如何配合使用? 最后,我已经多次读到Linux中的AIO存在严重问题。它究竟有哪些问题? 谢谢。

33得票4回答
Linux上的缓冲异步文件I/O

我正在寻找在Linux上进行异步文件I/O的最有效方法。 POSIX glibc实现使用用户空间线程。 本地aio内核API仅适用于不带缓冲区的操作,为了添加对带缓冲区操作的支持而制作的内核补丁已经存在超过3年,但似乎没有人关心将它们集成到主干中。 我发现了许多其他想法、概念和补丁,可以...

21得票1回答
Linux内核如何处理异步I/O(AIO)请求?

我正在编写一个C程序,通过直接从原始块设备文件读取来读取SSD驱动器中的数据。 我正在尝试使用Linux AIO(我指的是Linux AIO API,即由linuxaio.h提供的函数,如io_submit(...)等,而不是POSIX AIO API)。我使用O_DIRECT标志打开块设备...

17得票2回答
在Ubuntu Linux中异步IO io_submit的延迟

我正在寻求关于如何在运行于Ubuntu Linux 14.04上的应用程序中实现高效且高性能的异步IO工作的建议。 我的应用程序处理交易并在磁盘/闪存上创建文件。在应用程序进行交易时,会创建额外的块,这些块必须附加到磁盘/闪存上的文件中。该应用程序还需要经常读取该文件的块,因为它正在处理新的...

17得票3回答
Linux AIO:扩展性差

我正在编写一个使用Linux异步I/O系统调用的库,并想知道为什么io_submit函数在ext4文件系统上表现出较差的扩展性。如果可能的话,我该怎么做才能让io_submit不会因大型IO请求而阻塞?我已经按照这里所述进行了以下操作: 使用O_DIRECT。 将IO缓冲区对齐到512字节...

17得票1回答
使用Linux中的splice()函数和内核AIO技术写入磁盘

使用内核AIO和O_DIRECT|O_SYNC,无需将数据复制到内核缓冲区中,可以获得细粒度的通知,以确认数据实际已刷新到磁盘上。但是,需要在用户空间缓冲区中保留数据以供io_prep_pwrite()使用。 使用splice(),可以直接从内核空间缓冲区(管道)将数据移动到磁盘上,而不必复...

16得票2回答
在*nix系统中了解异步编程的基础知识

最近我一直在Google搜索以了解在Nix机器上实现异步编程/行为的各种方法(如之前所知),并确认了一个事实:Linux仍然没有像Windows(IOCP)那样的真正的异步模式(使用单个线程的并发)。 以下是Linux的几个替代方案: select/poll/epoll :: 无法使用单...

15得票2回答
Linux内核AIO、开放式系统调用

为什么Linux内核AIO不支持异步“open”系统调用?因为“open”可能会在文件系统上阻塞很长时间,进而导致无法异步执行。