Execution profiles are important 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 from the trace and a set of
metrics about the target display server. Experience using the
profiler for examining bottlenecks is presented.