Skip to content

Heterogeneous CPUs: A Cautionary Tale

This application note only applies to the products listed at the top of this page.

The AIR-T models above features a six core heterogeneous CPU where two cores are designed by Nvidia and are referred to by their codename: Denver. These cores are generally optimized for single thread performance, but create issues for multithreaded applications. Namely, applications can schedule some threads onto the Denver cores and some threads onto the A57 cores, which leads to issues with data sharing across the CPUs. As a result, all versions of AirStack effectively disable the Denver cores on the AIR-T to prevent performance degradation and to optimize power usage.

AirStack 1.0 introduced a new version of real-time Linux that appeared to have issues with disabling CPU cores during boot time. As a result, for this specific release of AirStack, the Denver cores remained enabled, but clocked to their minimum clock rate (to reduce power usage as much as possible). The operating system is also instructed to ignore these CPU cores and not schedule any work on them, but these kernel-level settings can be overwritten by applications via use of CPU affinity. As a result, users of AirStack 1.0 may want to manually disable the Denver cores to ensure that no work ever gets scheduled on the Denver cores and to minimize power usage as much as possible. This can be achieved by running the following commands with root privileges on the AIR-T as shown below.

dwd@airt-dev:~$ sudo su
[sudo] password for dwd:
root@airt-dev:/home/dwd# echo 0 > /sys/devices/system/cpu/cpu1/online
root@airt-dev:/home/dwd# echo 0 > /sys/devices/system/cpu/cpu2/online
root@airt-dev:/home/dwd# exit