Linux异步IO支持:
http://www.bullopensource.org/posix/
POSIX Asynchronous I/O for Linux
|
| POSIX Asynchronous I/O for Linux (PAIOL) is an attempt to write a POSIX AIO compliant API based on Linux kernel 2.6 native AIO API. This library can work without patching the kernel. Kernel patches are only needed if you want to use POSIX AIO features not available from user-space or to improve performance. | |
|
|
Latest News
| Wed, 21 Feb 2007: Release 0.8.2
- A lot of fixes both in the library code and the testcases
- Support for listio syscall
- Library is now MT safe
- Kernel patches ported to 2.6.20
| Mon, 20 Mar 2006: Release 0.8
- Fixed x86_64 implementation.
- Fixed testcases use of volatile variables
| Mon, 7 Nov 2005: Release 0.7
- Merged
IO_CMD_EVENT and IO_CMD_CHECKPOINT into IO_CMD_GROUP for listio support. - Fixed buf type from
unsigned char * to char * for gcc4 in check/aio_fsync.c. - Do not use the
aiocb->data to store a pointer to the aiocb . This field was used in update_events() in src/aio_event.c to retrieve the aiocb from the io_event . We can instead use event->obj . - Added missing comma in aio_syscall4 in src/syscall_x86.h.
- Added
--enable-debug option to configure for compiling the library with debug symbols. Changed configure.ac and src/Makefile.am - Changed __aio_thread_init() to take a
sigevent as arg instead of an aiocb . - Added new listio testcases in check.
- Added support patches for the 2.6.14 kernel including Ben LaHaise's additions for request completion notification.
- Updated support patches for the 2.6.10 and 2.6.12 kernels.
| Mon, 25 Jul 2005: Release 0.6
- Fixed compilation errors when none of the kernel patches are applied i.e. no support for AIO and LIO completion signal and no support for io_setup (0, ...).
- Bug fixes concerning buffered AIO support in aio_read and aio_write.
- Fixed the type of the buffer (from unsigned char * to char *) used for the AIO request in a few places in testbed for consistency. These were causing compile time errors under gcc 4.0.
- Bug fix in kernel patches. In sys_io_submit, the iocb address was passed to create_lio instead of whatever the user passed in the sigevent sigev_value.
- Removed automatic checking of kernel support for buffered AIO in configure.ac. The feature must be manually enabled or disabled. Default right now is disabled.
- Added mini testsuite so that doing a `make check` after building the library makes sure everything is in order before installing. Currently the aio_fsync and aio_cancel checks fail due to lack of support from the kernel.
- Added support patches for the 2.6.12 kernel.
- Releases (Library and kernel patches) are now available on Sourceforge.
| Older news available here. | |
Library - kernel patches
| Download on Sourceforge. | | |
POSIX Test Suite
| posixtestsuite-1.5.0-aio.patch | Udpdated AIO test suite in Open Posix Test Suite (patch now included in OPTS 1.5.1) | |
MySQL PAIO patch
| MySQL 4.1.12 patch | This patchset provides POSIX AIO support to the MysQL InnoDB engine. The first patch in the series adds generic POSIX AIO support to the InnoDB engine. The second patch adds detection of libposix-aio for use in place of librt. | |
QEMU PAIO patches
| QEMU libposix-aio patch | This patch allow to link qemu against libposix-aio instead of librt. It adds a parameter, "--enable-libposix-aio", to enable this feature. | QEMU IDE direct I/O patch | As memory provided to the IDE device is aligned, this patch uses it instead of internal IDE virtual device buffer. | |
Benchmark results
| Sysbench - oltp | |
Old resources
| Old library releases and kernel patches | |
Developper
| Sébastien Dugué | Laurent Vivier [GPG key] | |
Documentation
| README | POSIX AIO for linux data structure [DIA] | LIOEVENT patch description | ... | |
Links
| | Kernel Asynchronous I/O (AIO) Support for Linux | The Open Group Base Specifications :
| The Single UNIX Specification, Version 3 | POSIX Option Groups | Open POSIX Test Suite |
|