This paper explores file system support for applications which can take advantage of the performance/persistence tradeoff. Such a file system is especially useful for local caching of data, where permanent storage of the data is available elsewhere. A caching web proxy is the prime example of an application that may benefit from this file system.
We implemented Hummingbird, a light-weight file system that is designed to support caching web proxies. Hummingbird has two distinguishing features: it stores its meta-data in memory, and it stores groups of related objects (e.g., HTML page and its embedded images) together on the disk. By setting the tunable parameters to achieve persistence, Hummingbird can also be used to improve the performance of web servers, which have similar reference locality as proxies. Our results are very promising; Hummingbird's throughput is 2.3-4.0 times larger than a simulated version of Squid running UFS mounted asynchronously on FreeBSD, 5.4-9.4 times larger than a simulated version of Squid running UFS mounted synchronously on FreeBSD, 5.6-8.4 times larger than a simulated version of Squid running UFS with soft updates on FreeBSD, and 5.4-13 times larger than XFS and EFS on IRIX. The Web Polygraph environment confirmed these improvements for the response times for proxy hits.
Additional information about Hummingbird is available at https://www.bell-labs.com/pro- ject/hummingbird/.