Execution profiles are important aid in analyzing the
performance of computer programs on a given computer system.
However, accurate and complete profiles are difficult to
arrive at for programs that follow the client-server model
of computing, as in the popular X Window System. In X
Window applications, considerable computation is invoked at
the display server and this computation is an important
part of the overall execution profile. The profiler
presented in this paper generates meaningful profiles for
X Window applications by estimating the time spent in
servicing the messages in the display server. The central
idea is to analyze a protocol-level trace of the interaction
between the application and the display server and thereby
construct an execution profile for the trace and a set of
metrics about the target display server. Experience using
the profiler for examining bottlenecks is presented.