Detecting Change in Program Behavior for Adaptive Optimization

Nitzan Peleg1 and Bilha Mendelson2
1IBM Reseach at Haifa, 2IBM Research at Haifa


Feedback information has proven itself useful in guiding optimizations in compilers and post-link optimizers. Program performance behavior might change over time which could invalidate the feedback information. To detect changes in the program behavior low overhead monitoring should be used. Performance metrics such as CPI are commonly used to verify that a program behavior is stable. On a loaded SMT system where other threads are simultaneously activated on the same CPU the CPI shows large variability. In this paper, 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 on a loaded POWER5 SMT system. In addition, we introduce a novel transformation to the program behavior representation that makes it insensitive to code optimizations and enables the comparison of the program behavior collected in different optimization cycles. We believe that such an approach opens new opportunities and enables adaptive optimizations on modern SMT architectures