Instruction punning: Lightweight instrumentation for x86-64
Paper i proceeding, 2017

Existing techniques for injecting probes into running code are limited: they either fail to support probing arbitrary locations, or to support scalable, rapid toggling of probes. We introduce a new technique on x86-64, called instruction punning, which allows scalable probes at any instruction. The key idea is that when we inject a jump instruction, the relative address of the jump serves simultaneously as data and as an instruction sequence. We show that this approach achieves probe invocation overheads of only a few dozen cycles, as well as low probe activation/deactivation costs, even when all threads in the system are both invoking probes and toggling them. Unlike competing systems, the latent overhead when probes are deactivated is exactly zero.

Application profiling

Dynamic instrumentation

Författare

B. Chamith

Indiana University

Joel Bo Svensson

Programvaruteknik

L. Dalessandro

Indiana University

R. Newton

Indiana University

SIGPLAN Notices (ACM Special Interest Group on Programming Languages)

0362-1340 (ISSN)

Vol. 52 6 320-332

Ämneskategorier

Programvaruteknik

DOI

10.1145/3062341.3062344

ISBN

978-1-4503-4988-8

Mer information

Skapat

2017-10-07