Релиз операционной системы DragonFly BSD 5.6
17 июня 2019 года
Доступен релиз DragonFlyBSD 5.6, операционной системы с гибридным ядром, созданной в 2003 году с целью альтернативного развития ветки FreeBSD 4.x. Из особенностей DragonFly BSD можно выделить распределённую версионную файловую систему HAMMER, поддержку загрузки "виртуальных" ядер системы как пользовательских процессов, возможность кэширования данных и мета-данных ФС на SSD-накопителях, учитывающие контекст вариантные символические ссылки, возможность заморозки процессов с сохранением их состояния на диске, гибридное ядро, использующее легковесные потоки (LWKT).
Основные улучшения, добавленные в DragonFlyBSD 5.6:
- Проведена модернизация системы управления виртуальной памятью. Переписаны многие подсистемы, связанные с виртуальной памятью и PMAP.
Во многих местах код избавлен от блокировок, в том числе в функциях m_page_wakeup, vm_hold и vm_unhold. Повышена эффективность использования процессорного кэша за счёт сокращения миграция объектов VM между ядрами CPU и уменьшения накладных расходов при обработке исключений (page-fault) для совместно используемых областей памяти. Улучшен алгоритм выделения страниц памяти. Устранены задержки при работе функции vm_page_alloc(). Добавлен API vm_page_hash*(), позволяющий выполнять выборки без блокировок.
В итоге удалось заметно поднять производительность. Например, в тесте buildkernel время выполнение операций на стороне ядра сократилось на 40%. Пропускная способность увеличилась на 7% при использовании CPU семейства Haswell и на 14% для Xeon. В тесте SELF-EXEC S/DI по сравнению с прошлым выпуском отмечается прирост производительности на 23% для Haswell и 18% для Xeon. В тесте SELF-EXEC S/SH соответственно 28% и 71%, в SELF-EXEC D/DI - 23% и 242% (за счёт улучшения работы многопоточности), в SELF-EXEC D/SH на 24% и 234%, в FAULTZF на 17% и 14%, в DOCOMP на 22% и 42%, в NATIVEKERNEL на 5.1% и 8.1%;
- Значительно обновлён драйвер DRM и менеджер управления видеопамятью TTM для видеокарт AMD, но последние версии видеокарт, в том числе APU Ryzen, не поддерживаются. Улучшена поддержка фреймбуфера UEFI. В radeon/ttm устранена негативно влияющая на производительность взаимная блокировка. Проведён рафакторинг выставления задержек в процессе загрузки для избежания конфликта между драйвером i915 и X-сервером. Добавлен вызов DRM_IOCTL_GET_PCIINFO для улучшения поддержки mesa/libdrm. Устранены многие ошибки и недоработки;
- Переписан код синхронизации в файловой системе HAMMER2, что позволило существенно повысить производительность данной ФС. Также увеличена производительность операций последовательной записи.
Для повышения стойкости к крахам добавлено отслеживание зависимостей для исключения разделения каталогов/файлов в процессе выполнения операций создания, переименования или удаления. Переработан код работы со снапшотами для снижения задержек и гарантирования непротиворечивости снапшота. Улучшена обработка одновременных операций записи и сброса кэша на диск (flush). Улучшена реализация операции umount. Повышена информативность сообщений о нарушений целостности (CRC error).
HAMMER2 рекомендуется в качестве корневой файловой системы по умолчанию. Поддержка кластеризации пока недоступна. ФС HAMMER2 примечательна такими функциями, как отдельное монтирование снапшотов, доступные на запись снапшоты, квоты на уровне директорий, инкрементальное зеркалирование, поддержка различных алгоритмов сжатия данных, multi-master зеркалирование с распределением данных на несколько хостов;
- Добавлена начальная поддержка подсистемы FUSE для создания файловых систем в пространстве пользователя;
- Увеличена производительность пакетного фильтра PF на многоядерных системах;
- Реализована поддержка механизмов защиты SMAP (Supervisor Mode Access Prevention) и SMEP (Supervisor Mode Execution Prevention) при их поддержке в CPU. SMAP позволяет блокировать доступ к данным в пространстве пользователя из привилегированного кода, выполняемого на уровне ядра. SMEP не даёт переходить из режима ядра к выполнению кода, находящегося на пользовательском уровне, что позволяет блокировать эксплуатацию многих уязвимостей в ядре (shell-код не будет выполнен, так как он находится в пространстве пользователя);
- Добавлен код для блокирования атак класса MDS (Microarchitectural Data Sampling) в процессорах Intel. Для работы требуется наличие обновлённого микрокода. По умолчанию защита отключена и включается через 'sysctl machdep.mds_mitigation=MD_CLEAR'. Включение приводит к появлению дополнительной задержки на уровне 250ns при переключении контекста между пространством пользователя и ядра;
- Ядро собрано по умолчанию с защитой retpoline от атак Spectre.
- Многие утилиты из базовой системы переведены на использование LibreSSL;
- Обновлены версии сторонних компонентов, в том числе xz 5.2.4,
libarchive 3.3.3, libressl 2.9.1, openssh 8.0, ldns 1.7.0, libedit 2019-03-24. Из FreeBSD перенесены evdev, makefs, ministat, libfetch, dd. Из OpenBSD в libc перенесены вызовы reallocarray(), timing_safe*(), freezero(), dup3(), recallocarray(), aligned_alloc(),explicit_bzero(). По умолчанию для сборки вместо gcc-5 задействован компилятор gcc-8.
Источники
править- Главная ссылка к новости (https://www.dragonflydigest.co...) (Архивная копия от 24 сентября 2020 на Wayback Machine)
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.