ADTF Configuration Editor
Loading...
Searching...
No Matches
Profiler GUI

ADTF comes with built-in profiling support based upon easy_profiler.

To make use of it and analyze your instance, threads and blocks, the code must be instrumented, which has been done at several impotant and interesting spots in our architecture already.

The Profiler GUI use the build-in profiling support to analyse timing and threading behaviour based on easy_profiler.

Note
For a more in-depth documentation take a look at easy_profiler.
This page will only provide a very high-level introduction.

Instrument your own code

To add profiling blocks to your own code, just

#include <easy/profiler.h>

and use the supplied macros from easy_profiler.
For example just use the EASY_FUNCTION() macro in each of your functions you want to profile.

Capture profiling data

The ADTF SDKs and Services are already instrumented so you can start profiling right away.

adtf_launcher --profiler

For more options use

adtf_launcher --help

regarding profiling support.

Now you can easily start using the predefined Tools > Profiler GUI menu entry within the ADTF Configuration Editor or click the related icon within the Tools toolbar.

Note
If you want to start the profiler_gui executable directly from the bin folder, we recommend to use the delivered profiler_gui.bat (Windows) / profiler_gui.sh (Linux) files to start.
The Profiling GUI needs to know where the Qt delivery is located, which will be set by these scripts.

After start is complete, click the connect button and check the available profiling blocks with the help of the according button in the toolbar. There you can select which blocks you want to record, but most of the time you can just leave them all enabled. Make sure the ADTF Session is doing whatever you want to profile and then hit the Capture button in the toolbar. Press stop when you have collected enough data.

Analyse Profiling Data

The following screenshot shows a profiling ADTF Session:


The upper bar graph shows all threads and their executed blocks. You can select a time range with pressed right mouse-button and get detailed information in the lower tree view. Clicking and hovering the mouse over a block will give you a pop-up with detailed statistics. The bar graph in the center will then show you the execution time over the whole capture period, there you can spot any spikes easily.

In our example we can observe that the timer_runner first executes the trigger function of Demo Time Triggered Filter 2 then the trigger function of Demo Time Trigger 1 followed by the execution of the trigger function of Demo Data Trigger.

When taking a look at the thread runner we see that the trigger function of the Demo Thread Triggered is executed in a busy loop fashion. Right after the Demo Data Trigger has processed its output we see an increase in the execution time on this thread as well, as this trigger function is waiting for some data to be available.

Where to go next ?

After reading this page, you should have a first impression how ADTF and the Easy Profiler are connected.
Let's have a look at the DDL Utility redeploy to gather some information about tooling related to DDL.