How to reserve cpu core's on nvidia jetson xavier agx?

Hi ,

I need to reserve some specific cpu core’s for my application , I wanted to ask how can I do this on my target (Nvidia Jetson Xavier AGX) , how can i set isolcpus here , Is it possible to do without flash, or any other way.

Please provide some inputs .

Thanks & Regards,
Harshad

Hi,
You can execute taskset to use specific CPU core. Please refer to the example:
Cannot enable denver cores for TX2 (Jetpack 4.4 DP) - #40 by DaneLLL

For TX2, we have suggested this method for using Denver cores. Please try the same on Xavier.

Hi,

I tried taskset, but I can then even see load from other processes on the core’s I set for my application. That’sy I want to use isolcpus kernel boot parameter to reserve cores for me.
Can you let me know how can i set isolcpus in jetson??
Or any other alternative way which can do this job??

Hi,
Please modify extlinux.conf and give it a try. May refer to
linux - How to re-enable CPU Cores after isolcpus - Stack Overflow

Hi,

I have modfied extlinux.conf to reserve core 1 & 2 and after that I can see that the two cores isolated successfully . But while setting our process using taskset to those isolated cores. It is still not running on that core and not getting load on that cores.

The taskset command which I am using to set our application on isolated cores is:
taskset -cp 1,2 application PID

Also after this when i check my application affinity it is showing as:
current affinity list: 1,2.

But not getting any load on this cores. Please support here.

taskset -cp PID will show affinity for process PID.

For assigning a core, just use -c:

taskset -c 1,2 <your_app>

Then get its PID :

ps aux | grep <your_app>

and check with:

taskset -cp <your_app_PID>

Hi,

I tried to change extlinux.config like below to reserve cpu core 1 & 2 :
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=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 isolcpus=1-2

but I am able to reserve the cores using isolcpus only if I am keeping boot folder inside home/ directory . And after that if I am rebooting , I can see core 1 & 2 are isolated but it is not booting with the image which i have kept in boot folder instead it is taking some older image I don’t know from where it is taking.

Can anyone please support here. From where it is taking the image to boot if not from boot/ folder in this case.

Hi,
Do you mean the following steps does not work?

  1. Modify /boot/extlinux/extlinux.conf to add isolcpus=1-2
  2. Reboot the system
  3. Run high CPU load application and check loading of CPU core #1 and #2 in tegrastats

Hi,

Yes. I did both step 1 & 2 but it did not worked for me. After reboot I can see load on all the cores which means the cores I reserved using isolcpus are not isolated. I also checked cat /proc/cmdline it is also not showing isolcpus there.

Can you please tell me why it is not working??

Hi,
Do you use Jetpack 4 or 5? And please check if there is another exelinux.conf in rootfs. A user has hit an issue like:
Jetson not using FDT setting in extlinux.conf

Hi,

The target which we are using is Nvidia Jetson AGX Xavier and the jetpack version installed in jetpack 4.6.

Yes , I also doubt that there is some other extlinux.conf or may be other boot folder present on the target somewhere but I am unable to find where it is. Is there any way to find this??

The link which you shared, seems there also no proper resolution provided for this issue.

If no valid kernel image or device tree are found, there are backup versions that are flashed as separate partitions. You may see these with gdisk.
Though, you’d better try to get a working config with extlinux.conf

Hi ,

Can you please let me know how can i check seperate partitions where extlinux.conf is present using gdisk?

Also one more thing i observed is that even if i remove boot folder or rename it then also my target is able to reboot which means there is some other boot folder present in target but i dont know where it is.

Hi,
Please try to modify the file in rootfs:

Linux_for_Tegra/rootfs/boot/extlinux/extlinux.conf

And re-flash Xavier developer kit. This should make permanent setting. Please give it a try.

Hi,

Is there any way todo this without reflash, as I don’t want this setting as permanent , just want it for sometime then remove it. So i don’t want to go for flashing with host pc.

Please let me know if there is way to find out extlinux.conf in other location?

Hi,
Do you flash rootfs to eMMC? Or you flash rootfs to NVMe SSD and eMMC is the other partition? If there are multiple partitions, you can mount the eMMC to rootfs and execute find -name extlinux.conf to search for it.

Hi,

Rootfs are flashed to emmc but we have nvme ssd storage also which is mounted on /home/ folder.

what canbe done in this case??

Hi,
Do you see another extlinux.conf in the NVME SSD storage?

Hi,

There is no other extlinux.conf which I can find in nvme storage.

But one strange thing which I have observed is if i keep my boot/ folder inside nvme i.e home/ folder then my extlinux.conf changes are working but the Image not taken from the boot/ folder. It is taking some old Image from somewhere else but i don’t know that.

what shall i do in in this case??

Hi,
The system status seems uncertain. Is there a chance to re-flash the system image?