Efficient User-Level File Cache Management on the
Sun Vnode Interface
David C. Steere, James J. Kistler, M. Satyanarayanan
In developing a distributed file system, there are several good reasons
for implementing the client file cache manager as a user-level process.
These include ease of implementation, increased portability, and minimal
impact on kernel size. For reasons of compatibility it is also desirable
to use a standard file intercept mechanism on the client. The Sun VFS/Vnode
file system interface is such a standard. However, this interface is designed
for kernel-based file systems, and a user-level cache manager that used
the Vnode mechanism would pay a large performance penalty due to the high
number of kernel to cache manager context switches per file system call.
This paper describes our solution to the problem for the Coda
file system. By using a relatively small amount of kernel code to cache
critical information, we are able to retain the much larger and more complex
components of the Coda cache manager in a user level process. The measurements
of Coda presented here confirm the performance benefits of this strategy,
and indicate the relative merits of caching different kinds of information
in the kernel.