File:  [NetBSD Developer Wiki] / wikisrc / projects / project / aio.mdwn
Revision 1.4: download - view: text, annotated - select for diffs
Mon Feb 22 21:22:02 2016 UTC (3 years, 8 months ago) by riastradh
Branches: MAIN
CVS tags: HEAD
Switch aio project to kernel category so it gets listed for GSoC.

[[!template id=project

title="Real asynchronous I/O"

contact="""
[tech-kern](mailto:tech-kern@NetBSD.org)
"""

mentors="""
[Taylor R Campbell](mailto:riastradh@NetBSD.org)
"""

category="kernel"
difficulty="hard"
duration="2-3 months"

description="""
The current asynchronous I/O (aio) implementation works by forking a
background thread inside the kernel to do the I/O synchronously.
This is a starting point, but one thread limits the amount of potential
parallelism, and adding more threads falls down badly when applications
want to have large numbers of requests outstanding at once.

Furthermore, the existing code doesn't even work in some cases; this
is not well documented but there have been scattered reports of
problems that nobody had time to look into in detail.

In order to make asynchronous I/O work well, the I/O path needs to be
revised, particularly in the kernel's file system interface, so that
all I/O operations are asynchronous requests by default.
It is easy for high-level code to wait synchronously for lower-level
asynchronous requests to complete; it is much more problematic for an
asynchronous request to call into code that expects to be synchronous.

The [[flow control|tcp-writing]] project, which also requires
substantial revisions to the I/O path, naturally combines with this
project.
"""
]]

[[!tag gsoc]]

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb