Time-aware instrumentation aims to give the developer control over the overhead introduced by software-based instrumentation methods.
Tracing a program usually means extracting information from the program while it runs. Depending on the method, this extraction process generally causes perturbation in the application. The perturbation originates from the instrumentation process. Usually, the more tracing code the program executes during the run, the more the slow down and perturbation. The reason is that, in general, the addition of more tracing code increases the number of instructions the processor executes thus leading to a longer execution time.
This line of research investigates how to develop a static instrumentation framework that gives the developer unprecedented control over what to instrument and what extra-functional properties to preserve. It is the first fully implemented framework that can consider properties such as timing, binary size, and debugging channel bandwidth.
Recently, we also investigated extending dynamic instrumentation with Pin to support time-aware instrumentation. We proposed DIME, a time-aware dynamic binary instrumentation technique that adds an adjustable bound on the timing overhead to the program under analysis.
Instrumenting Video Players
The video shows one of the case studies. The goal is extracting VLC’s call context tree while VLC plays a high definition, 29.97 fps, 720x480, 1Mbps bitrate video. The video has 599 blocks that VLC decodes for viewing frames. VLC, running on top of native Pin, decodes only 75 blocks which translates into an unwatchable video and errors messages for dropping frames. Whereas, DIME permits extracting the call context tree while maintaining a continuous video playback.
The following video shows a second case study, in this case using MPlayer.
Instrumenting Automotive Software
This video shows a case study using automotive software.