2.8. Linux Performance

2.8.1. Overview

An important step in evaluating Linux is comparing the performance for certain critical tasks to make sure that they will meet the design goals of an embedded system. For example, if the target is a gateway application, validating that the potential solutions will meet the overall ethernet bandwidth required by the gateway application is an important evaluation step. The combination of the Processor SDK for Linux and a TI EVM can provide a powerful evaluation platform, especially for interfaces that are common (ex. Ethernet in the gateway application above).

The Processor SDK for Linux includes many building blocks to help in the evaluation phase. The fact that Linux boots on a known good platform like an EVM is already a great start. From a Linux prompt, many tools and applications can be employed from Linux to learn more about the underlying hardware. For example, the SDK provides many popular benchmarking suites (ex. lmbench, stream, etc.) as part of the target filesystems.

For example, if memory bandwidth is of interest, the following command can be run on an EVM right out of the box:

root@am64xx-evm:/usr/bin# bw_mem 8M cp
8.00 451.65

Note

Please note the command is being run from /usr/bin on the target, an AM64x Starter Kit (SK).

These benchmarks can also be useful to compare performance on hardware platforms. For example, the TI EVMs can be compared to custom hardware as a point of reference in board validation. If a custom board designed to meet the same specifications as an EVM shows lower performance than the EVM, it might warrant further evaluation of that hardware before proceeding further into the design process.

2.8.2. Benchmark demo

The Benchmark Demo that is provided with the AM64x Processor SDK is a great tool to quickly evaluate the performance of the ARM Cortex R5F cores.

As indicated in the picture below, the demo loads a variety of general applications and allows the user to change options and see how the options impact the CPU usage:

../_images/Academy_Eval_Perf_Numbers_Benchmark.png

2.8.3. Matrix Demo

The Matrix Demo includes easy access to many standard benchmarks. All of these examples can be run on the target with a few clicks of the mouse. In the example below, opening the “ARM” menu on the home page shows a variety of benchmarks that can be executed using the displayed icons.

../_images/Academy_Matrix_ARM.png

Here is what is displayed by clicking the “DDR Bandwidth” icon:

../_images/Academy_Matrix_ARM_DDR_Bandwidth.png

When the “run” icon is clicked above, a script is executed on the target. To find the script, take a look at the Matrix GUI desktop file:

root@am64xx-evm:/usr/share/matrix-gui-2.0/apps/arm_ddr_bandwidth# cat arm_ddr_bandwidth.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Name=DDR Bandwidth
GenericName=Benchmark
Icon=/usr/share/matrix-gui-2.0/apps/images/arm-icon.png
Type=Application
Exec=optimize-benchmark.sh runLmDDRBandwidth.sh
Categories=arm
ProgramType=console
X-MATRIX-Lock=benchmarks
X-MATRIX-Description=/usr/share/matrix-gui-2.0/apps/arm_ddr_bandwidth/desc_arm_ddr_bandwidth.html

The script that runs when this icon is clicked is pointed to by the “Exec” statement above. The optimize-benchmark.sh and runLmDDRBandwidth.sh scripts are located in /usr/bin directory on the target. These scripts serve as good examples of what can be done directly using the Processor SDK and an EVM.