Отчёт о развитии FreeBSD за первый квартал 2016 года

6 мая 2016 года

Опубликован отчёт о развитии проекта FreeBSD с января по март 2016 года.

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

  • Системы хранения и файловые системы
  • В состав FreeBSD 11-CURRENT добавлен код, реализующий в механизме управления ресурсами RCTL возможность ограничения пропускной способности операций с файловой системой. Поддерживается ограничение полосы пропускания чтения/записи (байт в секунду) и интенсивности операций ввода/вывода (число операций чтения/записи в секунду). Также представлен новый механизм придерживания запуска процессов в условиях превышения лимита;
  • В дерево исходных текстов FreeBSD добавлен планировщик ввода/вывода CAM I/O scheduler, который позволяет разделять различные типы ввода/вывода, давая возможность привязать ограничения к типам и характеристикам ввода/вывода (в том числе учитывать задержки при обработке недавних запросов, относительно средних показателей). Например, можно сделать операции чтения более приоритетными, чем запись, контролировать пропускную способность, интенсивность запросов и число одновременных операций, собирать статистику о вводе/выводе.

Планировщик удобно использовать для адаптации системной нагрузки к производительности SSD-накопителей или для решения специфичных задач, таких как отдача данных для потокового вещания видео. По умолчанию планировщик отключен, для активации следует пересобрать ядро с опцией "options CAM_ADAPTIVE_IOSCHED" ( CAM_NETFLIX_IOSCHED?);

  • Для FreeBSD развивается порт распределённого хранилища Ceph. Порт пока охватывает только объектное хранилище RADOS (Object Storage). Блочное устройство RBD (Ceph Block Device) и файловая система CephFS пока не портированы. Итоговой целью проекта является предоставление возможности развёртывания кластера Ceph с узлами хранения на базе FreeBSD и ZFS, а также поддержка запуска виртуальных машин bhyve на виртуальных дисках, развёрнутых поверх блочного устройства Ceph RBD;
  • Во FreeBSD HEAD улучшена производительность и повышена стабильность модуля filemon, предназначенного для отслеживания

файловых операциях других процессов. Например, filemon может применяться вместе с bmake для контроля зависимостей при сборке;

  • Система
  • Обеспечена экспериментальная поддержка использования компоновщика lld, развиваемого проектом LLVM, для динамического связывания объектных файлов FreeBSD. Началось формирование тестовых сборок базовой системы FreeBSD/amd64 с применением lld вместо GNU BFD ld. Ещё наблюдаются отдельные проблемы, но, в целом, lld уже может использоваться при сборке пользовательского окружения FreeBSD. Для загрузчика и ядра FreeBSD lld пока непригоден из-за ограничений в вычислении выражений в скриптах компоновки и отсутствия поддержки некоторых опций;
  • Для libthr представлена реализация блокировок, разделяемых между процессами (блокировки с атрибутом PTHREAD_PROCESS_SHARED), не нарушающая совместимость ABI.
  • В загрузчике UBLDR реализована возможность многослойных конфигураций FDT (Flattened Device Tree), описывающих не только встроенные аппаратные ресурсы, но и подключаемые к плате компоненты (например, LCD и GPS, подключенные к Raspberry Pi, будут отображены в отдельном слое FDT, который дополнит базовый слой);
  • Проведена проверка ядра FreeBSD статическим анализатором PVS Studio, которая выявила около 1000 подозрительных фрагментов в коде, которые с большой вероятностью являются ошибками или неаккуратным кодом. Многие из этих ошибок уже исправлены или идентифицированы как ложные срабатывания;
  • Обновлён инструментарий для работы с объектными файлами в формате ELF, эквивалентный набору GNU Binutils, но распространяемый под лицензией BSD. Внесены существенные улучшения в работу утилит elfcopy, readelf и elfdump, добавлена поддержка архитектур RISC-V и AArch64. Предлагаемая инструментарием утилита elfcopy теперь поставляется как objcopy. Готовятся к замене утилиты objdump, ld и as;
  • Во FreeBSD HEAD продолжена работа по усовершенствованию системы сборки buildworld. В качестве опции реализован режим WITH_FAST_DEPEND, позволяющий обойтись без запуска "make depend" за счёт генерации файлов ".depend" во время компиляции. При активации режима время сборки сокращается на 15-35%. Налажена работа режимов WITHOUT_TOOLCHAIN и WITHOUT_CROSS_COMPILER (с опцией "--sysroot");
  • Сетевая подсистема
  • Расширены возможности сервера NFS. В демон nfsuserd добавлена новая опция "-manage-gids", позволяющая на стороне сервера жестко привязать список сопоставления групп с идентификаторами пользователей без обработки списков групп через запросы NFS RPC. Указанная опция позволяет обойти лимит NFS RPC в 16 групп при использовании режима AUTH_SYS. Кроме того, отмечается работа над поддержкой pNFS для NFS-серверов, использующих бэкенд GlusterFS;
  • Компания Mellanox готовит значительное обновление стека Infiniband - Mellanox OFED v3.2 (Mellanox OpenFabrics Enterprise Distribution). Изменения коснулись компонентов ядра (ibcore), драйверов (mlx4/mlx5) и библиотек (librdma, libibverbs);
  • Изолированные окружения, эмуляторы, безопасность и ограничения ресурсов
  • Доступен для тестирования патч с реализацией механизма защиты ASLR (Address Space Layout Randomization) для FreeBSD, рандомизирующий отображение в память (memory mapping) любых нефиксированных структур. Выбор случайного смещения базового производится с учётом запрошенного выравнивая по границе суперстраницы и минимизации фрагментации в таблице страниц памяти. Включение ASLR поддерживается для архитектур i386, amd64 (+compat 32-bit) и ARMv6. Патч не основан на реализации ASLR от проекта HardenedBSD, так и не перенесённой в кодовую базу FreeBSD;
  • Продолжается развитие набора FreeBSD Integration Services (BIS), предоставляющего средства для работы в гостевых системах под управлением гипервизора Hyper-V и облачной платформы Azure. Ведётся работа по увеличению производительности, стабильности и функциональности драйверов для синтетических сетевых адаптеров и устройств хранения HyperV. Проведён рефакторинг драйвера VMBus. Готовятся для включения поддержка live-бэкапов, операций TRIM/Unmap и виртуальных машин с интерфейсом UEFI (Hyper-V Generation-2 VM);
  • Поддержка оборудования
  • Загружен для рецензирования переработанный стек MMC/SD (Архивная копия от 10 марта 2016 на Wayback Machine), переведённый на использование фреймворка CAM, что позволило задействовать в нём уже хорошо проверенную модель организации блокировок и средства для отладки, а также делает возможным обработку прерываний при подключении карты, необходимую для реализации поддержки интерфейса SDIO. Новый стек также позволяет использовать интерфейс CAM для отправки SD-команд из приложений в пространстве пользователя, что даёт возможность создавать драйверы устройств, работающие на уровне пользователя. За отчётный период был подготовлен новый драйвер imx_sdhci для SD-контроллеров iMX, который дополнил собой драйвер ti_sdhci для SD-контроллеров плат BeagleBone Black;
  • Доступна новая

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Отчёт о развитии FreeBSD за первый квартал 2016 года», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.