Тестирование XDP против DPDK

У меня есть некоторый опыт работы с DPDK, но в настоящее время я читаю много блогов о XDP. Я пытаюсь сравнить обе технологии и понять различия между DPDK и XDP. Это вызывает некоторые вопросы. Я надеюсь, что кто-то может помочь мне со следующими вопросами:

  1. С помощью DPDK я могу сопоставить воркеры с ядрами ЦП и изолировать ядра ЦП, которые будут использоваться DPDK. В случае eBPF/XDP какие ядра процессора используются? Используются ли все доступные ядра процессора? Можно ли изолировать ядра ЦП, предназначенные для программ eBPF/XDP?
  2. Когда я проверяю пропускную способность приложения DPDK, я могу проверить, заполнены ли кольцевые буферы (мемпулы), чтобы пакеты не терялись. Но как я могу проверить, вызывает ли программа eBPF/XDP отбрасывание пакетов из-за слишком высокой пропускной способности? Я предполагаю, что когда программе eBPF / XDP требуется слишком много времени для обработки пакета, в конечном итоге вы увидите отбрасывание пакетов? (особенно при отправке пакетов 64B на высокой скорости, чтобы найти максимальное количество пакетов, которые можно отправить)

Заранее спасибо за вашу помощь!


person pjk    schedule 07.05.2020    source источник


Ответы (1)


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 порта на конкретное ядро.

Would it be possible to isolate CPU cores meant for eBPF / XDP programs? Ответ: Вы имеете в виду вариант isol KERNEL_CMD_LINE, понимание неверное. Как упоминалось выше, вы можете закрепить прерывание очереди 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 достигается при использовании драйвера с нулевым копированием для пользователя sapce. Выполнение потока приложения на отдельном ядре дает почти сравнимую производительность с DPDK (проверено с 2 * 10Gbps — 95% производительности DPDK).

person Vipin Varghese    schedule 09.05.2020