I am running some ROS packages and python code on my JETSON TX2 jetpack 4.3.
When Checking jtop, I see that CPU2 and CPU3 are at 0% performance, even when they are ON, while the other CPUs (1, 4,5,6) are on ~90%.
Can someone explain why is it so? And is there a way to make them be active?
Those two CPU cores use a different microarchitecture (NVIDIA Denver2).
To use them, you can either add isolcpus= to override the isolcpus setting set by NVIDIA to your kernel arguments.
Another option is explicitly using taskset to schedule some processes to those cores. Both options are detailed in the L4T release notes.
Added note for what @never_released mentions: The two Denver cores have different performance metrics, and tend to be disabled until a user wants to dedicate a task to those cores (e.g., via
If you look at the current kernel arguments via “
cat /proc/cmdline”, then you’ll see the current
isolcpus lists those processors (they are zero based index, so the first core is CPU0, and
1-2 are the two Denver cores you see), and this disables them from being scheduled by “random” tasks. Thus “
taskset”. Kernel command line parameters usually take the last argument (when there are multiple copies of the same argument) as the one to use. Thus, if you specify
isolcpus=, then the last argument clears the blocking of CPU cores
1-2. You can add this to to the end of the “
APPEND” key/value pair (if you have security fuses burned and use entirely partition based specifications, then you’d need to add this via the device tree’s “
chosen->bootargs” parameter, but I discourage using the device tree for this unless it is mandatory).
There is a man page for
taskset here if you want to use that:
Here are some related URLs from kernel.org and others which might provide a bit more insight:
An example of binding an application to CPU2 (the second Denver core) from user space (likely you need
taskset 0x2 <_USER_APPLICATION_> &