초록
본 논문에서는 인터럽트의 기록과 재현을 통해 소프트웨어의 실행을 동일하게 재현하는 리코드-리플레이(record-replay) 기법을 제안한다. 전통적인 리코드-리플레이 방법에서는 경합(race) 현상을 대표적인 비결정적 요인으로 간주하여 임계영역으로의 진입/진출, 공유 메모리 접근, 메시지 교환 등을 기록하고 동일한 순서(order)로 재현하는 방법을 다루어 왔다. 하지만, 인터럽트 역시 프로그램의 실행에 영향을 끼칠 수 있는 중요한 비결정적 요인이며, 게다가 인터럽트의 경우 발생 순서는 물론 정확한 발생 시점을 재현하는 것이 필요하다. 이에 본 논문에서는 프로세서 하드웨어가 제공하는 성능 카운터와 디버깅 기능을 이용하여 인터럽트의 발생 시점을 정확하게 기록하고 재현하는 방법을 제안한다.
In this paper, we present a record-replay technique based on interrupt logging and reproduction. Race conditions have been considered as the main source of nondeterminism in conventional record-replay approaches. However, interrupts are another source of nondeterministic computer system behavior, which must be reproduced at accurate time points, let alone the order of interrupt occurrence. We show that an interrupt-based replayer can be efficiently and effectively implemented by using hardware performance counters and debugging functionality. Experiments also show that the runtime overhead of the interrupt-based replayer is sufficiently low.