PADRONE: a Platform for Online Profiling, Analysis, and Optimization

PADRONE is new platform for dynamic binary analysis and optimization. It provides an API to help clients design and develop analysis and optimization tools for binary executables. PADRONE attaches to running applications, only needing the executable binary in memory. No source code or debug information is needed. No application restart is needed either. This is specially interesting for legacy or commercial applications, but also in the context of cloud deployment, where actual hardware is unknown, and other applications competing for hardware resources can vary. We describe the infrastructure of PADRONE, and show that its profiling overhead is minimal. We illustrate its use through two examples. In the first one, we show how we measure the performance of the hotpot of benchmark. In the second one, we replace the hotspot of a function by an optimized version, while the program runs. We believe PADRONE fits an empty design point in the ecosystem of dynamic binary tools.

[1]  Derek Bruening,et al.  Efficient, transparent, and comprehensive runtime code manipulation , 2004 .

[2]  Wei-Chung Hsu,et al.  Continuous Adaptive Object-Code Re-optimization Framework , 2004, Asia-Pacific Computer Systems Architecture Conference.

[3]  Harish Patil,et al.  Pin: building customized program analysis tools with dynamic instrumentation , 2005, PLDI '05.

[4]  Fabrice Bellard,et al.  QEMU, a Fast and Portable Dynamic Translator , 2005, USENIX Annual Technical Conference, FREENIX Track.

[5]  Nicholas Nethercote,et al.  Valgrind: a framework for heavyweight dynamic binary instrumentation , 2007, PLDI '07.

[6]  Scott A. Mahlke,et al.  Liquid SIMD: Abstracting SIMD Hardware using Lightweight Dynamic Mapping , 2007, 2007 IEEE 13th International Symposium on High Performance Computer Architecture.

[7]  Michael Franz,et al.  Dynamic Parallelization and Vectorization of Binary Executables on Hierarchical Platforms , 2008, J. Instr. Level Parallelism.

[8]  Ahmed El-Mahdy,et al.  Automatic Vectorization Using Dynamic Compilation and Tree Pattern Matching Technique in Jikes RVM , 2009 .

[9]  Xiao-Feng Li,et al.  Vectorization for Java , 2010, NPC.

[10]  Albert Cohen,et al.  Vapor SIMD: Auto-vectorize once, run everywhere , 2011, International Symposium on Code Generation and Optimization (CGO 2011).

[11]  Simha Sethumadhavan,et al.  Rapid identification of architectural bottlenecks via precise event counting , 2011, 2011 38th Annual International Symposium on Computer Architecture (ISCA).

[12]  Vasanth Bala,et al.  Dynamo: a transparent dynamic optimization system , 2000, SIGP.

[13]  Erven Rohou,et al.  Tiptop: Hardware Performance Counters for the Masses , 2012, 2012 41st International Conference on Parallel Processing Workshops.