Umbra: An Efficient and Scalable Memory Shadowing Framework

Umbra is an efficient and scalable memory shadowing framework built on top of DynamoRIO, a dynamic instrumentation tool platform. Umbra employs a novel translation scheme, which supports efficient mapping from application data to shadow metadata for 64-bit applications. Umbra' translation scheme does not rely on any platform features and is not restricted to any specific shadow memory size.


Dynamic Cache Contention Detection in Multi-threaded Applications. [pdf] [bibtex]
Qin Zhao, David Koh, Syed Raza, Derek Bruening, Weng-Fai Wong, and Saman Amarasinghe.
The International Conference on Virtual Execution Environments (VEE-11), March 2011.
Efficient Memory Shadowing for 64-bit Architectures. [pdf] [bibtex] [slides]
Qin Zhao, Derek Bruening, and Saman Amarasinghe.
International Symposium on Memory Management (ISMM-10), June 2010.
Umbra: Efficient and Scalable Memory Shadowing. [pdf] [bibtex] [slides]
Qin Zhao, Derek Bruening, and Saman Amarasinghe.
International Symposium on Code Generation and Optimization (CGO-10), April 2010.

Source Code

The source code can be downloaded here You also need use DynamoRIO 2.2 or earlier to build and run program with Umbra. client-ccd.c client-tcd, and client-fsd are clients for cache contention detection, thread correlation detection and false sharing detection discussed in my paper. The running result is dumpped into umbra...log. The code in test/test-fsd.c is an example of false sharing test. Anout-of-date tutorial might be useful.
I have left MIT and now work on a similar shadow memory tool Dr.Memory.


If you have any comment, questions, suggestions, or want to contribute to Umbra, please feel free to contact us at:
qin_zhao at csail dot mit dot edu