Mosbench
Mosbench
Silas Boyd-Wickizer, Austin T. Clements, Yandong Mao, Aleksey Pesterev, M. Frans Kaashoek, Robert Morris, Nickolai Zeldovich

Mosbench is a set of application benchmarks designed to measure scalability of operating systems. It consists of applications that previous work has shown not to scale well on Linux and applications that are designed for parallel execution and are kernel intensive. The applications and workloads are chosen to stress important parts of many kernel components.

Mosbench includes Exim, a mail server; Memcached, an object cache; Apache, a web server; PostgreSQL, a SQL database; gmake, a parallel build system; psearchy, a parallel text indexer; and Metis, a multicore MapReduce library.

Publications

An Analysis of Linux Scalability to Many Cores Abstract  BibTeX  PDF
Silas Boyd-Wickizer, Austin T. Clements, Yandong Mao, Aleksey Pesterev, M. Frans Kaashoek, Robert Morris, and Nickolai Zeldovich. In the Proceedings of the 9th USENIX Symposium on Operating Systems Design and Implementation (OSDI '10), Vancouver, Canada, October 2010.

Scalable Address Spaces Using RCU Balanced Trees Abstract  BibTeX  PDF
Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich. In the Proceedings of the 17th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), London, UK, March 2012.

Improving network connection locality on multicore systems Abstract  BibTeX  PDF
Aleksey Pesterev, Jacob Strauss, Nickolai Zeldovich, and Robert T. Morris. In the Proceedings of the ACM EuroSys Conference, Bern, Switzerland, April 2012.

Non-scalable locks are dangerous Abstract  BibTeX  PDF
Silas Boyd-Wickizer, M. Frans Kaashoek, Robert Morris, and Nickolai Zeldovich. In the Proceedings of the Linux Symposium, Ottawa, Canada, July 2012.

Software

$ git clone https://pdos.csail.mit.edu/mosbench/mosbench.git
The MOSBENCH driver and application suite. See the top-level README for details on how to run the benchmark.
$ git clone git://g.csail.mit.edu/pk.git
The Patched Linux 2.6.35-rc5 Kernel. Our changes are divided among 18 branches. The 'pk' branch is a merge of those branches. The .config we use is also available.

This repository contains Linux 2.6.37 modified for scalable address spaces. The 'rcuvm-fault-lock', 'rcuvm-hybrid', and 'rcuvm-pure' branches correspond to the three refinements in the paper.

This repository contains MCS lock implementations for Linux 2.6.39. The 'mcs-anonvma', 'mcs-as', and 'mcs-dentry' branches correspond to the experiments in the paper.

NOTE: The latest Linux kernels (2.6.38-rc5 and newer) include many VFS scalability improvements that our patches aim to provide. We recommend trying those kernels if you're interested in a scalable VFS.

$ git clone https://pdos.csail.mit.edu/mosbench/ixgbe.git
The patched IXGBE 2.0.84.9 driver. Our changes are divided among multiple branches. The 'unified' branch is a merge of those branches.
$ git clone https://pdos.csail.mit.edu/mosbench/rcuvm.git
Supplementary Scalable Address Spaces files: Kernel and MOSBENCH configurations, build scripts, benchmark drivers, and microbenchmarks. Also includes a copy of the Bonsai source.
$ git clone https://pdos.csail.mit.edu/mosbench/parsec.git
The Parsec 2.1 benchmark suite with modifications for Scalable Address Spaces on the 'rcuvm' branch.
$ git clone git://g.csail.mit.edu/lock-bench.git
Benchmarks to stress various spin locks in the Linux kernel.