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?
Ответ: XDP с eBPF работает в пространстве ядра, в отличие от пользовательского пространства DPDK.
Are all available CPU cores used?
Ответ: Да, но обычно irqbalance или закрепление прерывания помещает очередь RX порта в Speci c core.
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?
Ответ: вы должны использовать комбинацию счетчиков NI C и 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 - это драйвер с нулевым копированием для пользовательского sapce. Запуск потока приложения на отдельном ядре дает почти сравнимую производительность с DPDK (протестировано с 2 * 10 Гбит / с - 95% производительности DPDK).