The present invention is a system, method, and computer readable medium for
representing program event trace information in a way which is very
compact and efficient, and yet supports a wide variety of queries
regarding system performance. The tracing and reduction of the present
invention may be dynamic, in which case information is obtained and added
to the trace representation in real-time. Alternately, the tracing and
reduction may be static, in which case a trace text file or binary file is
obtained from a trace buffer, and the reduction takes place using the
trace file as input. The trace information, whether obtained statically or
dynamically, is represented as a tree of events. The present invention may
be used to present many types of trace information in a compact manner
which supports performance queries. For example, the tree structure of the
present invention may reflect the call stacks observed during a program's
execution, and statistics regarding the time spent in the various routines
and call stacks may be stored at each node of the tree. The tree structure
may be used to store performance information regarding Java bytecodes
executed, memory allocated, or other types of performance information. The
trace information is presented in a manner which is compact and efficient,
and may be used to quickly and easily answer a variety of performance
queries. Further, a system may be traced for long periods of time without
losing useful performance information due to a limited buffer space.
La presente invenzione è un sistema, un metodo e un mezzo leggibile dall'elaboratore per rappresentare le informazioni della traccia di evento di programma in un senso che è molto compatto ed efficiente, ma sostiene un'ampia varietà di domande per quanto riguarda le prestazioni del sistema. Il tracciato e la riduzione di presente invenzione possono essere dinamici, nel qual caso le informazioni sono ottenute ed aggiunte alla rappresentazione della traccia in tempo reale. Alternatamente, il tracciato e la riduzione possono essere statici, nel qual caso una lima di testo della traccia o la lima binaria è ottenuta da un amplificatore della traccia e la riduzione avviene usando la lima della traccia come input. Le informazioni della traccia, se verificato staticamente o dinamicamente, sono rappresentate come albero degli eventi. La presente invenzione può essere usata per presentare molti tipi di informazioni della traccia in un modo compatto che sostiene le domande di prestazioni. Per esempio, la struttura arborescente di presente invenzione può riflettere le pile di chiamata osservate durante l'esecuzione del programma e le statistiche per quanto riguarda il tempo speso nelle varie procedure e pile di chiamata possono essere immagazzinate ad ogni nodo dell'albero. La struttura arborescente può essere usata per memorizzare le informazioni di prestazioni per quanto riguarda i bytecodes del Java eseguiti, la memoria assegnata, o altri tipi di informazioni di prestazioni. Le informazioni della traccia sono presentate in un modo che è compatto ed efficiente e possono essere usate rispondere a rapidamente e facilmente ad una varietà di domande di prestazioni. Più ulteriormente, un sistema può essere seguito per i periodi di tempo lunghi senza informazioni utili perdenti di prestazioni dovuto uno spazio di amplificatore limitato.