Part 3. Configure gNB Server
To install the Aerial tools follow the cuBB installation guide.
The ARC thread to core assignment functionality has been improved. The L1 related threads, that need to isolate cores in a monolithic block, were moved and the rest are left to OAI L2+ to use. Core 2-6 are used for cuPHY workers cores. Core 7 is used for cuPHY lowprio thread. Core 8 is used for the cuPHY timer thread and core 9 for PTP and PHC2SYS.
To set kernel command-line parameters, edit the GRUB_CMDLINE_LINUX_DEFAULT
parameter in the grub
file /etc/default/grub
andmodify the following parameters.
The following kernel parameters are optimized for the Aerial DevKit with 24 cores Xeon Gold 6240R and 96GB memory. For ARC, typically it is optimal to configure the gNB to isolate core 2 to 10 for Aerial, and leave the other cores for use by OAI L2+.
To automatically append the grub file with these changes, enter this command:
$ sudo sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT="[^"]*/& default_hugepagesz=1G hugepagesz=1G hugepages=16 tsc=reliable clocksource=tsc intel_idle.max_cstate=0 mce=ignore_ce processor.max_cstate=0 intel_pstate=disable audit=0 idle=poll isolcpus=2-10 rcu_nocb_poll nosoftlockup iommu=off intel_iommu=off irqaffinity=0-1,22-23/' /etc/default/grub
$ sudo update-grub
$ sudo reboot
After rebooting, enter the following command to check whether the system has booted into the low-latency kernel:
$ uname -r
5.15.0-1042-nvidia-lowlatency
Enter this command to check that the kernel command-line parameters are configured properly:
$ cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-5.15.0-72-lowlatency root=/dev/mapper/ubuntu--vg-ubuntu--lv ro default_hugepagesz=1G hugepagesz=1G hugepages=16 tsc=reliable clocksource=tsc intel_idle.max_cstate=0 mce=ignore_ce processor.max_cstate=0 intel_pstate=disable audit=0 idle=poll isolcpus=2-10 rcu_nocb_poll nosoftlockup iommu=off intel_iommu=off irqaffinity=0-1,22-23
Edit /lib/systemd/system/ptp4l.service:
ExecStart=taskset -c 9 /usr/sbin/ptp4l -f /etc/ptp.conf
Edit /lib/systemd/system/phc2sys.service:
ExecStart=/bin/sh -c "taskset -c 9 /usr/sbin/phc2sys -s /dev/ptp$(ethtool -T ens6f0 | grep PTP | awk '{print $4}')-c CLOCK_REALTIME -n 24 -O 0 -R 256 -u 256"