Performance diagnosis. the process of finding and explaining performance problems. is an important part of parallel programming. Effective perfonnance diagnosis requires that the programmer plan an appropriate method. and manage the experiments required by that method. This paper presents Poirot. an architecture to support performance diagnosis. It explains how the architecture helps automatically, adaptably plan and manage the diagnosis processes. The paper evaluates the generality and practicality of Poirot, by reconstructing diagnosis methods found in several published perforÂmance tools.