【发布时间】:2020-01-03 18:13:51
【问题描述】:
AFAIK DPDK 代码示例为整个应用程序(或给定端口的所有队列)使用单个 rte_mempool。
假设所有 EAL 线程只与它们自己的 RX/TX 队列交互,是否建议每个 lcore/队列有一个内存池以进一步减少争用?
【问题讨论】:
标签: dpdk
AFAIK DPDK 代码示例为整个应用程序(或给定端口的所有队列)使用单个 rte_mempool。
假设所有 EAL 线程只与它们自己的 RX/TX 队列交互,是否建议每个 lcore/队列有一个内存池以进一步减少争用?
【问题讨论】:
标签: dpdk
内存池使用 per-lcore 缓存,因此它们可以非常有效地处理争用。
当然,添加更多内存池仍然可能带来一些性能优势,但它也会增加内存占用,因此程序可能不再适合 L3。
所以答案是:视情况而定,必须衡量。我建议改为将每个 lcore 缓存增加到 Tx + RX 描述符的数量。这应该保证在源代码没有大的变化的情况下,lcore 之间没有争用。
始终对您的更改进行基准测试,这是性能优化的主要规则;)
【讨论】: