For more information about item submission and attendance, see About the Technical Calendar.
Tuesday, October 15
Framework for Evaluating Dynamic Memory Allocators,
Tomislav Janjusic, Computer Science Research Group, ORNL
Including a New Equivalence-Class-Based Cache-Conscious Dynamic Memory Allocator
Computer Science and Mathematics Division Seminar
10:00 AM — 11:00 AM, Research Office Building (5700), Room L-204
Contact: Cindy Sonewald (email@example.com), 865.574.3125
AbstractSoftware applications' performance is hindered by a variety of factors, but most notably by the well-known CPU-Memory speed gap (often known as the memory wall). This results in the CPU sitting idle waiting for data to be brought from memory to processor caches. The addressing used by caches cause non-uniform accesses to various cache sets. The non-uniformity is due to several reasons; including how different objects are accessed by the code and how the data objects are located in memory. Memory allocators determine where dynamically created objects are placed, thus defining addresses and their mapping to cache locations. It is important to evaluate how different allocators behave with respect to the localities of the created objects. Most allocators use a single attribute, the size, of an object in making allocation decisions. Additional attributes such as the placement with respect to other objects, or specific cache area may lead to better use of cache memories. This talk discusses a framework that allows for the development and evaluation of new memory allocation techniques. At the root of the framework is a memory tracing tool called Gleipnir, which provides very detailed information about every memory access, and relates it back to source level objects. Using the traces from Gleipnir, we extended a commonly used cache simulator for generating detailed cache statistics: per function, per data object, per cache line, and identify specific data objects that are conflicting with each other. The utility of the framework is demonstrated with a new memory allocator known as an equivalence class allocator. The new allocator allows users to specify cache sets, in addition to object size, where the objects should be placed. We compare this new allocator with two well-known allocators, viz., Doug\_Lea and Pool allocators.