Отчёт о состоянии развития FreeBSD за второй квартал 2012 года

После восьмимесячного перерыва возобновлена публикация отчётов о развитии проекта FreeBSD. Доступен отчёт с апреля по июнь 2012 года. В конце февраля планируется опубликовать отчёт с июля по декабрь 2012 года.

Основные достижения:

  • Система
    • Во FreeBSD 10-CURRENT по умолчанию задействован распространяемый под лицензией BSD вариант утилиты sort (bsdsort), написанный с целью замены GNU sort. Новая утилита близка по производительности и совместима c утилитой sort из состава пакета GNU coreutils 8.15, за исключением поддержки многопоточности, которая пока отключена по умолчанию. Из планов на будущее отмечается повышение стабильности работы в многопоточном режиме и вынос базовой функциональности в отдельную библиотеку libsort, которую смогут использовать и другие утилиты;
    • В дерево портов добавлен (sysutils/fsc) проект FSC (FreeBSD Services Control), в рамках которого развиваются похожие на Solaris SMF и daemontools инструменты для управления и мониторинга работой системных сервисов. Для контроля за работой сервисов используется фоновый процесс fscd, сервисы добавляются при помощи утилиты fscadm. В случае аварийного завершения работы сервиса, fscd распознает падение процесса и запускает сервис вновь. По сравнению со сторонними пакетами, такими как daemontools, система FSC имеет несколько преимуществ, например fscd использует push-нотификацию вместо поллинга (отправляет уведомления, не требуя периодического опроса состояния). Кроме того, fscd является внутренней подсистемой, легко интегрируемой в rc.d-инфраструктуру FreeBSD и полностью поддерживаемой разработчиками (daemontools является неподконтрольным портом для которого можно лишь поддерживать набор патчей). В новой версии FSC добавлены дополнительные возможности, связанные с управлением сервисами, загрузкой системы и упрощением процесса;
    • Продолжается работа по замене устаревшей реализации регулярных выражений в libc на библиотеку TRE, распространяемую под лицензией BSD, поддерживающую многобайтные символы, совместимую с POSIX и работающую не хуже других альтернатив. Близится к завершению разработка нового эвристического метода выявления соответствий с поддержкой поиска по множественным шаблонам (multi-pattern), который отличается заметным ускорением поиска по шаблонам. Проведён существенный рефакторинг кода проекта. Решено выделить из TRE оптимизации и расширения, реализовав их в виде отдельного изолированного уровня. Из планов на будущее отмечается добавление поддержки возможностей, специфичных для GNU grep, а также проведение тестирования на предмет соответствия стандартам и корректности работы;
  • Сетевая подсистема
    • Подготовлен и готовится к публикации код с начальной реализацией MPTCP (Multipath TCP) для ядра FreeBSD, что позволит организовать работу TCP-соединения с доставкой пакетов одновременно по нескольким маршрутам, что может использоваться как для увеличении надёжности, так и для расширения пропускной способности. Основной целью проекта является создание платформы для исследования особенностей передачи данных с мультиплексированием нескольких маршрутов (multipath) в плане применения различных алгоритмов управления перегрузкой, стратегий повторной отправки пакетов и выработки правил планирования отправки пакетов. Кроме того, разработчики намерены обеспечить полную совместимость с реализацией MPTCP, развиваемой для ядра Linux.
    • Близится к завершению проект обеспечению распараллеливания на SMP-системах пакетного фильтра PF (сейчас PF зависит от единого мьютекса и является по сути однопоточным). После завершения тестирования и изучения производительности многопоточный PF будет интегрирован во FreeBSD HEAD;
  • Поддержка оборудования
    • Во FreeBSD/arm обеспечена возможность работы на платформе ARM Fast Models в режиме симуляции SoC на базе многоядерного процессора Cortex-A15. В настоящее время обеспечена загрузка в однопользовательский режим с использованием RAM-диска с минимальным корневым окружением. Реализована поддержка L1 и L2 кэшей, двухядерных конфигураций, встроенного базового таймера, UART и контроллера прерываний. Пока не поддерживается задействование четырёх ядер CPU и загрузка в многопользовательском режиме;
    • Во FreeBSD/at91 проведена работа по упрощению реализации поддержки новых SoC Atmel за счёт ведения унифицированной базы .dsti-файлов с описанием особенностей чипов;
  • Приложения и система портов
    • Дерево портов FreeBSD приближается к отметке в 24 тысячи портов, число незакрытых PR держится на уровне 1200. Проведена миграция дерева портов с CVS на систему контроля версий Subversion;
    • Продолжается совершенствование проекта Portbuilder (ports-mgmt/portbuilder), предназначенного для организации параллельной одновременной сборки разных портов в несколько потоков. В процессе сборки имеется возможность контролировать нагрузку на систему через top-подобный интерфейс. Тестирование сборки порта KDE (x11/kde4) с использованием Portbuilder показало ускорение на 51%, время сборки уменьшилось с 4 часов 47 минут до 2 часов 21 минут. С момента прошлого отчёта выпущено два значительных и четыре корректирующих релиза portbuilder. Добавлена поддержка пакетного менеджера pkgng, обеспечена возможность установки пакетов из репозиториев, возможность определения параметров через /etc/make.conf, создан новый фреймворк для парсинга опций (OptionsNG);
    • Проведена работа по обновлению версий компонентов X.Org в портах. В порты помещён X.Org 7.5.2, обновлены драйверы, в том числе пакет Mesa и драйвер xf86-video-intel. Для сборки новой версии X.Org следует в /etc/make.conf использовать опцию WITH_NEW_XORG, для активации KMS для драйверов Intel нужно указать WITH_KMS;
    • Прогресс в адаптации новых версий десктоп-оболочки KDE и Qt для FreeBSD. В порты помещены свежие релизы: KDE SC 4.8.4 (4.9 в экспериментальном репозитории area51), Qt 4.8.2, CMake 2.8.8, PyQt 4.9.1, KDevelop: 2.3.1, KDevPlatform 1.3.1, Calligra 2.4.3, Digikam 2.6.0, Amarok: 2.5.90 (в area51). По данным сервиса PortScout доступно 393 связанных с KDE порта, из которых 91% содержат свежие версии приложений;
    • Расширены возможности redports.org, сервиса для разработчиков, коммитеров и мэйнтейнеров портов FreeBSD . Сервис позволяет организовать автоматическую сборку портов для различных архитектур и версий FreeBSD. Добавлены две дополнительные машины сборки, решены проблемы со стабильностью работы;

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