Block
Asynchronous I/O - A flexible infrastructure for
user-level
filesystems
Muthian
Sivathanu (muthian@cs.wisc.edu)
Venkateshwaran
V (veeve@cs.wisc.edu)
Abstract
Block
Asynchronous I/O (BAIO) is a mechanism that strives to eliminate the kernel
abstraction of a filesystem. In-kernel
filesystems try to serve all applications with a uniform generic set of
policies, and consequently end up achieving sub-optimal performance on a
majority of applications. Application
level knowledge of the peculiarities of the data that is managed on disk is
totally ignored by a kernel filesystem, with the result that optimizations that
could exploit specific characteristics of applications cannot be done in a
generic filesystem. BAIO,
presented in this paper, tries to solve this by exporting the filesystem
component of the kernel to the application level, thereby facilitating
construction of customized user-level filesystems.
The role of the kernel is restricted to regulating access to disk by
multiple processes, keeping track
of ownership information and enforcing protection boundaries. All other policies, including physical layout of data on
disk, caching and prefetching of data, are totally implemented at the
application level, in a way that best fits the specific requirements of the
application.
Tarball of our source can be found here