Официально представлен релиз FreeBSD 9.1. Обзор новшеств

30 декабря 2012 года

После года разработки официально анонсирован релиз FreeBSD 9.1. Установочные сборки, способные работать в Live-режиме, доступны в вариантах Bootonly, DVD, CD и Memstick для платформ amd64, i386, powerpc64 и ia64 (Архивная копия от 20 марта 2019 на Wayback Machine). Поддержка выпуска обновлений для версии FreeBSD 9.1 продлится до января 2015 года, поддержка выпуска FreeBSD 9.0 будет прекращена 31 марта 2013 года. Поддержка ветки FreeBSD 7 истекает 28 февраля 2013 года, ветки FreeBSD 8 и 9 будут поддерживаться два года с момента последнего релиза.

Из ключевых новшеств FreeBSD 9.1 можно отметить: фреймворк netmap для высокоскоростной обработки пакетов; подсистема CAM Target Layer; новый драйвер для графических чипов Intel c поддержкой GEM/KMS; обновление реализации файловой системы ZFS; альтернативный стек C++11 на базе развиваемых проектом LLVM библиотек libc++ и libcxxrt; поддержка монтирования из Jail-окружения файловых систем ZFS, devfs и nullfs; поддержка xlocale API в системной библиотеке; расширение средств для работы с таблицами в ipfw; добавление паравиртуализированного сетевого драйвера netback для Xen; переработанный GEOM-класс multipath; включение по умолчанию GEOM-класса raid в качестве реализации программного RAID вместо ataraid; поддержка в ядре инструкций AVX; интеграция наработок по увеличению производительности IPv6-стека.

