Можно ли настроить DPDK таким образом, чтобы сетевой адаптер отправлял прерывание всякий раз, когда принимается пакет (вместо того, чтобы отключать прерывания и проводить опрос ядра в очереди RX)?Я знаю, что это кажется нелогичным, но есть пример использования, который я хотел бы извлечь из этого.
DPDK утверждает, что позволяет использовать прерывания для очередей RX (вы можете вызвать rte_eth_dev_rx_intr_enable
и передать порт /пара очереди в качестве аргументов), но при копании кода кажется, что это вводит в заблуждение.Существует поток опроса, который вызывает epoll_wait
, а после получения пакета вызывает eal_intr_process_interrupts
.Затем эта функция просматривает список функций обратного вызова (которые должны быть обработчиками прерываний) и выполняет каждую из них.Затем функция снова вызывает epoll_wait
(т.е. она находится в бесконечном цикле).
Правильно ли мое понимание того, как DPDK обрабатывает "прерывания"?Другими словами, даже если вы включаете «прерывания», DPDK на самом деле просто опрашивает в фоновом режиме, а затем выполняет функции обратного вызова (так что прерываний нет)?