Грегори МакГарри (Gregory McGarry) провел обстоятельное и достаточно интересное сравнение производительности двух популярных BSD-систем: NetBSD 2.0 и FreeBSD 5.3. Согласно этому тесту разработчики NetBSD действительно потрудились на славу и версия 2.0 более чем заслуживает именно такого номера - практически во всех тестах NetBSD оказалась быстрее и сейчас вполне обоснованно претендует на звание лучшей операционной системы для серверных применений.
Тесты проводились на компьютере с материнской платой Asus P4-800SE, процессором Intel P4 3ГГц (1MB L2 кэша) и 1ГБ оперативной памяти. Обе операционные системы устанавливались "по умолчанию" и никаких настроек ядер или их перекомпиляций не проводилось.
Использовались тесты сразу трех категорий. В первой категории измерялась функциональность ядра операционной системы:
- потери производительности на системный вызов
- время переключения контекстов
- время создания процесса
- время завершения процесса
- время загрузки программы
Во второй категории измерялась масштабируемость операционной системы при нагрузках приложениями или сетевой активностью:
- время создания процесса при возрастающей нагрузке
- время завершения процесса при возрастающей нагрузке
- время инициализации отображенного в память файла
- время доступа к отображенному в память файлу
- время создания сокета
- латентность связывания адреса с сокетом
Последняя категория измеряла затраты производительности на реализацию родной модели потоков:
- время создания потока при возрастающей нагрузке
- потери производительности за жизненный цикл потока
- затраты на доступ к неоспариваемому мьютексу
- время доступа к переменным условия
- время переключения контекста потоков
В первой группе тестов NetBSD уверенно взяла верх, особенно отличившись во времени загрузки программы - в 2.5-3 раза быстрее, чем FreeBSD.
Из второй группы тестов выделяется время создания и завершения процессов - в NetBSD оно практически не зависит от количества уже запущенных процессов и при большой нагрузке разница с FreeBSD становится очень значительной. В деле отображения файлов в память обе системы показали себя с лучшей стороны - зависимости от количества запущенных процессов практически не прослеживается в обоих случаях, но здесь FreeBSD показала себя, пожалуй, с лучшей стороны - хотя на отображение файла в память у NetBSD ушло в два раза меньше времени, последующий доступ к этому файлу в FreeBSD происходил все же в два раза быстрее, и если брать типичную нагрузку, когда файл отображается и потом идет периодический доступ к нему, то FreeBSD будет на около 38% впереди. Время создания сокетов в обоих системах отлично масштабируется, но NetBSD здесь опять оказалась быстрее, а вот результат по связыванию адреса с сокетом уже интереснее - при малых нагрузках NetBSD быстрее, но когда нагрузки становятся выше, масштабируемость NetBSD оказывается не лучшей и она уступает FreeBSD.
Также FreeBSD заметно лучше масштабируется по времени создания потоков - до 250 потоков NetBSD идет впереди, но затем начинает заметно проигрывать FreeBSD. Зато в работе с потоками NetBSD в разы опередила FreeBSD, особенно это заметно в операциях с мьютексами, время доступа в 0.0372 микросекунды и время доступа в 0.282 микросекунды - почувствуйте разницу. И эта разница была явно продемонстрирована дальнейшим тестом "пинг-понг", хотя время создания потоков в первых двух тестах у NetBSD выше, по времени завершения теста она значительно быстрее во всех трех раундах.
Автор теста отмечает, что хотя такие микро-тесты (по размеру каждой тестируемой операции) явно недостаточны для того, чтобы делать выводы о производительности операционной системы в целом, они все же полезны для понимания архитектурных решений, заложенных в системы. Также было бы интересно сравнить производительность систем на SMP аппаратуре, последние изменения в FreeBSD здесь скорее всего покажут хорошие результаты.
Полностью с результатами, графиками и выводами можно ознакомиться здесь ().
|