FIELD

The field relates generally to information processing techniques and more particularly, to the monitoring of software.

BACKGROUND

Execution path tracing (often referred to as “application tracing”) is a mechanism for monitoring the operations and/or performance of instances of an executing application.

Performance analysis of storage systems, for example, may require a detailed breakdown of input/output (TO) processing flows. One approach to application tracing defines traced code fragments by “begin” and “end” points inserted in the source code during an instrumentation process. When the application executes, a timestamp and an execution instance identifier are collected each time a begin point and/or an end point are processed by the executed code. Existing application tracing techniques, however, can impair performance, require significant bandwidth and/or create recordings of prohibitive size.

A need exists for improved techniques for application tracing.

SUMMARY

In one embodiment, a method comprises obtaining a plurality of trace events generated by one or more instructions executed in response to trace points placed in instrumented software; updating, for each trace event, a buffer entry of a particular sampling buffer of a plurality of sampling buffers, wherein the particular sampling buffer corresponds to a particular processing core of a plurality of processing cores and a time window, wherein the particular processing core executes the one or more instructions that generated a respective trace event, wherein the buffer entry of the particular sampling buffer is identified based at least in part on (a) a flow type identifier associated with the one or more instructions, (b) an identifier of the respective trace event, and (c) an identifier of an adjacent trace event to the respective trace event, wherein the adjacent trace event corresponds to an adjacent trace point processed by a given execution instance, and wherein the updating comprises (i) updating a first counter indicating a cumulative number of events for the respective trace event and the adjacent trace event for the time window, and (ii) updating a second counter indicating a cumulative amount of time between the respective trace event and the adjacent trace event in the time window; and determining one or more performance metrics associated with the respective trace event and the adjacent trace event in the time window using the first counter and the second counter.

In some embodiments, a variance, a minimum and/or a maximum of the time between the respective trace event and the adjacent trace event in the time window are determined using the first counter and the second counter. In one or more embodiments, the flow type identifier is identified in the instrumented software and identifies a flow type comprising a read synchronous flow, a write synchronous flow, a disk defragmentation flow, a disk rebuild flow, a synchronous execution flow and/or a background execution flow.

Other illustrative embodiments include, without limitation, apparatus, systems, methods and computer program products comprising processor-readable storage media.

