Сравнение производительности сетевой подсистемы DragonFly BSD, FreeBSD и ядра Linux

Разработчики операционной системы DragonFly BSD провели тестирование производительности сетевого стека в сравнении с сетевыми стеками FreeBSD и ядра Linux (3.10 из CentOS 7 и 4.9 из Debian). Тестирование производилось через симуляцию нагрузки на web-сервер и организацию двунаправленного перенаправления (forwarding) UDP-пакетов между сетевыми интерфейсами. Для отдачи статических файлов на сервере использовался nginx, а на генерации трафика на нескольких клиентских системах была запущена утилита wrk. В тесте на перенаправление пакетов для генерации пакетов использовались pktget и sink.

В тесте на обработку запросов в nginx DragonFly BSD опередил FreeBSD и показал производительность близкую к ядру Linux, а при оценке уровня задержек (latency) заметно опередил остальные системы. В тесте на перенаправление пакетов DragonFly BSD опередил FreeBSD и ядро Linux 3.10, но заметно отстал от ядра Linux 4.9. В ходе тестирования была выявлена проблема с масштабированием сетевой подсистемы DragonFly BSD на многоядерных CPU — при работе сетевого стека не использовались все доступные ядра, а только число ядер N^2, т.е. на 24-ядерной системе сетевой подсистемой использовалось только 16 ядер CPU. При выполнении сетевых приложений в пространстве пользователя такая особенность не оказывала влияния на производительность, по позволила сохранить высокую отзывчивость (незадействованные для выполнения сетевого стека CPU использовались для выполнения кода nginx). В тесте на перенаправление пакетов, в котором были задействованы только компоненты ядра, ощущался провал в производительности.

0_1488878567.png 0_1488878658.png

Полный текст статьи читайте на OpenNet