Documentation

Execution Profiling for Real-Time Applications

You can profile the task execution time and function execution time of your real-time application running on the target computer. Using that information, you can then tune its performance.

Profiling is especially useful if the real-time application is configured to take advantage of multicore processors on the target computer. To profile the real-time application:

  1. In the Configuration Parameters for the model, enable the collection of profile data during execution.

  2. Build, download, and execute the model.

  3. Call profile_slrt to collect and display the profile data.

Profiling slightly increases the execution time of the real-time application.

Configure Real-Time Application for Profiling

This example shows how to configure model dxpcmds6t for task execution profiling.

  1. Open model dxpcmds6t.

  2. In the top model, open the Configuration Parameters dialog box, and select Code Generation > Verification.

  3. Select the Measure task execution time check box.

    Task Execution Time (TET) measures how long it takes the kernel to run for one base-rate time step. For a multirate model, use the profiler to find out what the execution time is for each rate.

  4. If you also want to profile function execution times, select the Measure function execution times check box.

  5. Under Code Generation, select Simulink Real-Time Options.

  6. Type a value for Number of profiling events (each uses 20 bytes).

    By default, the software logs 5000 events for profiling. You can increase or decrease this number to manage memory usage. When the software logs the specified number of events or the model stops, the software stops collecting the data. The software writes the data to current_working_folder\xPCTrace.csv on the target computer.

  7. Click OK.

  8. Save model dxpcmds6t.

Generate Real-Time Application Execution Profile

This example shows how to generate profile data for model dxpcmds6t using default settings on a multicore target computer.

This procedure assumes that you have configured the target computer to take advantage of multiple cores. It also assumes that you previously configured the model for task and function execution profiling.

Build and download the model.

mdl = 'dxpcmds6t';
open_system(mdl)
rtwbuild(mdl)

When you include profiling, the Code Generation Report is generated by default. It contains links to the generated C code and include files. By clicking these links, you can examine the generated code and interpret the Code Execution Profile Report.

Execute the real-time application.

tg = slrt;
start(tg)
pause(2)
stop(tg)

Profile the real-time application execution.

profileInfo.modelname = 'dxpcmds6t.mdl';
profData = profile_slrt(profileInfo);

The Execution Profile plot shows the allocation of execution cycles across the four processors, indicated by the colored horizontal bars.

The Code Execution Profiling Report displays model execution profile results for each task.

Profile DataDescription
Maximum turnaround timeLongest time between when the task starts and finishes. This time includes task preemptions (interrupts).
Average turnaround timeAverage time between when the task starts and finishes. This time includes task preemptions (interrupts).
Maximum execution timeLongest time between when the task starts and finishes. This time does not include task preemptions (interrupts).
Average execution timeAverage time between when the task starts and finishes. This time does not include task preemptions (interrupts).
CallsNumber of times the generated code section is called.

To display the profile data for the generated code section, click the Membrane button   in the Coder Execution Profiling Report.

Close the model.

close_system(mdl,0)

See Also

More About

Was this topic helpful?