The Linux kernel utilizes caches to speed up accesses to the
high-usage objects that are normally stored on disks, such as data cache pages
for files, inodes, and directory entries. These cache data types are
implemented using separate chaining. In our experience, we found that some of
the hash functions used in th circa 2000 Linux kernel can results, for certain
access patterns, in very skewed data distributions over the chains. Better
hash functions are desirable. In this paper, we analyze the data distribution
and run-time efficiencies of a set of hash function for Linux inode and
directory caches. Our analysis utilizes data traces from both an industry
standard benchmark and two real world computing environments. Although some of
the results were anticipated by Lever, who has carried out a similar study, we
show that his results can be further improved.
Pre-2018 CSE ID: CS2001-0680