Эксперимент по реализации http-сервера, взаимодействующего напрямую с сетевым адаптером

Материал из Викиновостей, свободного источника новостей
Перейти к навигации Перейти к поиску

12 декабря 2013 года

<dynamicpagelist>

category = Опубликовано category = Компьютерные технологии notcategory = Не публиковать notcategory = Ожидаемые события по датам notcategory = Архивные новости notcategory=Викиновости коротко count = 18 stablepages = only suppresserrors = true namespace = Main addfirstcategorydate = true ordermethod = created </dynamicpagelist>

Wikinews-logo-ru.svg

Группа исследователей, среди которых небезызвестный разработчик FreeBSD Роберт Ватсон, провела эксперимент ( отчёт в PDF) по оценке эффективности реализации высокопроизводительного TCP/IP стека, работающей в пространстве пользователя и напрямую взаимодействующей с сетевой картой для отправки пакетов, минуя дополнительные прослойки и исключая операции копирования данных (zerocopy).

Для тестов был создан http-сервер Sandstorm, написанный с задействованием Netmap Framework для маппинга буфера сетевой карты в пространство пользователя и прямого взаимодействия с сетевым адаптером, минуя сетевую подсистему ядра ОС. В Sandstorm используется собственная реализация слоя для работы с Ethernet и легковесный TCP/IP-стек. TCP/IP-стек был оптимизирован специально для отдачи файлов небольшого размера, что дало преимущество перед штатными TCP-стеками Linux и FreeBSD, которые спроектированы для обеспечения высокой пропускной способности при длительных передачах (например, при передаче файлов по 8 Кб была достигнута 85% загрузка CPU, но удалось задействовать только половину возможной пропускной способности сетевого адаптера).

В итоге эксперимента, удалось добиться производительности сервера Sandstorm, заметно опережающей системы, использующие штатный системный TCP/IP стек. Например, Sandstorm продемонстрировал пропускную способность, заметно опережающую nginx, при этом меньше нагружал CPU.

Результаты тестирования на сервере с четырёхъядерным CPU Intel Xeon E5-2643, 128GB ОЗУ и двухпортовой картой Intel 82599EB 10Gb:

На менее мощном сервере (8GB ОЗУ, двухъядерный CPU Intel Xeon X5355 и идентичная двухпортовая карта Intel 82599EB 10Gb) разница более заметна:

При тестировании на сервере с четырёхъядерным CPU Intel Xeon E5-2643, 128GB ОЗУ и 6 сетевыми контроллерами Sandstorm обогнал конфигурации nginx в три раза:

Код Sandstorm планируется открыть под свободной лицензией в течение нескольких месяцев, после его доработки до пригодного для широкого использования вида. В дальнейшем, используя наработки проекта не исключается создание иных серверных приложений, поставляемых с собственным TCP-стеком, оптимизированным для конкретных задач и типа нагрузки.

 

Источники[править]


OpenNET logo.png
Creative Commons
Эта статья содержит материалы из статьи «Эксперимент по реализации http-сервера, взаимодействующего напрямую с сетевым адаптером», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Cartoon Robot.svg
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
 

Комментарии:Эксперимент по реализации http-сервера, взаимодействующего напрямую с сетевым адаптером