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

ACM SIGPLAN Notices

1523-2867 (ISSN)

Vol. 52 6 320-332

38th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2017
Barcelona, Spain,

Ämneskategorier

Programvaruteknik

DOI

10.1145/3062341.3062344

Mer information

Senast uppdaterat

2021-07-04