Основные новшества:

  • Система
  • Проведена оптимизация работы планировщика задач sched_ule для более эффективной балансировки на процессорах, поддерживающих технологию одновременной многопоточности (SMT, Simultaneous MultiThreading), например, Intel Core i7. В ситуации, когда число нитей меньше числа логических CPU внесённые изменения позволили добиться повышения производительности на 10-15%. Позитивный эффект от изменений в планировщике также наблюдается и для систем на базе процессоров без поддержки SMT;
  • В libthr, реализации pthread-библиотеки для создания многопоточных приложений, переработан механизм работы с блокировками, что позволило добиться заметного повышения производительности. В некоторых ситуациях, производительность многопоточных приложений возросла до 10 раз;
  • В утилиту boot0cfg добавлена возможность инициирования через boot0 загрузки по умолчанию с использованием PXE. Для активации PXE-загрузки следует использовать в качестве аргумента опции "-s" номер слайса 6 или ключевое слово PXE;
  • Произведена интеграция наработок проекта по созданию для FreeBSD полноценного С++ стека, целиком распространяемого под лицензией BSD и независящего от кода проекта GNU. В состав включены библиотеки libc++ (реализация элементов, определённых в стандарте C++11) и libcxxrt (реализация спецификации C++ ABI), развиваемые проектом LLVM и компанией PathScale в качестве альтернативы используемой в GCC библиотеке GNU libsupc++. Использование Clang 3.1 совместно с данными библиотеками демонстрирует полное прохождение тестов на совместимость со стандартом C++11 (в ветку FreeBSD-HEAD на прошлой неделе интегрирован clang 3.2). Библиотека libc++ обеспечивает минимальное потребление памяти, высокую скорость выполнения функций, быструю компиляцию и совместимость на уровне ABI с libstdc++ из состава GCC для некоторых низкоуровневых возможностей, таких как объекты-исключения (exception objects), rtti и распределение памяти. По умолчанию библиотеки пока не используются, так как библиотека libc++ не совместима с поставляемым в базовой системе gcc и может работать только с clang. Переход на новый C++ стек будет осуществлён в ветке FreeBSD 10, одновременно с задействованием по умолчанию Clang;
  • В системной библиотеке обеспечена поддержка xlocale API, позволяющий устанавливать свою локаль для отдельных потоков. Код был поритирован из проекта Apple Darwin и позволил задействовать библиотеку libc++ от проекта LLVM, которая изначально была создана для Darwin и поэтому завязана на расширенные функции для работы с локалью (xlocale);
  • В run-time линкер rtld добавлена используемых в GCC GNU-расширений RELRO (RElocation Read-Only, позволяет предотвратить перезапись глобальной таблицы смещений GOT ) и DT_GNU_HASH (расширенная хэш-секция для замены опциональной хэш-секции ELF);
  • Дисковая подсистема, ввод/вывод, системы хранения и файловые системы
  • В состав включена подсистема CAM Target Layer (CTL), обеспечивающая эмуляцию дисковых и процессорных устройств. Кроме того, CTL можно использовать как тестовый фреймворк для CAM (Common Access Method): реализовав в CAM новую возможность, можно сразу протестировать её в CTL. При этом легко сэмулировать нетипичное поведение устройств и различные аппаратные ошибки, которые в штатном режиме невозможно повторить на реальном устройстве. Например, CTL позволяет реализовать возможность использования системы на базе FreeBSD и карты Fibre Channel в качестве внешнего RAID-массива, target-интерфейс которого будет реализован через CTL. Для тестирования драйвера новой карты Fibre Channel можно создать LUN и использовать CTL без реального оборудования, привязав драйвер "da" к CTL LUN и выполняя с ним любые операции ввода/вывода. Для управления работой CTL представлена новая утилита ctladm;
  • В подсистему CAM (Common Access Method), предоставляющую унифицированный модульный интерфейс для разработки драйверов для SCSI и ATA/SATA устройств, добавлена поддержка устройств SEMB (SATA Enclosure Management Bridge), которые являются SATA-эквивалентом SCSI-устройств SES/SAF-TE;
  • Добавлена новая реализация GEOM-класса Multipath, позволяющего организовать доступ к хранилищу, подключенному через несколько каналов ввода/вывода. В новой реализации устранены многие проблемы и добавлены дополнительные возможности. В дополнение к ранее доступному режиму Active/Passive добавлен режим Active/Active, который распределяет нагрузку по всем рабочим каналам, а также гибридный режим Active/Read позволяющий организовать только балансировку на чтение. Улучшена реализация автоматического режима конфигурации Multipath. Добавлен ручной режим настройки, при котором каналы можно удалять и добавлять через команды remove и add. Изменён подход к работе с каналами после сбоя, теперь они не удаляются из GEOM, а лишь помечаются сбойными (для управления сбойными каналами добавлены команды "fail" и "restore"). Для настройки работы Multipath представлена утилита gmultipath;
  • В geom-класс MIRROR добавлена поддержка операции BIO_DELETE, что позволяет использовать команду TRIM в процессе удаления данных с SSD-накопителей для повышения срока их службы;
  • Добавлен новый geom-класс UNCOMPRESS и связанная с ним утилита mkulzma. Указанный класс поддерживает работу с образами, сжатыми методом LZMA по аналогии с geom-классом UZIP;
  • Внесена серия улучшений и исправлений в реализацию сетевой файловой системы NFS. На стороне клиента добавлена поддержка установки таймаута для элементов кэша запрошенных имён (таймаут устанавливается через опцию монтирования nametimeo и по умолчанию равен 60 сек.). Устранена утечка памяти при экспорте ZFS разделов по NFS. Для NFSv4 добавлена sysctl-переменная vfs.nfsd.disable_checkutf8 для отключения проверки имён файлов на соответствие UTF-8 (указанная опция позволяет использовать в именах дополнительные символы, допустимые в других реализациях NFS, но при этом нарушается совместимость с RFC 3530);
  • С файловой системы tmpfs снят признак экспериментальной разработки. Добавлена sysctl-переменная vfs.tmpfs.memory_reserved для указания свободных страниц виртуальной памяти (ОЗУ и свопа) при которых допустимо увеличение размера tmpfs-раздела, если свободной памяти меньше определённого лимита, то создание новых узлов tmpfs будет приостановлено;
  • Портирование из проекта Illumos, в рамках которого продолжается развитие операционной системы OpenSolaris, свежих патчей для файловой системы ZFS. Добавлены новые свойства "clones" и "written" для определения списка клонов ФС и объёма записанных в снапшот данных (например, "zfs list -t all -o name,origin,clones" и "zfs list -t all -o name,used,written"). При выполнении команды

