Automatic Prefetching with Binary Code Rewriting in Object-Based DSMs
Résumé
Dynamic optimizers modify the binary code of programs at runtime by profiling and optimizing certain aspects of the execution. We present a completely software-based framework that dynamically optimizes programs for object-based Distributed Shared Memory (DSM) systems. In DSM systems, reducing the number of messages between nodes is crucial. Prefetching transfers data in advance from the storage node to the local node so that communication is minimized. Our framework uses a profiler and a dynamic binary rewriter that monitors the access behavior of the application and places prefetches where they are beneficial to speed up the application. In addition, we adapt the number of prefetches per request to best fit the application's behavior. Evaluation shows that the performance of our system is better than manual prefetching. The number of messages sent decreases by up to 89%. Performance gains of up to 73% can be observed on the benchmarks.