Skip to main content
Version: 7.0

Profiler

The profiler is a built-in platform mechanism that collects execution statistics for properties and actions over a given time interval and presents them as a call graph with aggregated metrics. Unlike the process monitor, which shows the system state at the current moment, the profiler describes system behavior over a past interval.

Start and stop

Data collection is controlled by a pair of actions, Start profiling and Stop profiling, available on the Administration > System > Profiler form. From start to stop the platform records property and action invocations; the data is persisted on the application server and becomes available for analysis once profiling is stopped.

Call graph

Each profiler record corresponds to an arc — a (caller, callee) pair in the context of a user and a form. The arcs form a directed graph: the same callee may be the endpoint of several arcs with different callers, and the same caller may be the source of several arcs with different callees. The graph can be walked in both directions — down from a given property to the ones it calls, and up to the ones that call it.

Metrics

For each arc the profiler stores raw metrics:

MetricMeaning
Call countHow many times the arc was traversed during the interval
Total timeSum of callee execution time, including everything it calls
Min and max timeBounds over individual calls
Sum of squared timesUsed to compute the root-mean-square runtime
SQL timePart of the total time spent waiting for the database server
User-interaction timePart of the total time spent waiting for user input or for a response from the client side

From these the profiler computes derived metrics:

MetricRule
Average timeTotal time divided by call count
Root mean square of runtimesqrt(sum of squared times / call count)
Total time without waitTotal time minus user-interaction time
Total Java timeTotal time without wait minus SQL time
Inherent time without waitTotal time without wait minus the same metric summed over the callees
Inherent SQL timeSQL time minus the SQL time summed over the callees
Inherent Java timeTotal Java time minus the total Java time summed over the callees

The inherent family attributes the time to the property or action itself rather than to its nested calls, which makes a hot spot stand out even when most of the time is spent in shared helpers it invokes.

Data presentation

The collected data is shown on several tabs:

TabWhat it shows
SettingsProfiler start/stop, choice of active metrics, user and form filters
Hot spotsA flat list of properties and actions sorted by the chosen metric
Call treeA hierarchical view of arcs — down (what the selected node calls) and up (who calls it)
Raw dataFull list of arcs for arbitrary analysis

User and form filters narrow the selection to a specific context; metrics are recomputed from the same underlying data set, no rerun of the profiler is required.

Query-plan analysis settings

The same form has a separate SQL tab that configures parameters affecting how SQL query plans are written to the logs (see Journals and logs):

ParameterMeaning
No analyzeAsk the database server for the query plan in a lightweight mode, without actually executing the query
Java stackInclude in the log the Java stack from which the query was issued
Compile planLog the compile plan as well, not only the execution plan
Time thresholdMinimum query execution time starting from which a plan reaches the log

These parameters are a separate mechanism, not included in the graph the profiler collects, but typically used alongside it for in-depth analysis of specific «hot spots».