Jetpack版本超过4.3才会有这个bug
TX2核心构造:
Jetson TX2是由一个GPU和一个CPU集群组成。CPU集群由双核denver2处理器和四核ARM Cortex-A57组成,通过高性能互连架构连接。拥有6个CPU核心和一个GPU,可以不必自行运行所有性能、功耗来测量最佳的运行状态,因为NVIDIA新的命令行工具Nvpmodel提供5种模式,可以方便地让用户配置CPU状态,以最大限度地提高不同场景下的性能和能耗。
但很抽象的是,Jetpack4.3以上版本默认将denver2的两个核心隔离了,首先如果你要开启的话,迁移系统的话不能将原先sd卡上的设备树给删除了。
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
怎么发现的这个问题
如果你指通过sudo nvpmodel -m 0命令去开启Max-N,这两个核心只是开启了, 但是不会工作,只有通过stress压力测试,才能发现他们能正常工作,难道是因为Nvidia认为jetson只用2/3的线程就可以满足需求了吗,显然不是,因为市面上jetson tx2停产了,而流传的有一部分核心板是被锁了核心的四核芯板,障眼法罢了。
正确的六核心开启方法:
查看文件找到isolcpus=1-2,这就是默认隔离核心的代码。
cat /proc/cmdline
我的显示为:
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
删除后缀:
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=
注意:一定要看清楚绿字指示的是哪一个盘,首先我们要的肯定是启动盘,因为这是启动配置文件
如果是进行了sata拓展或者M2拓展做启动盘的一定要保留原来文件extlinux.conf
然后sudo reboot 重启
重新sudo nvpmodel -m 0开启MaxN
进行压力测试:
stress-ng --cpu 6 --timeout 5m --cpu-method bitops
参考论坛: