Проведена оценка способности сетевого стека Linux обрабатывать миллион пакетов в секунду

Опубликовано: 26 июня 2015 г., пятница

Марек Майковски (Marek Majkowski), разработчик ядра Linux, работающий в компании CloudFlare, провёл заслуживающий внимания эксперимент, пытаясь разобраться насколько быстр сетевой стек ядра Linux и возможно ли в Linux обеспечить работу пользовательского приложения, способного обработать миллион UDP–пакетов в секунду на обычном сервере с шестиядерным CPU Xeon (2GHz) и сетевой картой 10G.

В эксперименте применялась связка из программы для отправки данных, использующая вызов sendmmsg для отправки информации порциями по 1024 пакета за раз, и программы для приема данных, использующая системный вызов recvmmsg, более эффективный чем recv благодаря пакетной обработке данных.

Первый вариант приложения продемонстрировал производительность отправки данных в диапазоне от 197 до 350 тысяч пакетов в секунду. Непостоянство производительности объяснялось миграцией обработчиков между ядрами CPU. После жесткого закрепления программы за одним ядром CPU возросла эффективность кэша и производительность стабилизировалась на отметке в 350 тысяч пакетов в секунду. Следующим шагом стало распараллеливание отправки в несколько нитей, генерация пакетов значительно возросла, но принимающая программа не смогла обработать больше чем при первой попытке, уперевшись в производительность ядра CPU, выполняющего код приложения.

Данное ограничение удалось преодолеть при помощи задействования нескольких принимающих очередей (RX queue), привязанных к разным CPU и закреплённых за разными IP–адресами. Распределение запросов по двум принимающим очередям увеличил производительность до 650 тысяч пакетов в секунду. Попытка дальнейшего увеличения числа RX–очередей привела к очередному узкому месту – несмотря на то, что сетевая карта справлялась с доставкой пакетов ядру, ядро оказалось не способно доставить их приложению, которое не успевало их принимать. Увеличение числа принимающих нитей, из–за ограниченного размера буфера UDP, не улучшило положение.

Источник: opennet.ru
Копировать, распространять, публиковать информацию портала News.lt без письменного согласия редакции запрещено.

Комментарии Facebook

Новый комментарий


Captcha

статьи по схожей тематике

Google запустил онлайн-регистратуру

Один из ведущих поисковиков Google в тестовом режиме запустил сайт в рамках проекта Google Health, который позволит пациентам Кливлендской клиники самостоятельно вести свои медицинские карты. дальше »

Федеральный суд США закрыл сайт международного компромата

Федеральный суд США в понедельник закрыл интернет-сайт Wikileaks.org, специализирующийся на публикации компрометирующих материалов, поступающих из анонимных источников. дальше »

ICANN будет регистрировать новые корневые домены

Организация ICANN, в ведении которой находится система доменных имён, закончила составление списка требований к новым доменам первого уровня. дальше »

Взломан сайт белорусского ЦИКа

Сайт Центральной комиссии Республики Беларусь по выборам и проведению республиканских референдумов был взломан вчера утром. дальше »

К 2012 г. в мире будет 1,7 млрд. интернет-пользователей

Kоличество пользователей интернета в 2012 г. составит 24,5% от общего числа жителей Земли. дальше »

Китай ужесточает правила размещения видео в интернете

Власти Китая ввели очередное ограничение на работу в глобальной сети для местных пользователей. дальше »

Google научился переводить кириллицу в латиницу

Самая крупная в мире поисковая система Google стала по-новому обрабатывать кириллические запросы. дальше »

С одним паролем на все сайты

Гиганты компьютерной индустрии – Microsoft, IBM, Google и Yahoo объединили свои усилия для разработки системы Open ID, упрощающей процесс авторизации в интернете. дальше »

Яндекс установил сетевое оборудование в Европе

Яндекс установил собственное сетевое оборудование в европейской точке обмена трафиком (DE-CIX) во Франкфурте. дальше »

Литовцы не любят покупать через Интернет

Покупки по Интернету делают всего 6 проц. литовцев. дальше »