"zfs send" теперь выводится ожидаемый размер потока, а для команды "zfs destroy" - ожидаемое место на диске, которое можно будет задействовать при использовании флага "-n"; В команду "zfs get" добавлена поддержка флага "-t" для определения типа данных;

  • Сетевая подсистема
  • Добавлен фреймворк netmap для высокоскоростной обработки пакетов. При использовании netmap на перемещение одного пакета между каналом связи и пользовательским приложением тратится примерно 70 циклов, что позволяет одним ядром CPU с частотой 1050 MHz генерировать поток в 14.8 Mpps (миллионов пакетов в секунду), которого достаточно для анализа трафика на 10-гигабитном сетевом интерфейсе. В относительных показателях производительность netmap в 5-10 раз выше стандартного сетевого драйвера. В настоящее время поддерживаются 1- и 10-гигабитные сетевые адаптеры Intel и 1-гигабитные карты RealTek ( em, lem, igb и re). Взаимодействие с пользовательскими приложениями производится через стандартный API и не требует подключения специальных библиотек, переработки кода и пересборки приложений. Для работы существующих приложений поверх нового API подготовлена небольшая библиотека-враппер libpcap-over-netmap, позволяющая задействовать netmap в программах, уже поддерживающих libpcap;
  • В пакетном фильтре ipfw расширен синтаксис правил работы с таблицами (аргумент "table"), в которых теперь допускается указание IP-адресов, названий интерфейсов, номеров портов и идентификаторов jail-окружений. В таблицах теперь допускается указание IPv6-адресов и привязки элементов к сетевым интерфейсам, в том числе можно использовать маски сетевых интерфейсов. Например, для привязки таблицы к интерфейсу можно указать "ipfw table 10 add vlan20 12000" после чего использовать привязанную к интерфейсу таблицу "ipfw add 100 ipfw skipto tablearg ip from any to any recv 'table(10)' in".

