关于此主题,我已经浏览了多个帖子(Stackoverflow内外)。目前,我正在努力修改Intel X710 NIC的i40e-2.0.30驱动程序。
感谢这篇博文(https://blog.packagecloud.io/eng/2016/06/22/monitoring-tuning-linux-networking-stack-receiving-data/),了解驱动程序代码变得更加容易。
我的帖子特别关注NAPI民意调查机制。据我所知,当数据包到达时会触发NAPI轮询功能,如果接收数据包时完成的工作量超过分配的预算,NAPI轮询将继续;其他民意调查就停止了。
根据这些信息,我修改了我的驱动程序以保持轮询,如果特定的数据签名到达特定队列(使用流导向器),例如,端口XXX上的UDP数据包,用于10,000个轮询周期。但是,我试图尽可能地消除中断的可能性。
因此,这是我的主要问题。我是否可以安排在某个时间点执行NAPI投票?就像,我希望NAPI轮询每500毫秒执行一次,可能持续20毫秒。 例如,我将在 T ms 时期待我的数据包,而我可能会在(T-10)ms 时开始轮询并在处停止轮询( T + 10)ms 。这可能,我可能能够减少中断的使用。现在,我每隔10,000个轮询周期就重置一次中断。
对此的任何解释或参考都会非常有用。
谢谢, Kushal。