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

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

Группа исследователей, среди которых небезызвестный разработчик 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-стеком, оптимизированным для конкретных задач и типа нагрузки.

Источники

править


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

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.