从 RX 环接收并在 TX 路径上释放的 DPDK 缓冲区
DPDK buffers received from the RX ring and freeded on the TX path
考虑一个 DPDK 程序,其中每个 EAL 线程:
- 在自己的 RX 队列上接收数据包
- 就地修改缓冲区
- 将其放回 TX 环以将其回显给发送者
RX 缓冲区未明确释放,因为它们在 TX 环上重新使用。依靠 NIC 处理的 TX 队列来释放 RX 环中的条目是一种好习惯吗?
成功放入Tx队列的缓冲区将被PMD释放。这是唯一的选择,所以是的,这是一个很好的做法。
不过请注意,将突发数据包放入 Tx 队列可能会失败,因为队列可能由于某种原因已满。因此,如果在 rte_eth_tx_burst()
之后还有任何未排队的数据包,则必须手动释放这些数据包或者必须重试传输。
考虑一个 DPDK 程序,其中每个 EAL 线程:
- 在自己的 RX 队列上接收数据包
- 就地修改缓冲区
- 将其放回 TX 环以将其回显给发送者
RX 缓冲区未明确释放,因为它们在 TX 环上重新使用。依靠 NIC 处理的 TX 队列来释放 RX 环中的条目是一种好习惯吗?
成功放入Tx队列的缓冲区将被PMD释放。这是唯一的选择,所以是的,这是一个很好的做法。
不过请注意,将突发数据包放入 Tx 队列可能会失败,因为队列可能由于某种原因已满。因此,如果在 rte_eth_tx_burst()
之后还有任何未排队的数据包,则必须手动释放这些数据包或者必须重试传输。