I had posted a question in similar context over here
After figuring out a few issues, I have brought down the jitter.
I will describe my scenario.
My kernel boot parameters look like:
nmi_watchdog=0 intel_idle.max_cstate=0 processr.max_cstate=0 nohz_full=7-11 isolcpus=7-11 mce=off rcu_nocbs=7-11 nosoftlockup cpuidle.off=1 powersave=off nonmi_ipi nnwatchdog
I have a kernel module, which is responsible to send some packets at a given interval(here I am sending every 1ms).
- I have a packet generator pinned to CPU 9
- I have a kernel module(or Kthread) pinned to CPU 8
- I have set the IRQ affinity of my rx queue to CPU 10
Thus, I executed the following command to get perf stats
sudo ./perf stat -a -d -I 1000 --cpu=8 taskset -c 9 ./test.sh
Below, I have posted an excerpt of the output that I got. From the above command, I am trying to profile the events of my CPU Core 8.
So, in this way, these components should not interfere with each other.
5.002780500 1000.296809 cpu-clock (msec) # 1.000 CPUs utilized
5.002780500 0 context-switches # 0.000 K/sec
5.002780500 0 cpu-migrations # 0.000 K/sec
5.002780500 0 page-faults # 0.000 K/sec
5.002780500 88,531 cycles # 0.000 GHz
5.002780500 29,738 instructions # 0.33 insn per cycle
5.002780500 6,639 branches # 0.007 M/sec
5.002780500 118 branch-misses # 1.72% of all branches
5.002780500 7,677 L1-dcache-loads # 0.008 M/sec
5.002780500 318 L1-dcache-load-misses # 4.04% of all L1-dcache hits
5.002780500 196 LLC-loads # 0.196 K/sec
5.002780500 169 LLC-load-misses # 84.08% of all LL-cache hits
Round 0
6.330091222 1327.302728 cpu-clock (msec) # 1.327 CPUs utilized
6.330091222 1 context-switches # 0.001 K/sec
6.330091222 1 cpu-migrations # 0.001 K/sec
6.330091222 0 page-faults # 0.000 K/sec
6.330091222 2,401,268,484 cycles # 2.276 GHz
6.330091222 1,700,438,285 instructions # 4.25 insn per cycle
6.330091222 400,075,413 branches # 379.216 M/sec
6.330091222 9,587 branch-misses # 0.01% of all branches
6.330091222 300,135,708 L1-dcache-loads # 284.487 M/sec
6.330091222 12,520 L1-dcache-load-misses # 0.03% of all L1-dcache hits
6.330091222 6,865 LLC-loads # 0.007 M/sec
6.330091222 5,177 LLC-load-misses # 394.69% of all LL-cache hits
Round 1
7.343309295 1013.219838 cpu-clock (msec) # 1.013 CPUs utilized
7.343309295 2 context-switches # 0.002 K/sec
7.343309295 1 cpu-migrations # 0.001 K/sec
7.343309295 0 page-faults # 0.000 K/sec
7.343309295 2,401,313,050 cycles # 2.289 GHz
7.343309295 1,700,446,830 instructions # 2.48 insn per cycle
7.343309295 400,076,590 branches # 381.375 M/sec
7.343309295 9,722 branch-misses # 0.01% of all branches
7.343309295 300,137,590 L1-dcache-loads # 286.108 M/sec
7.343309295 12,429 L1-dcache-load-misses # 0.01% of all L1-dcache hits
7.343309295 6,787 LLC-loads # 0.006 M/sec
7.343309295 5,167 LLC-load-misses # 246.77% of all LL-cache hits
The words 'Round "x"' means that we are sending 1 packet every ms thus 1000 packets every ms thus every round.
What I have not been able to understand from the above dump is LLC-load-misses
. Or, to be precise, I am not able to find a way to dig deep into the source of this issue.
Any inputs on this issue would be very helpful.
Regards, Kushal.