Я просмотрел несколько сообщений (в Stackoverflow и за его пределами) по этой теме. В настоящее время я работаю над изменением драйвера i40e-2.0.30 для сетевой карты Intel X710.
Благодаря этому иллюстрированному сообщению в блоге (https://blog.packagecloud.io/eng/2016/06/22/monitoring-tuning-linux-networking-stack-receive-data/), понимание кода драйвера стало намного проще.
Мой пост особенно касается механизма опроса NAPI. Я понимаю, что функция опроса NAPI срабатывает при поступлении пакета, и если объем работы, проделанной при получении пакетов, превышает выделенный бюджет, опрос NAPI продолжается; иначе опрос останавливается.
Основываясь на этой информации, я изменил свой драйвер, чтобы он продолжал опрашивать, поступает ли конкретная подпись данных в определенную очередь (используя директор потока), например. Пакеты UDP на порту XXX для 10 000 циклов опроса. Но я стараюсь максимально исключить возможность прерываний.
Таким образом, вот мои основные вопросы. Смогу ли я запланировать проведение опроса NAPI в определенный момент времени? Например, я хочу, чтобы опрос NAPI выполнялся каждые 500 мс и мог длиться 20 мс. Например, я буду ожидать свой пакет во время T мс, в то время как я могу начать опрос во время (T-10) мс и остановить опрос в ( T + 10) мс. Это может, я мог бы уменьшить использование прерываний. Прямо сейчас я сбрасывал прерывания каждые 10 000 циклов опроса.
Любое объяснение или ссылка на это было бы действительно полезно.
Спасибо, Кушал.