Отчёт о состоянии развития FreeBSD за первый квартал 2013 года
14 мая 2013 года
Представлен отчёт о развитии проекта FreeBSD с января по март 2013 года. В указанный период наиболее важными событиями стали подготовка выпуска 8.4-RELEASE, восстановление сборки бинарных пакетов, обеспечение поддержки плат Cubieboard и Hackberry, прогресс в портировании новых выпусков X.Org, GNOME, KDE и Xfce, разработка поддержки GPU AMD, увеличение производительности UFS/FFS, реализация поддержки multipath TCP в сетевом стеке.
Одновременно сообщается о возобновлении доступа к бинарным пакетам, которые полгода назад были убраны из публичного доступа в связи с обнаружением следов взлома двух серверов, участвующих в сборке пакетов.
Основные достижения:
- Сетевая подсистема
- Доступны первые три выпуска реализации MPTCP (Multipath TCP) для ядра FreeBSD. MPTCP позволяет организовать работу TCP-соединения с доставкой пакетов одновременно по нескольким маршрутам, что может использоваться как для увеличении надёжности, так и для расширения пропускной способности. Код отмечен как имеющий качество альфа-выпуска, готового для начальных экспериментов и тестирования. В дальнейшем разработчики намерены обеспечить полную совместимость с реализацией MPTCP, развиваемой для ядра Linux. Основной целью проекта является создание платформы для исследования особенностей передачи данных с мультиплексированием нескольких маршрутов (multipath) в плане применения различных алгоритмов управления перегрузкой, стратегий повторной отправки пакетов и выработки правил планирования отправки пакетов. В настоящее время ведётся работа по перемещению разработки в SVN репозиторий FreeBSD и ежедневному формированию готовых тестовых iso-образов с преднастроенной для работы MPTCP сборкой FreeBSD;
- Поддержка расширения TCP-AO (TCP Authentication Option, RFC5925, RFC5926), позволяющего использовать цифровые подписи TCP-MD5 для аутентификации сеанса, например, для защиты от спуффинга сеансов BGP на маршрутизаторах;
- Системы хранения и файловые системы
- Выполнена работа по оптимизации производительности файловых систем UFS/FFS. Наиболее заметным улучшение стало значительное ускорение выполнения полной проверки целостности ФС утилитой fsck, а также ускорение случайного доступа к большим файлам и увеличение скорости прохождения по дереву директорий. Ускорение достигнуто за счёт более активного кэширования и оптимизации размещения метаданных на диске (метаданные размещаются рядом со связанными с ними блоками inode). Наработки уже интегрированы в ветку HEAD и в течение мая запланированы для включения в ветки 9-STABLE и 8-STABLE.
- Проект по созданию нативного iSCSI стека расширен и помимо iSCSI Target теперь включает новую реализацию iSCSI Initiator. По сравнению с ранее поставляемым iSCSI Initiator, новый вариант отличается более высокой надёжностью и производительностью, он также гораздо проще в администрировании. Для упрощения миграции со старого iSCSI Initiator в новом обеспечена совместимость на уровне файлов конфигурации. Что касается реализации iSCSI Target, то она проверена на совместимость со многими iSCSI Initiator, доступными для FreeBSD, Linux, Solaris, Windows и VMWare ESX. Из планов на будущее отмечается проведение оптимизации производительности и реализация поддержки RDMA;
- Для FreeBSD портирована реализация файловой системы UDF, развиваемая проектом NetBSD. Возможности порта пока ограничены доступом только на чтение. ФС UDF обычно используется на дисках CD, DVD и Blu-Ray. В отличие от ранее доступной во FreeBSD реализации UDF, новый порт поддерживает версию UDF 2.60 вместо устаревшего UDF 1.5, обеспечивает возможность переопределения прав доступа, владельца и группы для всех файлов/директорий через указание опции монтирования;
- Изолированные окружения, эмуляторы, безопасность и ограничения ресурсов
- Представлен рабочий прототип реализации поддержки аккаунтинга ввода/вывода блочных устройств, выполненной на базе фреймфорка RACCT, используемого для аккаунтинга и лимитирования потребления ресурсов;
- Система
- В core-файлы, создаваемые при крахе пользовательских процессов, обеспечено помещение дополнительной информации от ядра системы, которую для работающего процесса можно посмотреть через команду procstat. Например, теперь сохраняется список открытых дескрипторов и состояние лимитов на ресурсы. В дальнейшем возможность извлечения из core-файла сохранённого во время краха среза состояния будет добавлена в libprocstat и доступна для просмотра через procstat. Связанные с указанной возможностью изменения уже добавлены в HEAD и ожидают помещения в stable/9;
- Реализация атомарной установки флага "close-on-exec" для предотвращения утечки файловых дескрипторов в дочерние процессы при вызове fork() и exec() в нитях и обработчиках сигналов. В настоящее время флаг уже атомарно устанавливается в функциях recvmsg(), socket(), socketpair() и posix_openpt();
- Реализован новый программный интерфейс callout_*(), который предлагается использовать в ядре вместо timeout()/untimeout() для организации вызова функций в определённый момент в будущем. Новая реализация решает проблемы с вызовом событий с высокой точностью и устраняет зависимость от периодических структур, приводящих к лишним пробуждениям процессора, которые приводят к повышению энергопотребления. Более точный вызов событий актуален для таких применений, как VoIP, приложения режима реального времени и высокопроизводительные сетевые операции;
- Поддержка оборудования
- Продолжается активная разработка проекта по добавлению во FreeBSD поддержки переключения видео-режимов на уровне ядра (Kernel Mode Setting) для видеокарт AMD. В целом драйвер уже более-менее работоспособен, позволяет запустить X-сессию, управлять параметрами мониторов через xrandr, обеспечивает работу большинства не использующих OpenGL приложений, в том числе даёт возможность просматривать видео. В ветку FreeBSD 10-CURRENT принят код с реализацией механизма управления видеопамятью TTM (Translation Table Maps), значительно улучшена поддержка Video BIOS, устранены проблемы при подключении монитора через DVI и HDMI и чтения параметров EDID, ведётся работа по бэкпортированию драйвера для ветки 9-STABLE. Областью ещё не готовой для тестирования, в которой остаются нерешённые проблемы, является поддержка OpenGL;
- Началась работа по реализации во FreeBSD/arm поддержки средств для манипуляции страницами памяти большого размера (SuperPages), поддерживаемыми процессорами ARMv7. Необходимость поддержки SuperPages обусловлена тенденциями выхода ARM-систем на серверный рынок. Поддержка данной технологии позволит увеличить эффективность и производительность работы FreeBSD на серверных ARM-системах, благодаря обеспечению средств трансляции TLB для динамического покрытия больших областей памяти;
- Осуществлён переход на Clang в качестве компилятра по умолчанию для порта FreeBSD/ARM. Выявленные в процессе адаптации clang проблемы переданы вместе с патчами для исправления в upstream.
- В состав FreeBSD CURRENT включён начальный порт для Allwinner A10 SoC, позволяющий запустить FreeBSD на таких платах, как Cubieboard и Hackberry. Из периферии поддерживается USB EHCI и GPIO, в ближайшее время планируется обеспечить работу EMAC Ethernet и других драйверов;
- Приложения и система портов
- Добавлен новый порт i386-wine, обеспечивающий возможность запуска 32-разрядной версии Wine (и 32-разрядных программ для Microsoft Windows) на 64-разрядной системе FreeBSD/amd64;
- Дерево портов FreeBSD преодолело отметку в 24,300 портов, число незакрытых PR держится на уровне 1600. После завершения аудита последствий инцидента нарушения безопасности, возвращён к работе сайт redports.org и сервис Tinderbox. Официально прекращено распространение дерева портов через CVS, оставлен только доступ через систему контроля версий Subversion;
- Выпущено обновление FreeNAS 8.3.1, которое базируется на FreeBSD 8.3 и поддерживает ZFSv28. Из наиболее важных изменений по сравнению с прошлым выпуском отмечается реализация поддержки шифрования разделов ZFS. Кроме того, в новом выпуске проведена работа по увеличению удобства работы в web-интерфейсе, обновлена реализация iscsi target, в поставку включены драйверы Virtio, обновлена версия пакета Samba, добавлена функция инициализации дисков c заполнением случайным набором данных. Версия FreeNAS 8.3.1 является последним выпуском на базе FreeBSD 8.x. В настоящее время ведётся работа по миграции на ветку FreeBSD 9.X, обеспечению поддержки NFSv4, добавлению средств для настройки HAST в web-интерфейс, интеграции новой реализации iSCSI target;
- Проведена адаптация новых версий десктоп-оболочки KDE и фреймворка Qt для FreeBSD. В порты помещены релизы KDE SC 4.9.5, 4.10.1, Qt: 5.0.0 (area51) и 4.8.4, KDevelop 4.4.1, Calligra 2.6.2, Amarok 2.7.0,
Digikam (+ KIPI-plugins) 3.1.0 (area51), QtCreator 4.6.1 и KDE Telepathy 0.6.0 (area51). По данным сервиса PortScout(недоступная ссылка) доступен 431 связанный с KDE порт, из которых 93.5% портов содержат свежие версии приложений;
- В портах обновлены компоненты элементами десктоп-окружения Xfce: tumbler 0.1.27, Parole 0.5.0, xfdesktop 4.10.2, Midori 0.4.9/0.5.0, Orage 4.8.4 и xfce4-terminal 0.6.1;
- В порты интегрированы новые версии библиотек Glib 2.34, Gtk+ 2.24.17 и Gtk+ 3.6.4. Обновлены связанные с GNOME компоненты, такие как libsoup, gobject-introspection, atk, vala, telepathy stack и empathy. Началась работа по обновлению порта GNOME до версии 3.6. Подготовлен порт с окружением Mate 1.6, который в скором времени будет включён в составе штатного дерева портов;
- Добавлен порт с графическим стеком на базе X.Org 7.7. Ведётся работа по переносу в порты новых версий MESA и xorg-server. В долгосрочной перспективе планируется обеспечение поддержки Wayland;
- Добавлен порт с PyPy 2.0, высокопроизводительной реализацией языка Python, написанной на языке Python.
- Разное
- Введена в строй новая поисковая система по исходным текстам FreeBSD, OpenBSD, NetBSD и DragonFly BSD - bxr.su (BSD Cross Reference). Сервис представляет собой модифицированный и улучшенный движок OpenGrok, переписанный для работы с nginx. Проект отличается от предыдущих установок OpenGrok тем, что поиск работает в 200 раз быстрее (например, чем code.metager.de), а адреса индивидуальных файлов и поисковых запросов являются намного более короткими, понятными и лаконичными;
- Запущен сайт mdoc.su для быстрого проброса на системные руководства FreeBSD, NetBSD, OpenBSD и DragonFly через Web. Формат запроса - "mdoc.su/система/имя[.раздел]", например, "http://mdoc.su/f/ls" для просмотра "man ls" из состава FreeBSD. Логика работы сайта целиком определена средствами nginx (см. файл конфигурации).
- Обновлена инфраструктура проекта по подготовке документации. Осуществлён переход на DocBook 4.5, для генерации вывода XHTML задействован XSLT вместо DSSSL, обеспечена генерация PDF;
- Рассматривается вопрос внедрения альтернативной системы обработки информации об ошибках. В качестве основных кандидатов называются системы Bugzilla и roundup.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.