Jetson TX2 only uses one CPU core

When the system performing some works, the system monitor shows that only CPU1 is working close to 100%, while the usage of other three cores always remain 0. This makes it slow for other tasks. How could this be solved? Thanks.

Hi @skyddar ,

Turning some CPU cores on and some off

You can turn each CPU core online (1) or offline (0) manually:

echo 1 > /sys/devices/system/cpu/cpu0/online
echo 1 > /sys/devices/system/cpu/cpu1/online
echo 1 > /sys/devices/system/cpu/cpu2/online
echo 1 > /sys/devices/system/cpu/cpu3/online

You can find the source here.

https://elinux.org/Jetson/Performance

Regards.

Extra note to what @ozguryildiz mentions: Other than CPU0 (I use a zero-based index, but this is probably what you show as CPU1), all other cores can be enabled or disabled. Clock ranges can also be changed. Mostly this is for setting up a system to a “performance model” which matches battery operated systems which might need to slow down to reduce power consumption. You’ll see references to the programs “jetson_clocks” and “nvpmodel”, and these are conveniences to do basically what @ozguryildiz just mentioned, but his method has more control over customization, and actually a bit more informative about how it works.

On top of that you might find the kernel’s scheduler might not put a lot of work on different cores sometimes. The scheduler understands cache hits and misses (to some extent), and if you have most work done on a single program, then instead of distributing across cores the scheduler might end up using only CPU0 as a way to avoid cache hits and misses. Assuming you’ve gone through the above and other cores are enabled, then you might be interested in manually targeting a program for a particular core. See “taskset”:
https://forums.developer.nvidia.com/t/cpu-at-0-performance/177769/3
https://forums.developer.nvidia.com/t/cpu-at-0-performance/177769/3

Also, note that systems with Denver cores might completely leave out scheduling to those cores except when manually using taskset. If you see “isolcpus=1-2” in “cat /proc/cmdline”, then this is intentionally occurring, and you can disable the isolation of those cores by disabling that kernel command line. Then Denver cores would also be available for anything, and not just from taskset. See:
https://forums.developer.nvidia.com/t/two-cores-disabled/48637/21
https://forums.developer.nvidia.com/t/cannot-enable-denver-cores-for-tx2-jetpack-4-4-dp/124708/40

Not every Jetson has Denver cores, so this won’t apply to all, but it is a common question so it is worth adding some references to it.