3. Требования к 5-STABLE

Ветка RELENG_5 должна дать пользователям такую же стабильность и производительность, которая сейчас достигнута в ветке RELENG_4. Хотя целью работ над SMPng является значительное повышение производительности по сравнению с имеющейся в RELENG_4 и родственных вариантах BSD, получение хотя бы ранее достигнутой производительности является самой важной задачей. Ветка должна быть достаточно готовой, чтобы избежать изменений в ABI и API, но позволять решать потенциальные проблемы.

3.1. Стабильность ABI/API/инфраструктуры

Инфраструктура должна быть достаточно подготовленной и устоявшейся, чтобы исправления из ветки HEAD можно было легко и безболезненно переносить в RELENG_5. Кроме того, мы должны определиться, какие подсистемы должны работать с блокировками при переходе к 5-STABLE.

  • KSE: И компоненты уровня ядра, и компоненты пользовательского уровня должны достичь одинакового уровня функциональности во всех платформах уровня Tier-1 в UP и SMP конфигурациях. Определение того, что является ''платформами ранга Tier-1'', можно найти в http://www.FreeBSD.org/doc/ru_RU.KOI8-R/articles/committers-guide/archs.html. При приближении к выпуску ветки RELENG_5 должно продолжиться тестирование на пакете тестов ACE. В KSE не должно допускаться уменьшение функциональности для будущей программы сертификации Java™. Распространённые прикладные и серверные приложения должны работать в KSE без проблем. Должна быть определена политика относительно того, на каких платформах KSE будет использоваться в качестве стандартного пакета для организации потоков выполнения, как пользователь может переключаться между такими пакетами и как пакеты сторонних разработчиков должны отслеживать такие изменения.

  • интерфейс и драйверы busdma: такие архитектуры, как PAE/i386™ и sparc64, в которых отсутствует прямое отображение адресного пространства хоста в адресное пространство плат расширения, требуют исключения функции vtophys() и ей подобных. Интерфейс busdma был создал для решения именно этой проблемы, однако многие драйверы его ещё не используют. Проект busdma на странице http://www.FreeBSD.org/projects/busdma отслеживает ход этих работ и это можно использовать для определения того, какие драйверы должны быть преобразованы для RELENG_5, а какие можно оставить. В дереве исходных текстов FreeBSD не должно быть новых драйверов для устройств хранения или сетевых драйверов. Исключения для других классов драйверов нужно согласовывать в открытом обсуждении.

  • распределение ресурсов PCI: соответствие спецификации PC2003 требует, что системы x86 не конфигурировали устройства PCI из системной BIOS, оставляя эту задачу исключительно ОС. Во FreeBSD должна появиться возможность управления и распределения ресурсов памяти PCI своими силами. Реализация этого должна принять во внимание существование требований cardbus, PCI-HotPlug и доков для лэптопов. Эта возможность станет ещё более критичной в течение жизни ветки RELENG_5, и поэтому является требованием к выпуску RELENG_5.

3.2. Производительность

Производительность зависит от хода работ над инфраструктурой SMPng и в следующих областях:

  • Устройства хранения: Технология GEOM позволяет драйверам устройств хранения работать без использования Giant. Все драйверы, которые взаимодействуют напрямую с GEOM (в противоположность тем, что находятся ниже уровня CAM или другого промежуточного слоя), должны изолироваться и избавляться от использования Giant как в части strategy, так и completion. Их обработчики прерываний также должны избавиться от Giant.

  • Сеть: уровни в работе IPv4, лежащие ниже уровня сокетов, должны быть изолированными и не использовать Giant. Сюда включается протокол, маршрутизация, организация моста, фильтрация и аппаратный уровень. Скидки должны быть сделаны для протоколов, которые не изолируются, особенно IPv6. Для достижения стабильности, корректности и производительности также необходимо выполнить тестирование.

  • Прерывания и переключение контекстов: Как обсуждалось выше, задержки в прерываниях и переключениях контекстов имеют большое влияние на производительность. Переключение контекстов для ithread и kthread на всех платформах должно быть улучшено. Должна быть исследована и реализована возможность создания новой модели обработки прерываний, которая позволяет выполнять более быструю и гибкую обработку как обычных, так и MSI прерываний.

3.3. Стандартные тесты и тестирование производительности

Для выявления проблем с производительностью и борьбы с её ухудшением необходимо информативное и надёжное проведение тестов. Вскоре должна быть сформирована ''группа производительности'' из людей и ресурсов для формулирования, разработки и выполнения стандартных тестов производительности. Сравнения должны делаться как с FreeBSD 4.X, так и Linux 2.4/2.6. Предполагаются следующие тесты:

3.4. Особые возможности:

  • NEWCARD/OLDCARD: Подсистема NEWCARD во FreeBSD 5.0 сделана используемой по умолчанию. К сожалению, в ней отсутствует поддержка для не-Cardbus мостов и на некоторых лэптопах она не работает из-за проблем с маршрутизацией прерываний. Классическая реализации поддержки 16-битных мостов, OLDCARD, продолжает существовать и может быть вкомпилирована, однако это неудобно для пользователей старых лэптопов. Если от OLDCARD для RELENG_5 нельзя будет полностью отказаться, то должны быть сделаны шаги, которые позволят пользователям легко устанавливать ядро с поддержкой OLDCARD. Должна быть написана документация в помощь пользователям по переходу от OLDCARD к NEWCARD и от pccardd(8) к devd(8). Функциональность по управлению электропитанием и ''dumpcis'' утилиты pccardc(8) должна быть усилена поддержкой NEWCARD, а также возможностью подгружать информацию о нестандартном оборудовании CIS. Основной объём этих функций может быть интегрирован в devd(8) и devctl(4).

  • Новый планировщик задач: Он уже готов, и пользователи могут выбирать между классическим планировщиком 44BSD и новым планировщиком ULE. В ветке RELENG_5 должен быть планировщик, имеющий привязку к процессору, поддержку HyperThreading и KSE, а также отсутствие снижения производительности или времени реакции системы.

  • GDB: GDB в основном системном наборе должен работать со sparc64, а также понимать потоки KSE. Уже имеется GDB 5.3, сообщается, что он решает проблемы со sparc64.

3.5. Документация:

  • Справочные страницы, Руководство и FAQ должны быть очищены от содержимого, специфичного для FreeBSD 4.X, то есть весь текст должен подходить и для FreeBSD 5.X. Больше всего работы здесь предстоит сделать в разделе Руководства по установке.

  • Документация к релизу должна быть полной и точной для всех архитектур уровня Tier-1. Особого внимания требуют замечания по оборудованию и инструкции по установке.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.

Обновлено: 12.03.2015