Обычно мы привыкли к обратным заголовкам: «OpenBSD медленнее», «Linux выигрывает по производительности». Но свежий тест Ted Unangst показал противоположное: в задаче массового создания TCP-сокетов OpenBSD оказался примерно в 10 раз быстрее Linux.
🧪 Суть эксперимента
Программа создаёт:
- один поток,
- далее оба потока открывают по 256 TCP-сокетов.
То есть всего 512 вызовов socket() подряд. Измерение ведётся не через time, а встроенными gettimeofday(), потому что стандартный time в OpenBSD оказался слишком «грубым» — время выполнения было настолько маленьким, что его трудно уловить.
📊 Результаты
- 🐧 Linux: 0.017–0.026 секунд
- 🐡 OpenBSD: 0.0023–0.006 секунд
Чтобы тест запустился в OpenBSD, пришлось увеличить лимит открытых файлов:
ulimit -n 1024
🔍 Почему так вышло?
Скорее всего, дело не в «магии сетевого стека», а в деталях реализации ядра:
- ⚙️ Управление файловыми дескрипторами в OpenBSD устроено проще и может быстрее работать при большом количестве короткоживущих сокетов.
- 🧩 Разные механизмы аллокации структур: Linux часто тратит больше времени на вспомогательные проверки.
- 🔒 Безопасность и overhead — парадоксально, но в данном конкретном сценарии OpenBSD с жёсткими проверками оказался быстрее, чем «гибкий» Linux.
🧭 Моё мнение
Важно понимать: этот бенчмарк очень узкий. Он не показывает, что OpenBSD быстрее Linux «во всём». Наоборот, в реальных нагрузках (например, под высокочастотный трейдинг или тяжёлые базы данных) Linux почти всегда лидирует.
Но сам факт интересен: мы привыкли думать, что OpenBSD — это только про безопасность и консервативность, а не про скорость. А тут получаем напоминание: иногда аккуратный дизайн ядра побеждает оптимизацию ради универсальности.
✅ Вывод
Этот случай — отличный пример того, почему нельзя доверять только синтетическим тестам. Иногда «медленная» система неожиданно оказывается быстрее в конкретном узком сценарии. И наоборот.
Для инженеров вывод прост: тестируйте под свою задачу, а не под чужие графики.
🔗 Источник: