В соответствии с https://lwn.net/Articles/629155/ ядро Linux "может пересылать только пакеты от 1 до 2 млн на ядро каждую секунду »- но насколько хорошо Linux тогда масштабируется на несколько десятков ядер?
Скажем, у меня есть сетевая карта с несколькими очередями (128 пар rx + tx) 100 Гбит / с на многоядерном ЦП - сможет ли Linux насыщать сетевую карту 100 Гбит / с, т.е. Общая пропускная способность 10..20M пакетов / сек?
Я также где-то читал, что Linux испытывает трудности с масштабированием производительности сети выше 4 ядер - верно ли это и для последних версий ядра?
Поймите, что 10 Mpps на хосте подталкивают к масштабируемости и потребуют настройки для хорошей работы. В Руководство по настройке производительности сети RHEL углубляется в некоторые из этих вопросов, от разгрузки сетевого адаптера до эффектов NUMA.
Даже маленькие 1000-байтовые пакеты означают, что требуется сетевая карта 100 Гб.
10 Mpps - это примерно 90 нс на пакет. Немного, всего пара сотен циклов процессора.
Чтобы просто сбросить 10 млн пакетов в секунду, Cloudflare экспериментировал с полным обходом netfilter и использовал XDP. Это немного экзотично, если ваша стандартная модель безопасности хоста предполагает netfilter с conntrack. Также немного обманывают пропускную способность, поскольку сетевые адаптеры 10 Гб предполагают отказ в обслуживании через крошечные пакеты.
ESnet достиг одиночных потоков 78 Гбит / с со всеми любимыми тестами на бездействие, iperf и nuttcp. Примечательно, что они использовали пакеты размером 9000 байт, так что это «всего» 1 миллион пакетов в секунду. Тем не менее, потребовалась некоторая настройка, подобная той, которую вы делаете для высокопроизводительных баз данных:
Неплохо, учитывая, что на старых ядрах требовалась дополнительная настройка.
Ни Cloudflare, ни ESnet не проводят значительных вычислений в рамках этих тестов потока пакетов. Еще одна переменная в масштабируемости - выполнение полезной работы. Возможно горизонтальное масштабирование: haproxy для дюжины внутренних хостов, каждый из которых делает более легкое достижение 1 Mpps. Может быть, это все еще выходит за рамки некоторых ограничений масштабируемости пересылки, упомянутых LWN, трудно сказать.
Учитывая последний ядро, эта статья LWN была написана 5 лет назад и не будет актуальной. Получите новые ядра на новейших сетевых адаптерах, чтобы настроить собственные тесты. Особенно если вы хотите написать свою статью "Как сбросить 20 Mpps".