Paper Title |
Pip: Detecting the Unexpected in Distributed Systems |
Author(s) |
Patrick Reynolds, Charles Killian, Janet L. Wiener, |
Jeffrey C. Mogul‡, Mehul A. Shah‡, and Amin Vahdat† | |
Date | 2006 |
Novel Idea | Debug distributed systems by means of an expectation language in which users can express expectations for the semantics and resource utilization of both individual 'path instances' and aggregate system behavior. |
Main Result(s) |
They provide a number of tools to help the developer follow this process from start to finish. The first of these is an annotation library. Applications linked against it produce output whenever they send, receive, or process messages. These are then reconciled into path instances offline. This aspect of Pip may be useful when it is important that performance penalties never be incurred, but in a testing environment, a BorderPatrol-like approach seems much preferable, since it makes much stronger guarantees about the causal linkage in the path instances it generates. The next, and I would argue the heart of Pip's contribution, is an expectation language. This language enables programmers to express expectations about distributed systems in a natural way, hiding some parallelism and providing intuitive primitives, such as futures, for expressing expectations about parallelism that must be reasoned about. They also provide a GUI behavior explorer that displays Pip's findings. |
Impact | No time, no time! :( Though prolly this like, inspired BorderPatrol to some degree or something. |
Evidence | They use Pip on a number of available distributed systems, and find that it reveals a number of bugs, both performance-related and correctness-related. |
Prior Work | They mention a number of previous inference-based distributed debugging tools, and tacitly assert that Pip is the first non-inference-based such tool, which may well be the case. Their expectation-checking language is built in the tradition of a number of prior tools, but makes the novel contributions of supporting expectations about complex causality in path instances. |
Reproducibility | They give a nearly complete specification for their expectation language, as well as a brief overview of its implementation. A similar system could be built with some effort. |
Question | They spend very, very little time discussion reconciliation of annotations. Given how much effort the authors of BorderPatrol went to to obtain reliable traces, can Pip's reconciliation really be as good as they claim? |
Criticism | They evaluate Pip by using it on a bunch of software and showing that they were able to find bugs with it. This is exactly the sort of thing too many papers lack, and it's great that they have it, but I feel that they err in the opposite direction. They give brief, somewhat meaningless performance numbers, but don't spend any time talking about the correctness of any of their software. As already noted, they don't talk nearly enough about reconciliation, and they also don't really talk about how they tested their implementation of the language, or the annotation library. |
Ideas for further work | Integrate with BorderPatrol! |
Authors: Patrick Reynolds, Charles Killian, Janet L. Wiener, Jeffrey C. Mogul, Mehul A. Shah, and Amin Vahdat
Date: NSDI 2006
Novel idea: Writing and then verifying assertions about the behavior of a distributed system (on a level higher than each individual node) will make it easier to test and debug that system.
Main results: The authors describe a language for writing assertions of a large distributed system, as well as a tool to help generate these assertions. They also present a set of tools for verifying that a system met these assertions.
Impact: This paper might result in more test-driven development of distributed systems.
Evidence: The authors tested the FAB, SplitStream, Bullet, and RanSub systems with Pip and discovered 18 bugs.
Prior work: Pip builds on prior distributed tracing tools such as Pinpoint and Magpie.
Competitive work: As is mentioned in the X-Trace paper, Pip and X-Trace are complementary.
Reproducibility: Source code, Debian packages, and a preconfigured virtual machine are available, greatly lowering the barrier to reproducibility.
Criticism: It's great that the authors provided developers with tools to help them create their assertions. But isn't this a bad habit, tantamount to copying the result of your program into the test-case?
Ideas for further work: The authors of the X-Trace paper believe that some of Pip’s analysis can be performed on X-Trace's task trees; has this been attempted yet?