I am trying to reduce the timer tick on a Linux system. The machine has an AMD 7950x processor and is running Ubuntu 20.04. I have compiled a Linux kernel with the configuration CONFIG_NO_HZ_FULL=y
, the kernel version is 5.4.277. Additionally, I have set the kernel command line as follows:
nomodeset isolcpus=nohz,domain,1-15 nohz_full=1-15 rcu_nocbs=1-15 intel_idle.max_cstate=0 processor.max_cstate=1 tsc=reliable mce=off noirqbalance acpi_irq_nobalance intel_pstate=disable irqaffinity=0 transparent_hugepage=never mitigations=off
I expected to see the number of LOC (Local Timer Interrupts) in /proc/interrupts
on CPUs 1-15 to be much smaller than that of CPU 0. However, the LOC numbers are very close indeed.
Here are the steps I have taken to troubleshoot:
- Verified that the clocksource of the system is
tsc
. - Attempted to move system threads as much as possible using the command:
tuna --cpus=1-15 --isolate
. - Noticed that some threads' CPU affinity is not 0 using the command:
tuna -P
. - Checked
/boot/config
and/proc/cmdline
to ensure the above configuration is in effect.
What could be the possible reasons that the LOC numbers of the isolated CPUs are still the same as the housekeeping CPU (i.e., CPU 0)?