Continuous Improvement of Deployed Software Systems

Abstract : We completed development of an adaptive binary instrumentor. We devised a taxonomy of adaptive instrumentation strategies, and a collection of several search heuristics within that taxonomy. Averaged across many applications, our best heuristic finds the top-ranked predictor while exploring only 40% of the program: a significant improvement over the 100% exploration required by prior approaches. Reducing instrumentation overhead has been a key goal of this research. The new instrumentor imposes just 1% overhead on a variety of medium-sized benchmarks, as contrasted with 87% overhead for sampling-based instrumentation and 300% overhead for complete binary instrumentation. No prior related work has even come within an order of magnitude of this 1% overhead mark. We introduced a novel, non-intrusive and highly scalable mechanism for debugging high-performance computing (HPC) applications that identifies and refines task equivalence sets, then captures the relative logical progress of each task as a partial order.