Improving Server Applications with System Transactions

Sangman Kim, Michael Z. Lee, Alan M. Dunn, Owen Hofmann, Xuan Wang, Emmett Witchel, and Donald E. Porter

Proceedings of the ACM European Conference on Computer Systems (EuroSys) 2012.

View PDF or BibTeX.

Distributed Systems, Operating Systems

Server applications must process requests as quickly as possible. Because some requests depend on earlier requests, there is often a tension between increasing throughput and maintaining the proper semantics for dependent requests. Operating system transactions make it easier to write reliable, high-throughput server applications because they allow the application to execute non-interfering requests in parallel, even if the requests operate on OS state, such as file data. By changing less than 200 lines of application code, we improve performance of a replicated Byzantine Fault Tolerant (BFT) system by up to 88% using server-side speculation, and we improve concurrent performance up to 80% for an IMAP email server by changing only 40 lines. Achieving these results requires substantial enhancements to system transactions, including the ability to pause and resume transactions, and an API to commit transactions in a pre-defined order.