Many programs are under-optimized for the hardware on which they run. To support our research, we proposed Padrone, a 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. Profiling overhead is minimal.
Padrone interacts with the target process through Linux features, such as the ptrace system call, the /proc virtual filesystem. It also takes advantage of the hardware performance monitoring unit. Padrone executes in a different address space from the target process. This implies minimal impact on the target process, and favors transparency. In many scenarios, in the interest of performance, we also execute most of the target code in-place, and only send optimized code in the code cache. This is in contrast with existing solutions such as Pin or DynamoRIO.
We believe Padrone fits an empty design point in the ecosystem of dynamic binary tools.