Abstract

Binary instrumentation tools are very useful for collecting traces of program events. Common uses for such traces include trace-driven simulation and performance modeling. However commonly available general-purpose instrumentation tools are inefficient for capturing fine-grained events as for example a sequence of dynamic memory addresses. We introduce ALITER, an asynchronous lightweight instrumentation tool for event recording which is extremely light in terms of tracing overhead as compared to commonly available binary instrumentation tools. The tool creates a buffer in the instrumented code space and inlines buffer maintenance instructions into the instrumented code. User supplied analysis routines are only invoked when the buffer is fairly full. This approach, i. e. having a user code space buffer managed under ALITER's control, ensures that most control transfers between user code and instrumentation code are eliminated. In addition, storing events to the buffer and checking buffer status are implemented very cheaply. Thus traditional sources of tracing overheads are greatly reduced. Overall we report less than a 2-fold slowdown to collect memory traces of the selected benchmarks; this contrasts with tens and even hundreds of fold slowdown using generally available instrumentation tools.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call