Pip: detecting the unexpected in distributed systems

  • Authors:
  • Patrick Reynolds;Charles Killian;Janet L. Wiener;Jeffrey C. Mogul;Mehul A. Shah;Amin Vahdat

  • Affiliations:
  • Duke University;University of California, San Diego;Hewlett-Packard Laboratories, Palo Alto;Hewlett-Packard Laboratories, Palo Alto;Hewlett-Packard Laboratories, Palo Alto;University of California, San Diego

  • Venue:
  • NSDI'06 Proceedings of the 3rd conference on Networked Systems Design & Implementation - Volume 3
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

Bugs in distributed systems are often hard to find. Many bugs reflect discrepancies between a system's behavior and the programmer's assumptions about that behavior. We present Pip, an infrastructure for comparing actual behavior and expected behavior to expose structural errors and performance problems in distributed systems. Pip allows programmers to express, in a declarative language, expectations about the system's communications structure, timing, and resource consumption. Pip includes system instrumentation and annotation tools to log actual system behavior, and visualization and query tools for exploring expected and unexpected behavior. Pip allows a developer to quickly understand and debug both familiar and unfamiliar systems. We applied Pip to several applications, including FAB, SplitStream, Bullet, and RanSub. We generated most of the instrumentation for all four applications automatically. We found the needed expectations easy to write, starting in each case with automatically generated expectations. Pip found unexpected behavior in each application, and helped to isolate the causes of poor performance and incorrect behavior.