Why do Jetson modules have some CPUs disabled by default?

Just curious really - I happened to read somewhere that 4 CPUs on an 12-core AGX are disabled and have to be manually enabled.

Then I recalled I’d only seen 4 CPUs active on my 6-core Orin NX and discovered I needed to apply the same fix to enable the other 2.

So…why are some of the CPUs disabled?

It isn’t a “fix” per se. Jetsons were intended to be able to run with low power. Unlike a desktop PC you can easily set the number of active cores, along with a range of clock speeds to further control power consumption. The program for setting the range of clocks and cores available (normally) is “nvpmodel”. If you want to then max out clocks within that range, you’d use “jetson_clocks”. Typically one might do this to max out performance (and to consume the most power):

sudo nvpmodel -m 0
sudo jetson_clocks

Note that there is an option to set up a different default nvpmodel via a saved file in /etc/nvpmodel/.

I will add that the cores are not actually “disabled”. The scheduler simply does not use them. This means that the cores are reserved, and that applications in user space can still be manually scheduled to run on just those cores. That is the topic of cpu affinity (check out the kernel command line “isolcpus” and the topic of “sched_setaffinity”; the two are essentially inverses of each other).

On the earlier designs, including the older Nano (there is a newer Orin Nano) two of the CPU cores were “Denver” cores. These cores were sort of software-defined. As a result, those cores use less power, but they also have higher latency. For the Nano the cores which were defaulted to reserved are the two Denver cores.

Thanks, that all makes sense!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.