In this paper, the performance of an implementation of the direct access file system (DAFS), a lightweight, high-performance file access protocol, is compared to the performance of NFS-nocopy, an implementation of network file system (NFS) optimized to avoid data copies in the kernel.
The first four sections of the paper describe DAFS and NFS-nocopy. DAFS uses two main techniques: data transfers are performed by the application (the kernel is bypassed), and data are transferred from the network interface card directly to the application buffer (there is no data copying on the data path). DAFS relies on remote direct memory access (DMA) and user-level networking to implement these two techniques. NFS-nocopy avoids data copying using two different techniques: header splitting and page flipping.
The remainder of the paper evaluates and explains the performance of DAFS and NFS-nocopy on latency-sensitive and bandwidth-sensitive workloads. For a random data access workload, DAFS outperforms NFS-nocopy for both latency-sensitive and bandwidth-sensitive applications. However, for a database application, DAFS outperforms NFS-nocopy only if data caching and pre-fetching are used in the DAFS client for latency-sensitive and bandwidth-sensitive applications, respectively. In contrast, NFS implements both caching and pre-fetching in the kernel.
The paper provides a good description of the architectural advantages and limitations of DAFS, as compared to NFS-nocopy. The value of the paper would have increased if the authors had provided guidelines for the code that needs to be incorporated in DAFS clients to support the two performance-boosting techniques: caching and pre-fetching.