With DPDK I can map workers to CPU cores and isolate CPU cores which will be used by DPDK. In case of eBPF / XDP, which CPU cores are used?
答:与 DPDK 用户空间不同,带有 eBPF 的 XDP 在内核空间中运行。
Are all available CPU cores used?
答:是的,但通常 irqbalance 或中断固定会将端口的 RX 队列放在特定的核心上。
Would it be possible to isolate CPU cores meant for eBPF / XDP programs?
答:您指的是 KERNEL_CMD_LINE 选项isol
,理解不正确。如上所述,您可以锁定 RX 队列的中断,强制在该内核上运行 eBPF XDP。
When I test the throughput from a DPDK application, I'm able to check whether ring buffers (mempools) are full so packets will be lost. But how can I check whether an eBPF / XDP program causes packet drops because the throughput is too high?
答:你已经混合使用了 NIC 和 eBPF 计数器来实现相同的效果
I assume when an eBPF / XDP program takes too much time to process a packet, eventually, you will see packet drops? (especially when sending 64B packets on a high rate to find the maximum number of packets that can be send)
答:不必如此,XDP 的最佳性能是零拷贝驱动程序到用户空间。在单独的内核上运行应用程序线程可提供与 DPDK 几乎可比的性能(以 2 * 10Gbps 测试 - DPDK 性能的 95%)。