Hare is a new file system that provides a POSIX-like interface
on multicore processors without cache coherence. Hare
allows applications on different cores to share files, directories,
and file descriptors. The challenge in designing Hare
is to support the shared abstractions faithfully enough to run
applications that run on traditional shared-memory operating
systems, with few modifications, and to do so while scaling
with an increasing number of cores.
To achieve this goal, Hare must support features (such as
shared file descriptors) that traditional network file systems
don’t support, as well as implement them in a way that scales
(e.g., shard a directory across servers to allow concurrent
operations in that directory). Hare achieves this goal through
a combination of new protocols (including a 3-phase commit
protocol to implement directory operations correctly and
scalably) and leveraging properties of non-cache-coherent
multiprocessors (e.g., atomic low-latency message delivery
and shared DRAM).
An evaluation on a 40-core machine demonstrates that
Hare can run many challenging Linux applications (including
a mail server and a Linux kernel build) with minimal or
no modifications. The results also show these applications
achieve good scalability on Hare, and that Hare’s techniques
are important to achieving scalability