Method Of Refining Trace Data By User-set Exclusion List
Original Publication Date: 2004-Nov-22
Included in the Prior Art Database: 2004-Nov-22
While running a performance analyzer on a application, it is beneficial for analysis purposes to group programs together to indicate portions of the trace as system services vs application code, as typically only application code will be changed to improve performance. This article describes a method by which a performance analyzer user can identify prior to trace execution portions of an application flow, typically system services, which can be excluded from trace data.
Method Of Refining Trace Data By User -set Exclusion List
The performance analyzer records function entry and exit events during an appliction execution. For each event the function context and time is recorded. Where context refers to function name, object name and module name. And where a function is a routine within source code, an object is a compiled unit of source code and a module is a linked group of objects. Each module has an associated control structure maintained by the control program (or kernel). That control structure includes a field indicating whether the performance analyzer should include functions in in that module in its trace data. Fuction within modules which do not have that field set are included in trace data. Functions in modules which do have that flag set are included in trace data only if those functions are called from another function which is in a module that does not have the flag set. To clarify, consider the following example scenario...
In the example scenario, main and printf functions would be included in trace data and the print_text function would be excluded. The main function is included because it in a module with a trace flag set to yes. The printf function is included even though it's in a module whos trace flag is set to no because it's called from a module whos trace flag is set to yes. The print_text is excluded because it's in a module whos trace flag is set to no and it's called from function in a module whos trace flag is set to no.
The time spent executing the print_text function would be included in the reported time it took to execute the printf function. So assuming that printf and print_text each takes 1ms to execute, the trace data would indicate that the printf func...