Обеспечена возможность изменения максимального числа таблиц на лету через sysctl net.inet.ip.fw.tables_max, который отныне доступен не только на чтение, но и на запись. Изменён метод разбора аргументов, например, в выражении 'ipfw table 999 add host' аргумент 'host' теперь будет восприниматься как имя интерфейса, а не имя хоста.

  • Проведена большая работа по увеличению производительности IPv6-стека. Если ранее основное внимание уделялось стабильности и корректности работы IPv6, то теперь внимание было уделено анализу эффективности IPv6-стека. Проведённая работа позволила выявить источники проблем, проявляющихся в понижении производительности при использовании IPv6 вместо IPv4. В процессе работы были внесены улучшения в реализацию системы блокировок для обработчиков UDP, оптимизирован поиск маршрутов в таблицах, добавлена реализация отложенного вычисления контрольных сумм, обеспечена поддержка TSO6 и LRO для IPv6, включено offload-ускорение проверки контрольных сумм для loopback-интерфейса, оптимизировано использование кэшей и внесены многочисленные мелкие доработки, которые в некоторых случаях затронули и IPv4 стек. В результате удалось добиться заметного повышения производительности IPv6 для физических и loopback-интерфейсов при использовании offload-акселерации. Увеличена производительность UDP и повышена скорость работы IPv6-стека в общем виде;
  • В реализацию множественных таблиц маршрутизации ( Multi-FIB) добавлена поддержка IPv6. Для IPv4 поддержка Multi-FIB была добавлена ещё в 2008 году, сейчас данная возможность стала доступна и для IPv6. Используя Multi-FIB возможно определение правил, по которым к пакету будет применена одна из альтернативных таблиц маршрутизации, например, можно организовать "policy based" маршрутизацию с несколькими исходящими интерфейсами или привязать отдельную таблицу маршрутизации к Jail окружению. Кроме того, поддержка Multi-FIB может быть включена через опцию на этапе загрузки без необходимости пересборки ядра, что позволяет использовать Multi-FIB с ядром GENERIC. Сокеты маршрутизации (routing sockets) теперь принимают во внимание FIB-ы и показывают сообщения маршрутизации только адресованные к привязанному FIB, что позволяет программам управления маршрутизацией и демонам маршрутизации производить выборочные обновления определенного FIB;
  • В утилите dhclient обеспечена поддержка опции domain-search, позволяющей DHCP-серверу публиковать список частей доменных имён, прикрепляемых по умолчанию при операциях поиска по имени в DNS (действие опции search в /etc/resolv.conf);
  • В утилиту ifconfig добавлен параметр "vlanhwcsum" для установки или сброса функции акселерации вычисления контрольных сумм для VLAN. Кроме того, в ifconfig добавлен параметр "carp state" для принудительной установки статуса Carp-линка (backup или master);
  • Изолированные окружения, безопасность и ограничения ресурсов
  • В подсистему Jail добавлена поддержка монтирования файловых систем ZFS, devfs и nullfs из изолированного окружения (командой, выполненной внутри окружения). Для разрешения выполнения операций монтирования в Jail представлены параметры конфигурации allow.mount.devfs, allow.mount.nullfs и allow.mount.zfs, позволяющие разрешить или запретить монтирование для отдельных окружений (по умолчанию монтирование запрещено);
  • В утилиту jail добавлена поддержка файла конфигурации jail.conf, через который могут быть определены параметры нестандартных изолированных окружений. Определение параметров через файл конфигурации рекомендуется в качестве предпочтительного метода настройки Jail. Поддержка старого метода конфигурирования через перечисления опций командной строки в rc.conf пока сохранена для обеспечения совместимости, но уже рассматривается как устаревшая.
  • Оборудование и аппаратные архитектуры
  • Расширены возможности драйвера для графических чипов Intel c поддержкой GEM/KMS на уровне ядра FreeBSD, позволяющего использовать свежие версии видеодрайверов xf86-video-intel в которых была удалена поддержка переключения видеорежимов на пользовательском уровне (UMS) и оставлена только поддержка KMS (Kernel Mode Setting) для переключения видеорежимов на уровне ядра. В новой версии drm2-драйвера добавлена поддержка графических подсистем чипов IronLake, SandyBridge и IvyBridge. В драйвере agp переписан код работы с i810 и добавлена поддержка северных мостов SandyBridge и IvyBridge;
  • Существенно обновлён звуковой драйвер HDA ( snd_hda). Обеспечена поддержка вывода звука через порты HDMI и DisplayPort, добавлены новые средства управления громкостью, обеспечен автоматический выбор источника записи звука, реализована возможность переконфигурации на лету. Добавлена поддержка контроллеров с более чем четырьмя PCM-устройствами, обеспечена поддержка многоканальной записи. Увеличена информативность наименования имён устройств. Добавлено получение EDID-подобных данных от кодеков и видеодрайверов c информацией о звуковых возможностях устройства отображения. Реализована возможность установки специфичных для HDMI и DisplayPort опций кодеков, таких как число каналов, конфигурация громкоговорителей и маппинг каналов. Добавлена поддержка дополнительных многоканальных форматов: для HDMI и DisplayPort поддерживаются каналы 2.0, 2.1, 3.0, 3.1, 4.0, 4.1, 5.0, 5.1, 6.0, 6.1, 7.0 и 7.1. Добавлена поддержка проброса сжатых звуковых потоков с интенсивностью в диапазоне 6.144 - 24Mbps, таких как DTS-HD Master Audio или Dolby TrueHD;
  • Добавлен новый драйвер snd_hdspe для звуковых карт RME HDSPe AIO и RayDAT;
  • В драйвер hwpmc (Hardware Performance Monitoring Counter) добавлена поддержка микроархитектуры Intel Sandy Bridge;
  • Во FreeBSD/arm добавлена поддержка микроконтрорллеров Atmel SAM9XE, использующих процессорное ядро ARM926EJ-S;
  • Устранена порция проблем в драйвере xhci (USB 3.0), в том числе исправлена ошибка из-за которой не работали хабы USB 3.0;
  • Обновлены драйверы для систем хранения:
  • В драйвере для накопителей с интерфейсом USB по умолчанию разрешено использование энергосберегающих режимов;
  • Драйвер arcmsr (Areca RAID) обновлён до версии 1.20.00.25;
  • Добавлен драйвер hpt27xx для HighPoint RocketRAID 27xx SAS 6Gb/s HBA;
  • Добавлен драйвер isci с поддержкой интегрированных контроллеров SAS на базе чипсета Intel C600 (Patsburg);
  • В драйвер mfi (LSI MegaRAID SAS) добавлена поддержка карт Drake Skinny и Thunderbolt;
  • Драйвер mps (LSI Fusion-MPT 2 Serial Attached SCSI) обновлён до версии 14.00.00.01-fbsd в которой добавлена поддержка 6Gb SAS-контроллеров, SSD-накопителей WarpDrive и интегрированных RAID. В драйвере также улучшен код восстановления ошибок, добавлена поддержка EEDP (SCSI protection information) и TLR (Transport Level Retries);
  • Улучшение поддержки сетевых устройств:
  • Обновлён драйвер xnb для использования в паравиртуализированных гостевых окружениях Xen. Новый драйвер привязан к фреймворку newbus и корректно работает как в режиме паравиртулизации (PVM), так и при полной виртуализации (HVM);
  • Добавлен драйвер sfxge c поддержкой 10Gb Ethernet адаптеров на базе контроллеров Solarflare SFC9000;
  • В драйвер ixgbe добавлена поддержка Intel X540;
  • Добавлен драйвер oce с поддержкой адаптеров Emulex OneConnect 10Gbit Ethernet;
  • Устранена ошибка в драйвере ae для контроллеров Attansic/Atheros FastEthernet, мешающая работе при некоторых условиях;
  • Улучшены драйверы bge и brgphy для контроллеров Broadcom BCM57xx/BCM590x Gigabit/Fast Ethernet: устранена ошибка мешающая использованию DMA, добавлена поддержка работы с контроллерами PCI-X BCM 5704 подключенными к платам на чипах AMD-8131, добавлена поддержка BCM 5720, BCM 5720C PHY и BCM 57780 1000BASE-T, для управления MSI добавлена опция загрузчика dev.bge.N.msi;
  • Для драйверов cxgbe и cxgb (Chelsio T3/T4 10 Gigabit Ethernet) прошивка обновлена до версии 1.5.2.0. Добавлена поддержка настройки параметров устройств через текстовый файл конфигурации, задействованы аппаратные механизмы вычисления контрольных сумм для IPv6, IPv6 TSO и LRO, добавлена новая информационная sysctl-переменная dev.t4nex.N.misc;
  • Драйвер igb (Intel PRO/1000 PCI Express Gigabit Ethernet) обновлён до версии 2.3.4 и теперь поддерживает устройства i210/i211;
  • В драйвере mxge (Myricom Myri10GE 10 Gigabit Ethernet) до версии 1.4.55 обновлена прошивка от Myricom;
  • В драйвер ral добавлена поддержка чипсетов Ralink RT2800 и RT3000;
  • В драйвер re добавлена поддержка контроллера RTL8411 PCIe Gigabit Ethernet;
  • Приложения
  • В компиляторе gcc исправлена ошибка, приводившая к некорректным вычислениям при сборке с флагом "-ffast-math";
  • Обновлены версии поставляемых в базовой системе сторонних проектов:
  • LLVM и clang 3.1 (компилятор clang используется по умолчанию в ветке FreeBSD 10, во FreeBSD 9 он поставляется в качестве опции);
  • ISC BIND 9.8.3-P4;
  • Библиотеки compiler-rt обновлны до ревизии 147467, а libstdc++ до ревизии 135556 из ветки gcc-4_2, последней доступной под лицензией GPLv2;
  • file 5.11;
  • GNU gperf 3.0.3 (последняя версия под лицензией GPLv2);
  • libarchive, bsdtar и cpio 2.8.5;
  • libpcap 1.2.1;
  • netcat 5.1;
  • OpenSSL 0.9.8x;
  • tcpdump 4.2.1;
  • tcsh 6.18.01;
  • zlib 1.2.7;
  • Порт с KDE (x11/kde4) обновлён с 4.7.3 до версии 4.8.4;

Дополнительно можно отметить успешное завершение кампании по сбору пожертвований на развитие проекта в 2013 году. Вместо запланированных 500 тысяч долларов организации FreeBSD Foundation удалось собрать 684 тысячи доллvаров, что на 37% больше, чем определено в плане.

Источники

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

Комментарии

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