Каждый пакет обрабатывается другим ядром? Или это однопоточный процесс?
2
Я не уверен, почему Chopper3 закрыл этот вопрос. Чтобы ответить на это: Iptables на самом деле является лишь интерфейсом пользовательского пространства для брандмауэра Linux, который является netfilter. Netfilter - это система хуков в ядре, связанных с обработкой пакетов. Каждый пакет обрабатывается ядром, вызывая прерывание. От того, сколько ему лет, зависит балансировка вашего ядра между несколькими процессорами. Смотрите эту ветку на StackOverflow об этом. stackoverflow.com/questions/7467688/…
—
JakePaulus
+1, потому что я думаю, что это подлинный вопрос.
—
Сачин Дивекарь
@JakePaulus Это IRQ-балансирование никогда не назначит более одного ядра одному прерыванию. Таким образом, переключение ядер для каждого пакета в одной строке никогда не произойдет?
—
Нильс
С точки зрения кэша памяти ЦП переключение ядер для одного соединения не имеет особого смысла - возможно, даже замедлилось бы, если бы эти ядра не использовали один и тот же кэш. Но почему вы задаете этот вопрос?
—
Нильс
@ Nils Прерывания, генерируемые интерфейсом, могут быть перенаправлены на другой, менее загруженный процессор. Кроме того, прерывания могут передаваться нескольким интерфейсам на разные процессоры для распределения нагрузки. Я думаю, что вы правы в том, что трафик с одного интерфейса не сбалансирован между процессорами для каждого пакета.
—
JakePaulus