OSChoose

Материал из OpenWiki
Перейти к: навигация, поиск

Большое число нитей

В Solaris лучшая реализация нитей, без проблем выдерживающая работу под большими нагрузками.

В Linux ядре 2.6 поддержка нитей NPTL заметно хуже. Если созданное один раз большое фиксированное число тредов еще как-то работает (хотя на разных 2.6 ядрах наблюдались проблемы связанные со стабильностью), то производительность динамически создаваемых тредов (постоянно создаются новые и убиваются старые) оставляет желать лучшего.

Во FreeBSD ситуация еще хуже. Для MySQL во FreeBSD 6 оптимальным является использование реализации 1:1 тредов - libthr. Использование m:n библиотеки libpthread показывает более низкие результаты. В более ранних версиях FreeBSD MySQL рекомендуется собирать с linuxthread. (В настоящее время родная реализация нитей работает лучше чем в Linux )

Большое число процессов

Linux лидирует, FreeBSD тоже нормально (если до своппинга дело не доходит). (это какие годы/версии?)

Мультиплексирование I/O

Лучшее решение - kevent/kqueue в FreeBSD, потом epoll в Linux. В Solaris 10 - event ports.

Многопроцессорные системы

Лучшая реализация в Solaris. Linux прекрасно работает в SMP системах с числом процессоров как 4--8, так и до 1024. Во FreeBSD < 5.x поддержка SMP хуже (Это не относится к последним версиям 7.2 и выше).

Итог

Linux - 9, FreeBSD - 6, Solaris - 8. Данное сравнение далеко не исчерпывающее. Таким образом, Solaris подходит для приложений, в которых критична высокая параллельность вычислений (или одновременное обслуживание большого числа клиентов), Linux - для использования на серверах небольшой мощности, нагрузка на которые стабильна и почти не меняется с течением времени. FreeBSD будет неплохо обслуживать сервер БД или файл-сервер. противоречит первой части статьи

Ссылки


PS. По первым двум пунктам желателен современный источник, набор ссылок в конце охватывает практически только FreeBSD.