Memorizer
Lossless Instruction-to-Object Memory Tracing in the Linux Kernel
Abstract
The lack of visibility into Linux’s behavior makes it hard to refactor and maintain. To peer inside the box, we present Memorizer, a self-contained, low-level tracing framework that tracks (most) object allocations, data accesses, and function calls within the kernel. The core insight is a low-level object-centric representation that records detailed lifetime information while linking each operation (call/read/write) with its intended target. We evaluate Memorizer using extensive input programs and demonstrate its value by showing how Memorizer can...
- Aid in refactoring
- Extend code coverage with object coverage to improve testing and analysis
- Identify leaky abstractions
We also release a large data set, visualization tools, and Memorizer’s source. This generic, object-centric approach is the first to provide lossless instruction-to-object tracing, adding an essential software engineering capability to the overly complex Linux kernel.
Use Memorizer
Learn more about working with Memorizer's source code at: Gitlab Repository
Explore Memorizer Data
A link to Memorizer's data exploration dashboard: Memorizer visualization dashboard
Download Phoronix and LTP benchmarking data: Memorizer data
Learn more
Read Memorizer here: Full Paper
Systor 2021 presentation: Video
Systor 2021 Presentation slide: Slide