首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DPDK -中断而不是轮询

DPDK -中断而不是轮询
EN

Stack Overflow用户
提问于 2018-12-22 02:19:20
回答 1查看 2.2K关注 0票数 2

是否可以配置DPDK,使NIC在收到数据包时发送中断(而不是关闭中断并在RX队列上进行核心轮询)?我知道这似乎有违直觉,但我想到了一个可以从中受益的用例。

DPDK声称允许您对RX队列使用中断(您可以调用rte_eth_dev_rx_intr_enable并将端口/队列对作为参数传递),但是在深入研究代码时,这似乎是误导性的。有一个轮询线程调用epoll_wait,并在收到数据包时调用eal_intr_process_interrupts。然后,该函数遍历一个回调函数列表(这些函数应该是中断处理程序)并执行每个函数。该函数然后再次调用epoll_wait (即它处于无限循环中)。

我对DPDK如何处理“中断”的理解是否正确?换句话说,即使你打开“中断”,DPDK实际上只是在后台轮询,然后执行回调函数(所以没有中断)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-22 11:07:41

我对DPDK如何处理“中断”的理解是否正确?

DPDK是一个用户空间应用程序。不幸的是,没有神奇的方法可以直接接收对用户空间应用程序的中断回调。

因此,NIC中断以任何方式在内核中得到服务,然后内核使用eventfd通知用户空间。用户空间线程使用eventfd等待epoll_wait通知。

换句话说,即使你打开“中断”,DPDK实际上只是在后台轮询,然后执行回调函数(所以没有中断)?

如果没有要接收的数据,则epoll_wait上的DPDK轮询线程应该阻塞。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53892565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档