У меня есть два сетевых адаптера на сервере RHEL 6. Оба они настроены на полнодуплексный режим 1 ГБ / с. Первая сетевая карта имеет много небольших (<100 байт) записей TCP-сокетов. Вторая сетевая карта используется для получения входного потока TCP со скоростью 50 МБ / с, когда задержка критична.
Будет ли первая сетевая карта отрицательно влиять на задержку на второй сетевой карте в этой настройке?
Теоретически это возможно, но при такой низкой скорости передачи данных вряд ли можно будет измерить. Сетевая карта отправляет прерывания одному или нескольким процессорам, операционная система может быть настроена для ограничения маршрутизации этих IRQ на определенные ядра. Таким образом, если одно ядро обрабатывает все IRQ, то значительное количество прерываний от одного сетевого адаптера задержит обработку прерываний от другого.
На практическом уровне карты quad-Ethernet могут реализовывать регулирование, совместное использование и объединение IRQ для всей карты, что снижает влияние больших скоростей передачи данных. Однако осознайте, что это проблемы для очень высоких скоростей передачи данных, то есть сетей 10GigE и миллионов пакетов в секунду.
Здесь есть статья о том, как маршрутизация IRQ улучшила производительность одной компании:
http://www.kernel.org/doc/Documentation/IRQ-affinity.txt
http://lserinol.blogspot.com/2009/02/irq-affinity-in-linux.html
Это зависит от типа сетевой карты. Если они обе «программные сетевые карты», которые полагаются на ЦП для обработки за них, то да, это может иметь место, потому что вы тратите время ЦП. Если они находятся на карте с 2 портами, а карта имеет только один процессор для них обоих, это также может повлиять на них. Действительно хорошие сетевые карты с двойным интерфейсом имеют процессор на порт, чтобы избежать такого воздействия, но, не зная больше, я не могу сказать наверняка.