864a800d70
For i40evf, internal rx interrupt and adminq interrupt share the same source, that cause a lot cpu cycles be wasted on interrupt handler on rx path. This is complained by customers which require low latency (when set I40E_ITR_INTERVAL to small value), but have to be sufferred by tremendous interrupts handling that eat significant CPU resources. The patch disable pci interrupt and remove the interrupt handler, replace it with a low frequency (50ms) interrupt polling daemon which is implemented by registering a alarm callback periodly, this save CPU time significently: On a typical x86 server with 2.1GHz CPU, with low latency configure (32us) we saw CPU usage from top commmand reduced from 20% to 0% on management core in testpmd). Also with the new method we can remove compile option: I40E_ITR_INTERVAL which is used to balance between low latency and low CPU usage previously. Now we don't need it since we can reach both at same time. Suggested-by: Jingjing Wu <jingjing.wu@intel.com> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com> Acked-by: Beilei Xing <beilei.xing@intel.com> |
||
---|---|---|
.. | ||
base | ||
i40e_ethdev_vf.c | ||
i40e_ethdev.c | ||
i40e_ethdev.h | ||
i40e_fdir.c | ||
i40e_flow.c | ||
i40e_logs.h | ||
i40e_pf.c | ||
i40e_pf.h | ||
i40e_regs.h | ||
i40e_rxtx_vec_altivec.c | ||
i40e_rxtx_vec_avx2.c | ||
i40e_rxtx_vec_common.h | ||
i40e_rxtx_vec_neon.c | ||
i40e_rxtx_vec_sse.c | ||
i40e_rxtx.c | ||
i40e_rxtx.h | ||
i40e_tm.c | ||
i40e_vf_representor.c | ||
Makefile | ||
meson.build | ||
rte_pmd_i40e_version.map | ||
rte_pmd_i40e.c | ||
rte_pmd_i40e.h |