The accuracy of trace-driven simulations of multiprocessors
SIGMETRICS '93 Proceedings of the 1993 ACM SIGMETRICS conference on Measurement and modeling of computer systems
ATOM: a system for building customized program analysis tools
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
A framework for reducing the cost of instrumented code
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
An efficient profile-analysis framework for data-layout optimizations
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dynamic hot data stream prefetching for general-purpose programs
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
SIGMA: a simulator infrastructure to guide memory analysis
Proceedings of the 2002 ACM/IEEE conference on Supercomputing
A framework for performance modeling and prediction
Proceedings of the 2002 ACM/IEEE conference on Supercomputing
Pin: building customized program analysis tools with dynamic instrumentation
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
An API for Runtime Code Patching
International Journal of High Performance Computing Applications
Hi-index | 0.00 |
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.