For the SSC600 SW to be able to meet real-time performance, the host system must be isolated from the virtual machines. The host OS is also responsible for controlling CPU performance. This requires setting kernel parameters and configuring sysctls and module parameters.
On Ubuntu, the kernel options can be changed by appending to GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub. After editing the file, run sudo update-grub.
On Fedora, the grubby command is used to update kernel parameters using sudo grubby --args='<kernel parameters>' --update-kernel=<kernel name>. The kernel name can be ALL for all installed kernels or a specific kernel version. The installed kernels can be listed using sudo grubby --info=ALL.
Host kernel isolation parameters
- isolcpus - List of CPUs to isolate (deprecated, according to documentation cpusets is the new way, but this does not work with early kernel threads etc.)
- irqaffinity - List of CPUs that can be used for interrupts
- skew_tick=1 - Offset periodic timer tick between CPU cores
- threadirqs - Create separate interrupt handler threads. Allows isolating interrupt handlers to specific CPU cores
- rcu_nocbs - List of CPUs to exclude from RCU callbacks
- rcu_nocb_poll - Use polling in RCU kernel threads instead of triggering from the CPUs listed in rcu_nocbs
Host kernel performance parameters
- idle=poll - Use polling when the CPU core is idle
- nohz=on - Enable nohz mode
- nohz_full - List of CPUs to disable the periodic kernel tick and RCU callbacks from
- noht - Disable hyperthreading
- intel.max_cstate=0, intel_idle.max_cstate=0, processor.max_cstate=0, processor_idle.max_cstate=0 and intel_pstate=disable - Disables various performance tunings on Intel platforms
- rdt=cmt,l3_cat,l3_cdp,mba - Enable the Intel L3 cache and memory bandwidth resource control
- selinux=0 - Disable SELinux. Does not work well with virtualization or timing requirements
- audit=0 - Disable kernel auditing
Other parameters
Not strictly necessary, but may be needed in some cases depending on the hardware and virtual machine setup.
- iomem=relaxed - Disable strict MMIO memory access checking from userspace
- intel_iommu=on and iommu=pt- Enables pass-through mode for PCI/PCIe devices on Intel platform
idle=poll iomem=relaxed intel.max_cstate=0 intel_idle.max_cstate=0 processor.max_cstate=0 processor_idle.max_cstate=0 intel_pstate=disable isolcpus=4-15 irqaffinity=0-3 rcu_nocbs=4-15 rcu_nocb_poll intel_iommu=on iommu=pt skew_tick=1 nohz=on nohz_full=4-15 threadirqs preempt=full rdt=cmt,l3_cat,l3_cdp,mba selinux=0 audit=0