Mechanisms for
Small File I/O
Our file system research has
focused mainly upon two crucial aspects of small file I/O performance:
metadata integrity maintenance and on-disk data placement.
- Structural changes, such
as file creation and block allocation, have consistently been identified
as a source of problems (performance, integrity, security and availability)
for file systems. To address this, we developed soft updates,
an implementation mechanism that allows a file system to safely use
delayed writes for metadata updates. With soft updates, a disk-based
file system can achieve memory-based file system performance while providing
stronger integrity and security guarantees than most disk-based file
systems. For metadata update intensive workloads, this improves performance
by more than a factor of two when compared to the conventional synchronous
write approach. In addition, soft updates can be used to achieve nearly
instantaneous file system recovery by relegating crash-recovery assistance
(e.g., the fsck utility) to an optional and/or background role.
- Small file performance
in most file systems is limited by slowly improving disk access times,
even though current file systems improve on-disk locality by allocating
related data objects in the same general region. The key insight for
why current file systems perform poorly is that nearness is
insufficient - exploiting disk bandwidth for small data objects requires
that they be placed adjacently. We designed C-FFS (Co-locating
Fast File System), which introduces two techniques, embedded inodes
and explicit grouping, to exploit what disks do well (bulk
data movement) in order to avoid what they do poorly (reposition to
new locations). Measurements of our first prototype C-FFS implementation
show that these techniques have the potential to increase small file
throughput (for both reads and writes) by a factor of 5-7 compared to
the same file system without these techniques.
Status
Soft Updates was introduced
and compared to other mechanisms for maintaining metadata integrity in
a 1994 OSDI paper. Late in the summer of
1995, we released a technical report
that includes low-level details and non-proprietary portions of our
prototype implementation of soft updates.
Kirk McKusick has developed and is fine-tuning a production quality
version of soft updates for BSD FFS. In July 1999, Kirk and I described
this BSD soft updates implementation in a
FREENIX track USENIX paper (also available in
postscript). Together with researchers at Harvard University, we are
now conducting comprehensive comparisons of soft updates with write-ahead
logging.
C-FFS was introduced in a
1997 USENIX paper. Our first prototype,
described in that paper, became the default file system for the exokernel
operating system described in our 1997
SOSP paper. Costa Sapuntzakis
is implementing a new version of C-FFS for OpenBSD, and we are exploring
new grouping/allocation algorithms.
|