Тестирование XDP против DPDK - PullRequest
0 голосов
/ 07 мая 2020

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

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

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

1 Ответ

1 голос
/ 09 мая 2020

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).

...