STABILIZER: Enforcing Predictable and Analyzable Performance
Modern architectures have made program behavior brittle and unpredictable, making software performance highly dependent on its execution environment. Even apparently innocuous changes, such as changing the size of an unused environment variable, can - by altering memory layout and alignment - degrade performance by 33% to 300%. This unpredictability makes it difficult for programmers to debug or understand application performance. It also greatly complicates the evaluation of performance optimizations, since slight changes in the execution environment can have a greater impact on performance than a typical optimization. The authors present STABILIZER, a compiler and runtime system that enforces reliable performance. By comprehensively randomizing the placement of functions, stack frames, and heap objects in memory, STABILIZER provides predictable performance with high probability.