Сетевая карта Gigabit Ethernet NetXtreme II BCM5709 поддерживает функцию MSI (прерывания с сигнализацией сообщений) и имеет 8 очередей. Каждая очередь имеет свой собственный обработчик прерывания в / proc / interrupts. Я пытаюсь указать сетевому адаптеру, какие пакеты в какую очередь должны идти.
Вопросы:
Подробнее:
У нас есть один интерфейс, который завершает IPSec и пересылает / завершает TCP-соединения. Расшифровка пакета IPSec является встроенной (это означает, что расшифровка выполняется в том же контексте ksoftirqd / X). Мы пытаемся выяснить, сможем ли мы улучшить общую производительность, если пакеты IPSec будут планироваться на другом процессоре, чем пакеты TCP. Еще одно ограничение заключается в том, что код IPSec не является MP-безопасным, поэтому я не могу запускать его более чем под одним ksoftirqd / X. По умолчанию кажется, что пакеты распределяются / хешируются по IP-адресу источника по 8 очередям сетевых адаптеров. Узким местом является IPSec, который блокирует трафик TCP, пока он расшифровывает / шифрует пакеты IPSec на ~ 100% ЦП в контексте ksoftirqd / X.
ОС - Ubuntu 10.10 (2.6.32-27-сервер), а сетевая карта - Broadcom BCM5709.
Если кто-то еще будет пытаться выяснить, как настроить стек TCP / IP в Linux Networking для масштабирования на нескольких ядрах ЦП ...
MSI может использоваться двумя базовыми технологиями сетевых адаптеров для распределения пакетов по нескольким очередям. Каждая очередь сетевого адаптера обрабатывается отдельным прерыванием на выделенном ядре ЦП для достижения масштабируемости:
Проблема с RSS заключается в том, что он всегда использует исходный IP-адрес для генерации хэша. Хэш используется, чтобы найти, в какую очередь должен идти этот пакет. Это означает, что никто не может контролировать, какие пакеты должны идти в какую очередь, если он также не контролирует исходные IP-адреса.
VMDq кажется более подходящим для моей проблемы, потому что он распределяет пакеты по MAC-адресу назначения. Это может быть так же просто, как присвоение двух разных IP-адресов одному интерфейсу.
Источник: