On Thu, 20 Dec 2007 21:13:26 +0000 "Arnar Birgisson" firstname.lastname@example.org wrote:
Kernel level AIO, is that about the kernel providing that abstraction or is it using the hardware in some entirely different way?
Linux KAIO (Kernel Async I/O) layer allows you to read and write files in an async (non-blocking) way, just like you read or write non-blocking network sockets. It is similar to async I/O defined by Open Group:
It is a quite new topic, because until now, you were able to perform async operations only on network sockets. Async I/O in terms of network sockets is nothing new. FreeBSD's kqueue, Linux's epoll are just a means of notification, that a given async socket has some data to read (or accepts data to be written), so you don't need to poll for those events (like traditional Unix's poll, which is slow -- see http://www.kegel.com/c10k.html ).
[UPDATE] twisted-linux-aio now works with epoll. I finally found out how to create fd notification for aio, so right now twisted-linux-aio supports it. It integrates well with epollreactor. I also added some code to implement Python queue in it, so the usage ATM looks like this:
It is still work in progress, though. Too early to say about efficiency, but it seems, that Twisted applications which do a lot of concurrent disk I/O will benefit. Get the new code via http://twisted-linux-aio.googlecode.com/ .