Detecting change in program behavior for adaptive optimization
Abstract
Feedback information has proven useful in guiding optimizations in compilers and post-link optimizers. Program performance behavior can change over time and may invalidate the feedback information. Low overhead monitoring can be used to detect such changes, using performance metrics such as CPI. On a loaded SMT system, where other threads are simultaneously activated on the same CPU, the CPI shows large variability. We introduce an efficient monitoring method that is insensitive to other activities in the system and can be safely used to collect program behavior on a loaded SMT system. The overhead of this method is 0.58% with SPECint2000. We also introduce a novel transformation to the program behavior representation, which makes it insensitive to code optimizations and enables a comparison of the program behavior collected in different optimization cycles. This approach opens new opportunities and enables adaptive optimizations on modern SMT architectures. © 2007 IEEE.