This bug will only occur if Jetpack version is higher than 4.3
TX2 core structure:
Jetson TX2 is composed of a GPU and a CPU cluster. The CPU cluster consists of dual-core denver2 processors and quad-core ARM Cortex-A57, connected through a high-performance interconnect architecture. With 6 CPU cores and a GPU, you don’t have to run all the performance and power consumption yourself to measure the optimal operating status, because NVIDIA’s new command line tool Nvpmodel provides 5 modes, which allows users to easily configure the CPU status to maximize Maximize performance and energy consumption in different scenarios.
But very abstractly, Jetpack 4.3 or above isolates the two cores of denver2 by default. First of all, if you want to enable it, you cannot delete the device tree on the original SD card when migrating the system.
mode Mode Name Denver 2 Frequency ARM A57 Frequency GPU Frequency
0 Max-N 2 2.0 GHz 4 2.0 GHz 1.30 Ghz
1 Max-Q 0 4 1.2 GHz 0.85 Ghz
2 Max-P Core-All 2 1.4 GHz 4 1.4 GHz 1.12 Ghz
3 Max-P ARM 0 4 2.0 GHz 1.12 Ghz
4 Max-P Denver 2 2.0 GHz 0 1.12 Ghz
How did you discover this problem?
If you refer to turning on Max-N through the sudo nvpmodel -m 0 command, these two cores are only turned on, but they will not work. Only through the stress test can we find that they can work normally. Is it because Nvidia believes that Jetson only uses Can 2/3 of the threads meet the demand? Obviously not, because the jetson tx2 on the market has been discontinued, and some of the core boards circulated are quad-core core boards with cores locked, which is just a trick.
The correct way to turn on six cores:
Check the file to find isolcpus=1-2, which is the code for the default isolation core.
cat /proc/cmdline
Mine shows up as:
console=ttyS0,115200 androidboot.presilicon=true firmware_class.path=/etc/firmware root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 isolcpus=1-2 video=tegrafb earlycon=uart8250,mmio32,0x3100000 nvdumper_reserved=0x2772e0000 gpt rootfs.slot_suffix= usbcore.old_scheme_first=1 tegraid=18.1.2.0.0 maxcpus=6 no_console_suspend boot.slot_suffix= boot.ratchetvalues=0.2031647.1 vpr_resize bl_prof_dataptr=0x10000@0x275840000 sdhci_tegra.en_boot_part_access=1 quiet root=/dev/sda rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 isolcpus=1-2
然后更改配置文件:/boot/extlinux/extlinux.conf
sudo gedit /boot/extlinux/extlinux.conf
Remove suffix:
TIMEOUT 30
DEFAULT primary
MENU TITLE L4T boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 isolcpus=
Note: Be sure to see clearly which disk is indicated by the green text. First of all, what we want must be the startup disk, because this is the startup configuration file.
If you use SATA expansion or M2 expansion as a boot disk, you must keep the original fileextlinux.conf
Then sudo reboot to restart
Re-sudo nvpmodel -m 0 to enable MaxN
Perform a stress test:
stress-ng --cpu 6 --timeout 5m --cpu-method bitops
Reference forum: