Группа исследователей, среди которых небезызвестный разработчик FreeBSD Роберт Ватсон, провела (http://perso.uclouvain.be/olivier.bonaventure/blog/html/2013...) эксперимент (отчёт в PDF (http://conferences.sigcomm.org/hotnets/2013/papers/hotnets-f...)) по оценке эффективности реализации высокопроизводительного TCP/IP стека, работающей в пространстве пользователя и напрямую взаимодействующей с сетевой картой для отправки пакетов минуя дополнительные прослойки и исключая операции копирования данных (zerocopy). Для тестов был создан http-сервер Sandstorm, написанный с задействованием Netmap Framework (http://info.iet.unipi.it/~luigi/netmap/) для маппинга буфера сетевой карты в пространство пользователя и прямого взаимодействия с сетевым адаптером, минуя сетевую подсистему ядра ОС. В 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:
<center><img src="http://www.opennet.ru/opennews/pics_base/0_1386867474.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border=0></center>
<center><img src="http://www.opennet.ru/opennews/pics_base/0_1386867488.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border=0></center>
На менее мощном сервере (8GB ОЗУ, двухядерный CPU Intel Xeon X5355 и идентичная двухпортовая карта Intel 82599EB 10Gb) разница более заметна:
<center><img src="http://www.opennet.ru/opennews/pics_base/0_1386866990.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border=0></center>
<center><img src="http://www.opennet.ru/opennews/pics_base/0_1386867003.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border=0></center>
Код Sandstorm планируется открыть под свободной лицензией в течение нескольких месяцев, после его доработки до пригодного для широкого использования вида.
URL: http://perso.uclouvain.be/olivier.bonaventure/blog/html/2013...
Новость: http://www.opennet.ru/opennews/art.shtml?num=38653