X-Mem is a flexible software tool for characterizing modern memory hierarchies in a variety of ways. The tool was developed jointly by Microsoft and the UCLA NanoCAD Lab to address emerging challenges particular to cloud computing. X-Mem was originally authored by Mark Gottscho as a Summer 2014 Ph.D. intern at Microsoft Research. To benefit the research and development community, we have open-sourced the code under the MIT License.

The project is under active development - stay tuned for more updates!

News

April 29, 2016

  • Version 2.4.2 of X-Mem is released. It now includes built-in support for using Docker, the hot new Linux container technology. This makes it easier to immediately get started running X-Mem on your Linux machine (or virtual machine) without requiring any installation pre-requisites except the Docker Engine. We have two Docker repositories already online: one for running X-Mem that is pre-compiled, and one for building X-Mem from scratch if you want to make source code changes. For more information, see the X-Mem README.md file at the top of the source tree. See the X-Mem Docker repositories here.

    Apr. 25, 2016

  • We are back from Uppsala! X-Mem received lots of positive feedback from attendees; thank you! The most popular feature requests were explicit controls for memory-level parallelism (MLP) in benchmark kernels, and making an architecture simulator-friendly version that is stripped down and lightweight. We will look into these features and see how they might be added. If you wish to contribute, now is the time!
  • We also plan to add support for containerized X-Mem in the near future to make benchmarking Linux systems much easier. We'll be on the Docker bandwagon!
  • The raw data presented in the case studies from our ISPASS paper should be released soon. We received a lot of interest in the insights that the X-Mem tool has enabled and can enable in the future.

    Apr. 7, 2016

  • Version 2.4.1 of X-Mem is released. It includes preliminary support for Intel Xeon Phi many-core processors! Also, hope to see you in two weeks at ISPASS for our paper presentation.

    Feb. 7, 2016

  • The pre-print of our ISPASS 2016 paper is now available! Download it here.

    Jan. 26, 2016

  • Great news! Our research paper on X-Mem, titled X-Mem: A Cross-Platform and Extensible Memory Characterization Tool for the Cloud is accepted and will be presented at the IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS) in Uppsala, Sweden during April 2016. We will publicly release a pre-print of our article soon. See you at the conference!
  • Accompanying the release of our research paper at ISPASS, we plan to provide some data, tutorials, and other helpful documentation for X-Mem. Stay tuned for more updates.
  • Xeon Phi support on Linux is alpha-tested and coming soon. It will be released but without validation. We will appreciate anyone that can give it a whirl!

    Binary Releases

    The master branch of the below forked repositories do not include any pre-compiled binaries or PDF documentation. Instead, these can be downloaded here if you do not wish to compile from source. All release packages include binaries for Windows and GNU/Linux as well as a README and Doxygen-generated PDF manual.

    v2.4.2 (April 29, 2016)

    Download binaries as .zip or as .tar.gz.

    Previous Releases

  • v2.4.1 [ zip | tarball ] <<< April 7, 2016

  • v2.3.1 [ zip | tarball ] <<< August 3, 2015

  • v2.3.0 [ zip | tarball ] <<< July 2, 2015

  • v2.2.7 [ zip | tarball ] <<< June 30, 2015

  • v2.2.6 [ zip | tarball ] <<< June 29, 2015

    Repositories

    Microsoft hosts the main repository on GitHub at https://github.com/Microsoft/X-Mem.git. A mirror is maintained by the UCLA NanoCAD Lab on GitHub at https://github.com/nanocad-lab/X-Mem.git. NanoCAD also hosts this project page.

    Docker

    We now support containerized X-Mem using Docker since version 2.4.2!

  • Click here for the runtime X-Mem repository on Docker Hub.
  • Click here for the compile-time X-Mem repository on Docker Hub.