Robot_NagNews Опубликовано 10 декабря, 2010 · Жалоба Материал: Когда я впервые увидел описание Intel Ethernet-контроллера на 10 гигабит, с его аппаратной возможностью распараллеливать входящий поток на несколько очередей приема, еще тогда закралась мысль: вот где можно применить многоядерные системы. Но так, как на те времена программная структура ядра Linux, еще не совсем была готова к приему пакетов с разных очередей, не говоря уже про распараллеливание отправки пакетов в сетевую плату, идея была отложена в долгий ящик. И вот, как-то, проводя очередной софт-апгрейд одного из серверов (не помню уже, что делал этот сервер), решил задержать свой взгляд на сетевой части ядра Linux - а что же сменилось там? Полный текст Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Гость Кужукеев Рустем www.mcn.ru Опубликовано 10 декабря, 2010 · Жалоба прям ностальгия детства напала, когда мы активно перепрошивали eeprom и пользовались бездисковыми терминалами )) конечно PC based маршрутизация, это все-таки пушка для воробьев, но все же, описанное выше, это действительно важно. Спасибо автору. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sdy_moscow Опубликовано 10 декабря, 2010 (изменено) · Жалоба А можно по-подробнее о конфигурации сервера и его стоимости? Изменено 10 декабря, 2010 пользователем sdy_moscow Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
No_name Опубликовано 10 декабря, 2010 · Жалоба ... конечно PC based маршрутизация, это все-таки пушка для воробьев... Обоснуйте пожалуйста, в контексте статьи. Просто интересно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Гость vitalay Опубликовано 10 декабря, 2010 · Жалоба А вы не пробовали пользоватся Mikrotik Router OS на PC based routers? Просто интерестно как она себя на таких нагрузках поведет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Гость Uno Опубликовано 10 декабря, 2010 · Жалоба У Микротика до сих пор большие проблемы с использованием многоядерности. Поддержка чисто формальная. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
JMan Опубликовано 10 декабря, 2010 (изменено) · Жалоба А можно по-подробнее о конфигурации сервера и его стоимости?Если тема интересна, то напишу на днях продолжение, о найденных интересных особенностях и тестированию и на других процессорах и на интел платформе последней топовой, нам сказали предоставят сервер.Про конфигурацию: Tyan B8236G24V4H Dual G34 barebone Intel 10 Gigabit Dual Port Server Adapter X520-SR2 {E10G42BFSR} DDR3-1333 2048MB unbuffered ECC Kingston {KVR1333D3E9S/2G} Ну процессоры от АМД разные ставили, лучше всего показал себя как я и предполагал в первой статье - это CPU AMD Opteron 8-core 6136 {OS6136WKT8EGO} Еще нашли как проводить стрес тесты мелкими пакетами, тоже опишу что мы получили. И еще на следующей недели ожидаем топовый интел на тест где будет 2 ксеона на 6 ядер по 3.33 ГГц каждое, тоже интересно сравнить с амд платформой топовой. Стоимость сервера точно не скажу, но до 5 тыс у.е., и есть еще что уменьшать, например, память по гигу планки и сетевая, можно купить без оптических модулей в наборе, что тоже будет дешевле существенно. Просто пока тестировали что было в наличии. Изменено 10 декабря, 2010 пользователем JMan Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 10 декабря, 2010 · Жалоба Вообще интересно, пока скорее с теоретической точки зрения, но кто знает, может где пригодится :) Спасибо за статью, очень интересно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
No_name Опубликовано 10 декабря, 2010 · Жалоба А как насчет под фрей потестировать? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
JMan Опубликовано 10 декабря, 2010 · Жалоба А как насчет под фрей потестировать?Честно, в Фре ядре я 0, в линухе я то смог полностью проанализировать стек сети и понять как будет идти пакет и что где надо подкрутить абы производительность поднять.Ибо для реальной сети прошлось капитально подкрутить фаст роут кеш ибо вы же читали сколько фловов там шло. Также оказалось что с учетом того что архитектура памяти НУМА, то лучше этот кеш между всеми НУМА узлами разделить, что тоже дало свои бонусы и устранило узкое место что все ядра лезли в один канал ОЗУ. Как такое реализовать во Фре честно не знаю. И еще надо было для реальной сети, сменить как ядро хранит таблицу маршрутизации, по умолчанию там многомерный масив хешей (отдельный хеш под каждую маску подсети типа /31 /30 /29 и т.п.). Алгоритм хранения и выборки маршрута в таблице маршрутизации был заменен на бинарное дерево. Причем все было сделано из стандартных модулей и настроек ядра, единственную строчку кода что я поменял, это я описал в статье, в драйвере ВЛАНов. То есть, я только конфигурацию ядра подогнал под реальную задачу, и задал нужные параметры запуска ядра, и сменил лишь одно место исходного кода. В следующей части я опишу более подробно какие настройки делались. А про Фрю честно надо другой специалист, иначе тут будут не равные условия тестирования. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Гость Сbon Опубликовано 10 декабря, 2010 · Жалоба JMan: можете написать поподробнее про оптимизацию? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sonne Опубликовано 10 декабря, 2010 · Жалоба Автору респект за проделанную работу, обязательно надо писать мануал с конфигами, не стесняясь переводить на буржуйский и лезть на какой нибудь импортный сайт. Чем больше людей узнают и проверят, тем быстрее все отладится. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sdy_moscow Опубликовано 10 декабря, 2010 · Жалоба JMan: можете написать поподробнее про оптимизацию? +1 ОЧЕНЬ интересно!!!! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
JMan Опубликовано 10 декабря, 2010 · Жалоба Автору респект за проделанную работу, обязательно надо писать мануал с конфигами, не стесняясь переводить на буржуйский и лезть на какой нибудь импортный сайт. Чем больше людей узнают и проверят, тем быстрее все отладится. Постараюсь как можно подробнее описать во второй части. Перевести на буржуйский не особая проблема, неужто оно так будет интересно буржуям? А что отлаживать, я ничего экспериментального принципиально не включал в ядре, а ту правку что я сделал в ВЛАН драйвере, это лишь убирание лишнего лока, который в виртуальном устройстве точно не надо, пример взял с устройства bond с линуха. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
bitbucket Опубликовано 10 декабря, 2010 · Жалоба А как насчет под фрей потестировать?Разницы не будет особой. Автору респект за тест. Но есть вопросы: 1. Размер таблицы маршрутизации какой реально был ? Т.е. с fv все понятно, а сколько маршрутов "во внутрь" ? 2. Размер фаервола: сколько правил в FORWARD ? Какие правила ? Есть ли ipset ? 3. Какой драйвер igb: стоковый из ядра или тот, что у intel на сайте лежит ? 4. Какие параметры в interrupt moderation ? 5. Как реагирует роутер на резкое изменение таблицы маршрутизации (когда 10к маршрутов, например, пропадает) ? Меняется ли латентность ? 6. Сколько реально было neighbor-ов у роутера (размер таблицы arp) ? Да, и все таки, что в ядре правилось ? И что за баг в vlan_dev_hwaccel_hard_start_xmit (можно просто в виде unified diff ) ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Iva Опубликовано 10 декабря, 2010 · Жалоба Еще хотелось бы проверить NAT и нарезку скоростиНа конфигурации Dual Xeon CPU X5650 + Dual Port 10G Ethernet 82598EB удалось достичь 800 Kpps (3/3.5 Gbps вход/исход) NAT+Forwarding-трафика (без BGP) при 50-60% загрузке всех 24 ядер. После этой границы загрузка процессоров нелинейно возрастала до 100%. В случае использования HTB-шейпера, при исходящем трафике больше ~275 Kpps (~2.3 Gbps) наблюдалось падение его скорости на разницу превышения входящим трафиком 250 Kpps (~2 Gbps). Однако, это всё оказалось не столь важно, начиная с ядер 2.6.28-f11 и вплоть до 2.6.32-el6 использовать NAT на скоростях больше 1 Gbps практически не было возможности, ошибка в модуле nf_nat валит ядро до двух раз в сутки. Более того, ни одного правила в таблице NAT может и не быть, достаточно загруженного модуля nf_nat даже без iptable_nat. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Гость Dark Angel Опубликовано 11 декабря, 2010 · Жалоба 2Iva: а если использовать хешированные фильтры HTB спасает ситуацию? 275Кpps для 24-х ядер - слышком мало, даже с натом, форвардингом и даже если бы у вас была генерация флова. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Гость Олесь Опубликовано 11 декабря, 2010 · Жалоба интересно как себя такая система поведёт в роли PPPoE терминатора? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
jab Опубликовано 11 декабря, 2010 · Жалоба А как насчет под фрей потестировать? А зачем ? Оно там и так работает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Гость nag-f Опубликовано 11 декабря, 2010 · Жалоба 2Iva: кошмар, какие 24 ядра :) HT отключите! И получите свои 3Мpps как минимум. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Dark_Angel Опубликовано 11 декабря, 2010 · Жалоба 2Гость_nag-f_*: а что, HT может давать такую деградацию? В 11 раз? Что-то мне кажется дело не в HT. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 11 декабря, 2010 · Жалоба 2Iva: кошмар, какие 24 ядра :) HT отключите! И получите свои 3Мpps как минимум. IMHO отключать не надо, просто обработку прерываний прибить к реальным ядрам. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
JMan Опубликовано 11 декабря, 2010 · Жалоба <br />2Гость_nag-f_*: а что, HT может давать такую деградацию? В 11 раз? Что-то мне кажется дело не в HT.<br /><br /><br /><br />На интеле тестировали НТ дает деградацию в 30-40% при загрузке свыше 55%. Подтверждаю проверено. <br />2Iva: а если использовать хешированные фильтры HTB спасает ситуацию? 275Кpps для 24-х ядер - слышком мало, даже с натом, форвардингом и даже если бы у вас была генерация флова.<br /><br /><br /><br /> HTB в линухе может работать только на одном проце и лочит отправку всех очередей, я писал в статье нарезка скорости стандартными средствами не работает на всех ЦПУ. Есть у меня одна идея как это можно обойти но слишком костыльный метод. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
JMan Опубликовано 11 декабря, 2010 · Жалоба <br />А как насчет под фрей потестировать?<br />Разницы не будет особой.<br /><br />Автору респект за тест. Но есть вопросы: <br />1. Размер таблицы маршрутизации какой реально был ? Т.е. с fv все понятно, а сколько маршрутов "во внутрь" ?<br />2. Размер фаервола: сколько правил в FORWARD ? Какие правила ? Есть ли ipset ?<br />3. Какой драйвер igb: стоковый из ядра или тот, что у intel на сайте лежит ? <br />4. Какие параметры в interrupt moderation ?<br />5. Как реагирует роутер на резкое изменение таблицы маршрутизации (когда 10к маршрутов, например, пропадает) ? Меняется ли латентность ?<br />6. Сколько реально было neighbor-ов у роутера (размер таблицы arp) ?<br /><br />Да, и все таки, что в ядре правилось ? И что за баг в vlan_dev_hwaccel_hard_start_xmit (можно просто в виде unified diff ) ?<br /><br /><br /><br />1. Размер таблицы 337236 маршрутов 2. FORWARD пустой это просто пограничный маршрутизатор был. 3. igb с интела ибо ядровый не понимал команду отключения хеша флов привязки к ядру, с ней дико тормозило и теряло пакеты. Хеш таблица очень маленькая, в чипе памяти мало 512 КБайт всего. 4.interrupt moderation по умолчанию с драйвера, динамический. 5. Пробовали ложить один из фуль вью, и перестроило более 100 тыс маршрутов на латентность не влияло, ибо маршрутизация в ядре, а перестройка таблицы из юзер спейса идет (команды) и всегда меньше приоритет имеет чем BH потоки ядра. Время перестроения точно не засекали но на глаз пару сек. 6. Арп таблица была в районе 194 записей и до 270 иногда подымалась. Про драйвер ВЛАН diff прицепил. Там фикс по очередям и убрал глобальный лок при отправке в в влан пакетов ибо это логическое устройство зачем он нужен (у него и дисплины то нету абы положить в очередь пакет, елси один проц уже занял отправку) пусть уже на уровне реальной сетевой это делает. vlan_dev.c.zip Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
bitbucket Опубликовано 11 декабря, 2010 · Жалоба 4.interrupt moderation по умолчанию с драйвера, динамический.А сколько прерываний в секунду оно генерировало ? Про драйвер ВЛАН diff прицепил. Там фикс по очередям и убрал глобальный лок при отправке в в влан пакетов ибо это логическое устройство зачем он нужен (у него и дисплины то нету абы положить в очередь пакет, елси один проц уже занял отправку) пусть уже на уровне реальной сетевой это делает.Посмотрел я патч, вроде бы да, lock на отправке в vlan не нужен, но у вас он все равно есть, где счетчики пакетов прибавляются. Тогда смысл ? lock-lock ... unlock-unlock будет то же по времени, что lock .. unlock lock +++ unlock . Ну последний lock-unlock кусок будет меньше по времени. Правильней бы в dev_queue_xmit() (а лучше вообще в HARD_TX_LOCK) проверять, что если текущий txq->xmit_lock_owner == smp_processor_id(), то не лочить очередь - оно уже залочено (надо будет это проверить :) ) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...