This project is investigating how generic support for speculative execution in a commodity operating system can improve the performance and consistency of remote data access. Rather than block applications during a remote file system operation, the operating system checkpoints the state of the calling process, predicts the result of the remote operation, and speculatively resumes execution based upon the predicted results. If the speculation proves correct, the checkpoint is discarded; if the speculation is incorrect, the calling process is restored to the checkpoint and the operation retried. The operating system guarantees safe execution by preventing speculative processes from externalizing output until the speculations upon which that output depends have proven correct. By tracking causal dependencies created through inter-process communication, the operating system allows multiple processes to safely share speculative state. In addition to file systems, this project is exploring uses of speculation in diverse areas, including cyber-foraging, remote desktops, and software installation.
The major impact of this project lies in improving the performance, consistency guarantees, and safety of current distributed file systems. The project is developing speculative versions of NFS, AFS and other distributed file systems that perform substantially better than current versions of these file systems. At the same time, these versions provide stronger consistency and safety guarantees to applications. The software artifacts developed as part of this project, including a modifed version of Linux that supports speculation, are being released to the open-source community. Additionally, educational initiatives are helping train the next generation of systems software developers.