Initial import, synchronized with English 1.20
This commit is contained in:
parent
2194b439bc
commit
bd16d25bd6
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=19512
1 changed files with 759 additions and 0 deletions
759
ru_RU.KOI8-R/articles/5-roadmap/article.sgml
Normal file
759
ru_RU.KOI8-R/articles/5-roadmap/article.sgml
Normal file
|
@ -0,0 +1,759 @@
|
|||
<!--
|
||||
The FreeBSD Russian Documentation Project
|
||||
|
||||
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/5-roadmap/article.sgml,v 1.2 2004/01/06 18:28:30 andy Exp $
|
||||
|
||||
Original revision: 1.20
|
||||
-->
|
||||
|
||||
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
||||
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
|
||||
%man;
|
||||
|
||||
<!ENTITY % freebsd PUBLIC "-//FreeBSD//ENTITIES DocBook Miscellaneous FreeBSD Entities//EN">
|
||||
%freebsd;
|
||||
|
||||
<!ENTITY % authors PUBLIC "-//FreeBSD//ENTITIES DocBook Author Entities//EN">
|
||||
%authors;
|
||||
|
||||
<!ENTITY % teams PUBLIC "-//FreeBSD//ENTITIES DocBook Team Entities//EN">
|
||||
%teams;
|
||||
|
||||
<!ENTITY % mailing-lists PUBLIC "-//FreeBSD//ENTITIES DocBook Mailing List Entities//RU">
|
||||
%mailing-lists;
|
||||
|
||||
<!ENTITY % trademarks PUBLIC "-//FreeBSD//ENTITIES DocBook Trademark Entities//EN">
|
||||
%trademarks;
|
||||
|
||||
<!ENTITY t.releng.3 "<literal>RELENG_3</literal>">
|
||||
<!ENTITY t.releng.4 "<literal>RELENG_4</literal>">
|
||||
<!ENTITY t.releng.5 "<literal>RELENG_5</literal>">
|
||||
<!ENTITY t.releng.5.1 "<literal>RELENG_5_1</literal>">
|
||||
<!ENTITY t.releng.5.2 "<literal>RELENG_5_2</literal>">
|
||||
<!ENTITY t.releng.5.3 "<literal>RELENG_5_3</literal>">
|
||||
<!ENTITY t.releng.head "<literal>HEAD</literal>">
|
||||
|
||||
]>
|
||||
|
||||
<article>
|
||||
<articleinfo>
|
||||
<title>Направления работ в 5-STABLE</title>
|
||||
|
||||
<authorgroup>
|
||||
<corpauthor>The &os; Release Engineering Team</corpauthor>
|
||||
</authorgroup>
|
||||
|
||||
<pubdate>$FreeBSD$</pubdate>
|
||||
|
||||
<copyright>
|
||||
<year>2003</year>
|
||||
<holder role="mailto:re@FreeBSD.org">The &os; Release
|
||||
Engineering Team</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice id="trademarks" role="trademarks">
|
||||
&tm-attrib.freebsd;
|
||||
&tm-attrib.ieee;
|
||||
&tm-attrib.intel;
|
||||
&tm-attrib.sparc;
|
||||
&tm-attrib.sun;
|
||||
&tm-attrib.opengroup;
|
||||
&tm-attrib.general;
|
||||
</legalnotice>
|
||||
</articleinfo>
|
||||
|
||||
<sect1 id="intro">
|
||||
<title>Введение и информация общего характера</title>
|
||||
|
||||
<para>В январе 2003 года, после примерно трёх лет работы, была выпущена
|
||||
&os; 5.0. Такие её возможности, как технология GEOM, мандантный контроль
|
||||
доступа, ACPI, поддержка архитектур &sparc64; и ia64, работа с
|
||||
мгновенными копиями UFS, фоновая проверка целостности файловой системы и
|
||||
64-разрядная размерность узлов файловой системы делают эту операционную
|
||||
систему привлекательной как для корпоративного, так и персонального
|
||||
использования. Однако работа над некоторыми важными возможностями ещё
|
||||
не завершена. Программная основа для высокоточной блокировки и
|
||||
вытесняемости задач в ядре уже имеется, однако предстоит сделать ещё
|
||||
больше. Производительность и стабильность по сравнению с &os;
|
||||
4.<replaceable>X</replaceable> несколько снизилась, однако эти
|
||||
характеристики должны быть восстановлены и даже улучшены.</para>
|
||||
|
||||
<para>Это несколько напоминает ситуацию, с которой &os; сталкивалась в
|
||||
линейке 3.<replaceable>X</replaceable>. Работа над 3-CURRENT
|
||||
затягивалась до бесконечности, и наконец было принято решение
|
||||
<quote>просто выпустить её</quote>, а доработать позже. Такое решение
|
||||
привело к тому, что качество релизов 3.0 и 3.1 не могло удовлетворить
|
||||
большинство пользователей, и так было до версии 3.2, когда линейка была
|
||||
признана <quote>стабильной</quote>. Хуже того, ветка &t.releng.3; была
|
||||
создана на основе релиза 3.0. а ветка &t.releng.head; должна была вести к
|
||||
4-CURRENT. В результате ветки &t.releng.head; и &t.releng.3; стали
|
||||
сильно отличаться, что значительно осложнило поддержку ветки
|
||||
&t.releng.3;. &os; 2.2.8 была оставлена как последняя версия &os;,
|
||||
подходящая для продуктивной эксплуатации.</para>
|
||||
|
||||
<para>Нашей задачей является недопущение повторения такого сценария во
|
||||
&os; 5.x. Откладывание ветки &t.releng.5; до момента, когда она станет
|
||||
стабильной и достигнет качества продукта, готового к реальной
|
||||
эксплуатации, обеспечит будущую поддержку этой ОС и объективную причину
|
||||
перехода с версии 4.<replaceable>X</replaceable>, Для этого мы должны
|
||||
определить слабые места и наметить способы их устранения. В этом
|
||||
документе описаны те моменты, которые мы, как группа по подготовке
|
||||
релизов, считаем значительными и те вопросы, которые должны быть решены
|
||||
до создания ветки &t.releng.5;. Здесь не определяются все аспекты работы
|
||||
над &os;, и мы готовы к дальнейшему обсуждению. Ничего из того, что
|
||||
написано далее, не является инсинуациями против какой бы то ни было
|
||||
персоны или группы, целью не является упрощение никакой сделанной кем-то
|
||||
работы. Однако имеются некоторые важные вопросы, которые требуют
|
||||
решительных и беспристрастных действий.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="major-issues">
|
||||
<title>Основные вопросы</title>
|
||||
|
||||
<para>Успех линейки 5.<replaceable>X</replaceable> зависит от возможности
|
||||
предоставить высокоточное управление потоками выполнения и повторяемость
|
||||
вызовов в ядре (что известно как SMPng), а также поддержки на уровне ядра
|
||||
POSIX-потоков выполнения пользовательского уровня, не жертвуя при этом
|
||||
общей стабильностью или производительностью системы.</para>
|
||||
|
||||
<sect2 id="SMPng">
|
||||
<title>SMPng</title>
|
||||
|
||||
<para>Работам над SMPng и блокировками на уровне ядра уделяется самое
|
||||
большое внимание для 5.<replaceable>X</replaceable>. На текущий момент
|
||||
было выпущено несколько версий системы с глобальными семафорами на всё
|
||||
ядро, известными как <quote>Giant</quote>. Страница о состоянии работ
|
||||
над SMP по адресу <ulink url="http://www.FreeBSD.org/smp"></ulink>
|
||||
содержит исчерпывающую информацию об общем состоянии SMPng. Информация
|
||||
по конкретно работам над SMPng в драйверах устройств может быть найдена
|
||||
на странице <ulink
|
||||
url="http://www.FreeBSD.org/projects/busdma"></ulink>. В целом:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>VM: Функция ядра malloc изолирована и освобождена
|
||||
от Giant. Распределитель зон UMA также не использует Giant.
|
||||
Изоляция vm_object находится в работе и является важным шагом в
|
||||
исключении Giant из работы с буферами/кэшем. Изоляция pmap ещё
|
||||
не реализовывалась.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>GEOM: Уровень блоков GEOM был разработан с учётом работы без
|
||||
Giant и он позволяет работать модулям GEOM и низлежащим драйверам
|
||||
блочных устройств без Giant. На данный момент только драйверы
|
||||
&man.ata.4; и &man.aac.4; разделены и работают без
|
||||
Giant. Работа над остальными драйверами блочных устройств ведётся.
|
||||
Изоляция CAM-подсистемы требует отказа от использования Giant
|
||||
практически во всех драйверах SCSI; работа над этим ещё не
|
||||
начиналась.</para>
|
||||
|
||||
<para>Кроме того, в GEOM имеется опасность снижения
|
||||
производительности из-за обработки ею вышестоящих и нижестоящих
|
||||
потоков данных в потоках выполнения ядра. В решении этой проблемы
|
||||
может помочь улучшение и упрощение технологии переключения
|
||||
контекстов выполнения.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Сеть: Работа по переводу на изоляцию сетевого стека была
|
||||
начата заново. Изначально целями были таблицы маршрутизации, ARP,
|
||||
функции моста, IPFW, Fast-Forward, TCP, UDP, IP, Fast IPSEC и
|
||||
уровни интерфейсов, а также некоторые драйверы устройств Ethernet.
|
||||
Позже были поставлены цели по изоляции уровней сокетов, IPv6 и
|
||||
других сетевых протоколов. Основной задачей этой работы является
|
||||
восстановление производительности, достигнутой во &os;
|
||||
4.<replaceable>X</replaceable>. Затраты на переключение контекстов
|
||||
на ithreads и netisr в драйверах устройств всё ещё сильно влияют на
|
||||
производительность.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>VFS: Начата предварительная подготовка.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>буфер/кэш: Закончена начальная работа по изоляции
|
||||
буферов.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Proc: Начальное изоляция proc уже есть, во &os; 5.2 ожидается
|
||||
ещё больший прогресс.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>CAM: На уровне CAM SCSI значительной работы не
|
||||
проделано.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Newbus: была проделана некоторая работа по изоляции структуры
|
||||
device_t.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Pipes: завершено</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Файловые дескрипторы: завершено.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Process accounting: jails, credentials, MAC labels и
|
||||
планировщик не используют Giant.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Технология MAC: завершено</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Timekeeping: завершено</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>kernel encryption: криптографические драйверы и ядро технологии
|
||||
&man.crypto.4; не используют Giant. KAME IPsec не
|
||||
отделяются.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Аудио-подсистема: завершено, однако остаются проблемы с
|
||||
обратным порядком изоляций.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>вытесняемость ядра: включена вытесняемость для потоков
|
||||
выполнения прерываний. Однако несогласованность из-за того, что
|
||||
Giant используется в большинстве кода ядра и подпрограммах
|
||||
обработки прерываний драйверов устройств, вызывает множество
|
||||
лишних переключений контекста и может на самом деле сказаться на
|
||||
производительности. Ведётся работа по выяснению того, как сделать
|
||||
вытесняемость условной.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="interrupts">
|
||||
<title>Задержки на прерывания и их обработка</title>
|
||||
|
||||
<para>В SMPng появилась концепция выделенных потоков выполнения ядра,
|
||||
известных под названием ithreads, для обслуживания прерываний. С ними
|
||||
подпрограммы обслуживания прерываний от устройств могут создавать
|
||||
блокировки для выставления семафоров, выделения памяти и так далее.
|
||||
Хотя это облегчает написание драйверов, при этом понижается
|
||||
реактивность системы из-за того, что для обслуживания ithread должно
|
||||
быть выполнено полное переключение контекста процесса. Это
|
||||
усугубляется значительным использованием ядром семафора Giant, и часто
|
||||
приводит к множеству пауз и переключений контекстов для обслуживания
|
||||
прерывания. Драйверы, которые зарегистрировали свои прерывания как
|
||||
INTR_MPSAFE, меньше всего почувствуют этот эффект, однако потери на
|
||||
переключение контекста останутся. Подпрограммы обслуживания
|
||||
прерываний, зарегистрированные как INTR_FAST, работают непосредственно
|
||||
из контекста прерывания, и на них вовсе не сказываются эти проблемы.
|
||||
Однако указание свойства INTR_FAST заставляет линию прерываний стать
|
||||
эксклюзивной; её нельзя использовать одновременно с чем-то. Большое
|
||||
количество совместно используемых прерываний на PC-системах делает это
|
||||
нежелательным.</para>
|
||||
|
||||
<para>Для помощи в решении этой проблемы были предложены несколько
|
||||
идей:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Возможно, особый случай облегчённых ithread. При этом может,
|
||||
придётся уменьшить количество сохраняемых данных контекста для
|
||||
ithread, заимствовать стек из другого kthread и/или содавать
|
||||
новый быстрый способ обхода подпрограммы mi_switch().</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Можно ввести новую модель обработки прерываний, которая
|
||||
позволит драйверам регистрировать 'фильтр прерываний' вместе с
|
||||
обычной процедурой обработки. Это будет похоже на используемую
|
||||
сейчас в Mac OS X модель. Процедуры фильтрации прерываний позволят
|
||||
драйверу определять, должен ли он участвовать в обработке
|
||||
прерывания, позволят ему подавлять источник прерываний и, возможно,
|
||||
определять и планировать действия по его обработке. Она будет
|
||||
работать в том же самом контексте, что и низкоуровневая процедура
|
||||
обслуживания прерывания, так что паузы будут жёстко запрещены.
|
||||
Если требуются действия, которые приводят к паузам или блокировке
|
||||
на долгий период, фильтр будут сигнализировать об этом вызывающей
|
||||
стороне, что должна быть запланирована обычная
|
||||
ithread-процедура.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="KSE">
|
||||
<title>Потоки приложений, поддерживаемые ядром</title>
|
||||
|
||||
<para>В процессе работы над FreeBSD 5.1 пакет KSE был доведён до весьма
|
||||
пригодного к использованию состояния. Также появился THR,
|
||||
альтернативный пакет по управлению потоками выполнения, основанный на
|
||||
некоторых примитивах KSE уровня ядра, но реализующий исключительно
|
||||
подход планирования задач 1:1, также находится в подобном
|
||||
экспериментальном, но пригодном к работе состоянии. Пользователи могут
|
||||
менять эти две библиотеки со старой библиотекой libc_r посредством
|
||||
перекомпоновки своих приложений или при помощи новой техники libmap
|
||||
компоновщика времени выполнения. Такой значительный прогресс в ходе
|
||||
работ должен привести к их завершению до момента появления ветки
|
||||
&t.releng.5;, так что пакет libc_r может оказаться ненужным.</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Компоненты уровня ядра и пользовательского уровня для KSE и THR
|
||||
должны быть созданы для все платформ уровня Tier-1. Решение о том,
|
||||
какой пакет реализации потоков выполнения будет использоваться по
|
||||
умолчанию, будет, скорее всего, приниматься для каждой платформы
|
||||
отдельно, в зависимости от стабильности и завершённости каждого
|
||||
пакета.</para>
|
||||
|
||||
<para>
|
||||
<table id=KSETable>
|
||||
<title>Состояние KSE</title>
|
||||
|
||||
<tgroup cols="4">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Платформа</entry>
|
||||
|
||||
<entry>Уровень ядро</entry>
|
||||
|
||||
<entry>Пользовательский уровень</entry>
|
||||
|
||||
<entry>Работает?</entry>
|
||||
</row>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>i386</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>alpha</entry>
|
||||
|
||||
<entry>НЕТ</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>НЕТ</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>sparc64</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>НЕТ</entry>
|
||||
|
||||
<entry>НЕТ</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>ia64</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>amd64</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<table id=THRTable>
|
||||
<title>Состояние THR</title>
|
||||
|
||||
<tgroup cols="4">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Платформа</entry>
|
||||
|
||||
<entry>Уровень ядра</entry>
|
||||
|
||||
<entry>Пользовательский уровень</entry>
|
||||
|
||||
<entry>Работает?</entry>
|
||||
</row>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>i386</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>alpha</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>sparc64</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>НЕТ</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>ia64</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
|
||||
<entry>ДА</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>amd64</entry>
|
||||
|
||||
<entry>НЕТ</entry>
|
||||
|
||||
<entry>НЕТ</entry>
|
||||
|
||||
<entry>НЕТ</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>KSE должен пройти набор тестов ACE на всех платформах статуса
|
||||
Tier-1. Чтобы убедиться в том, что все библиотеки на самом деле
|
||||
работоспособны, необходимо выполнить дополнительное тестирование
|
||||
на реальных задачах. Как минимум, должны быть протестированы
|
||||
следующие пакеты:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>OpenOffice</para></listitem>
|
||||
|
||||
<listitem><para>KDE Desktop</para></listitem>
|
||||
|
||||
<listitem><para>Apache 2.x</para></listitem>
|
||||
|
||||
<listitem><para>BIND 9.2.x</para></listitem>
|
||||
|
||||
<listitem><para>MySQL</para></listitem>
|
||||
|
||||
<listitem><para>&java; 1.4.x</para></listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="goals">
|
||||
<title>Требования к 5-STABLE</title>
|
||||
|
||||
<para>Ветка &t.releng.5 должна дать пользователям такую же стабильность и
|
||||
проивзодительность, которая сейчас достигнута в ветке &t.releng.4;. Хотя
|
||||
целью работ над SMPng является значительное повышение производительности
|
||||
по сравнению с имеющейся в &t.releng.4; и родственных вариантах BSD,
|
||||
получение хотя бы ранее достигнутой производительности является самой
|
||||
важной задачей. Ветка должна быть достаточно готовой, чтобы избежать
|
||||
изменений в ABI и API, но позволять решать потенциальные проблемы.</para>
|
||||
|
||||
<sect2 id="API">
|
||||
<title>Стабильность ABI/API/инфраструктуры</title>
|
||||
|
||||
<para>Инфраструктура должна быть достаточно подготовленной и устоявшейся,
|
||||
чтобы исправления из ветки &t.releng.head; можно было легко и
|
||||
безболезненно переносить в &t.releng.5;. Кроме того, мы должны
|
||||
определиться, какие подсистемы должны работать с блокировками при
|
||||
переходе к 5-STABLE.</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>KSE: И компоненты уровня ядра, и компоненты пользовательского
|
||||
уровня должны достичь одинакового уровня функциональности во всех
|
||||
платформах уровня Tier-1 в UP и SMP конфигурациях. Опеределение
|
||||
того, что является <quote>платформами ранга Tier-1</quote>, можно
|
||||
найти в <ulink
|
||||
url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/committers-guide/archs.html">
|
||||
</ulink>. При приближении к выпуску ветки &t.releng.5; должно
|
||||
продолжиться тестирование на пакете тестов ACE. В KSE не должно
|
||||
допускаться уменьшение функциональности для будущей программы
|
||||
сертификации &java;. Распространённые прикладные и серверные
|
||||
приложения должны работать в KSE без проблем. Должна быть
|
||||
определена политика относительно того, на каких платформах KSE
|
||||
будет использоваться в качестве стандартного пакета для организации
|
||||
потоков выполнения, как пользователь может переключаться между
|
||||
такими пакетами и как пакеты сторонних разработчиков должны
|
||||
отслеживать такие изменения.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>интерфейс и драйверы busdma: такие архитектуры, как PAE/&i386;
|
||||
и sparc64, в которых отсутствует прямое отображение адресного
|
||||
пространства хоста в адресное пространство плат расширения, требуют
|
||||
исключения функции vtophys() и ей подобных. Интерфейс busdma был
|
||||
создал для решения именно этой проблемы, однако многие драйверы
|
||||
его ещё не используют. Проект busdma на странице <ulink
|
||||
url="http://www.FreeBSD.org/projects/busdma"></ulink> отслеживает
|
||||
ход этих работ и это моэно использовать для определения того, какие
|
||||
драйверы должны быть преобразованы для &t.releng.5;, а какие можно
|
||||
оставить. В дереве исходных текстов &os; не должно быть новых
|
||||
драйверов для устройств хранения или сетевых драйверов. Исключения
|
||||
для других классов драйверов нужно согласовывать в открытом
|
||||
обсуждении.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>распределение ресурсов PCI: соответствие спецификации PC2003
|
||||
требует, что системы x86 не конфигурировали устройства PCI из
|
||||
системной BIOS, оставляя эту задачу исключительно ОС. Во &os;
|
||||
должна появиться возможность управления и распределения ресурсов
|
||||
памяти PCI своими силами. Реализация этого должна принять во
|
||||
внимание существование требований cardbus, PCI-HotPlug и доков для
|
||||
лэптопов. Эта возможность станет ещё более критичной в течение
|
||||
жизни ветки &t.releng.5;, и поэтому является требованием к выпуску
|
||||
&t.releng.5;.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="performance">
|
||||
<title>Производительность</title>
|
||||
|
||||
<para>Производительность зависит от хода работ над инфраструктурой SMPng
|
||||
и в следующих областях:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Устройства хранения: Технология GEOM позволяет драйверам
|
||||
устройств хранения работать без использования Giant. Все драйверы,
|
||||
которые взаимодействуют напрямую с GEOM (в противоположность тем,
|
||||
что находятся ниже уровня CAM или другого промежуточного слоя),
|
||||
должны изолироваться и избавляться от использования Giant как в
|
||||
части strategy, так и completion. Их обработчики прерываний также
|
||||
должны избавиться от Giant.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Сеть: уровни в работе IPv4, лежащие ниже уровня сокетов, должны
|
||||
быть изолированными и не использовать Giant. Сюда включается
|
||||
протокол, маршрутизация, организация моста, фильтрация и аппаратный
|
||||
уровень. Скидки должны быть сделаны для протоколов, которые не
|
||||
изолируются, особенно IPv6. Для достижения стабильности,
|
||||
корректности и производительности также необходимо выполнить
|
||||
тестирование.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Прерывания и переключение контекстов: Как обсуждалось выше,
|
||||
задержки в прерываниях и переключениях контекстов имеют большое
|
||||
влияние на производительность. Переключение контектов для ithread
|
||||
и kthread на всех платформах должно быть улучшено. Должна быть
|
||||
исследована и реализована возможность создания новой модели
|
||||
обработки прерываний, которая позволяет выполнять более быструю и
|
||||
гибкую обработку как обычных, так и MSI прерываний.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="benchmarks">
|
||||
<title>Стандартные тесты и тестирование производительности</title>
|
||||
|
||||
<para>Для выявления проблем с производительностью и борьбы с её
|
||||
ухудшением необходимо информативное и надёжное проведение тестов.
|
||||
Вскоре должна быть сформирована <quote>группа
|
||||
производительности</quote> из людей и ресурсов для формулирования,
|
||||
разработки и выполнения стандартных тестов проиводительности.
|
||||
Сравнения должны делаться как с &os; 4.<replaceable>X</replaceable>,
|
||||
так и Linux 2.4/2.6. Предполагаются следующие тесты:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>классический <quote>worldstone</quote></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>webstone: <filename
|
||||
role="package">www/webstone</filename></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Fstress: <ulink
|
||||
url="http://www.cs.duke.edu/ari/fstress/"></ulink></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>ApacheBench: <filename
|
||||
role="package">www/p5-ApacheBench</filename></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>netperf: <filename
|
||||
role="package">benchmarks/netperf</filename></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Web Polygraph: <ulink
|
||||
url="http://www.web-polygraph.org/"></ulink> Замечание: пока не
|
||||
компилируется с gcc 3.x.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="features">
|
||||
<title>Особые возможности:</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>NEWCARD/OLDCARD: Подсистема NEWCARD во &os; 5.0 сделана
|
||||
используемой по умолчанию. К сожалению, в ней отсутствует
|
||||
поддержка для не-Cardbus мостов и на некоторых лэптопах она
|
||||
не работает из-за проблем с маршрутизацией прерываний.
|
||||
Классическая реализации поддержки 16-битных мостов, OLDCARD,
|
||||
продолжает существовать и может быть вкомпилирована, однако это
|
||||
неудобно для пользователей старых лэптопов. Если от OLDCARD
|
||||
для &t.releng.5; нельзя будет полностью отказаться, то должны быть
|
||||
сделаны шаги, которые позволят пользователям легко устанавливать
|
||||
ядро с поддержкой OLDCARD. Должна быть написана документация в
|
||||
помощь пользователям по переходу от OLDCARD к NEWCARD и от
|
||||
&man.pccardd.8; к &man.devd.8;. Функциональность по управлению
|
||||
электропитанием и <quote>dumpcis</quote> утилиты &man.pccardc.8;
|
||||
должна быть усилена поддержкой NEWCARD, а также возможностью
|
||||
подгружать информацию о нестандартном оборудовании CIS. Основной
|
||||
объём этих функций может быть интегрирован в &man.devd.8; и
|
||||
&man.devctl.4;.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Новый планировщик задач: Он уже готов, и пользователи могут
|
||||
выбирать между классическим планировщиком 44BSD и новым
|
||||
планировщиком ULE. В ветке &t.releng.5; должен быть планировщик,
|
||||
имеющий привязку к процессору, поддержку HyperThreading и KSE,
|
||||
а также отсутствие снижения производительности или времени реакции
|
||||
системы.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>GDB: GDB в основном системном наборе должен работать со
|
||||
sparc64, а также понимать потоки KSE. Уже имеется GDB 5.3,
|
||||
сообщается, что он решает проблемы со sparc64.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
|
||||
<sect2 id="documentation">
|
||||
<title>Документация:</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Справочные страницы, Руководство и FAQ должны быть очищены от
|
||||
содержимого, специфичного для &os; 4.<replaceable>X</replaceable>,
|
||||
то есть весь текст должен подходить и для &os;
|
||||
5.<replaceable>X</replaceable>. Больше всего работы здесь
|
||||
предстоит сделать в разделе Руководства по установке.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Документация к релизу должна быть полной и точной для всех
|
||||
архитектур уровня Tier-1. Особого внимания требуют замечания по
|
||||
оборудованию и инструкции по установке.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="schedule">
|
||||
<title>Календарный план</title>
|
||||
|
||||
<para>Из-за сложности стоящих задач первоначальный план выпуска &os; 5.2 и
|
||||
создания ветки &t.releng.5; в сентябре 2003 года был сдвинут. Новый
|
||||
календарный план выглядит так:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>18 ноября 2003: 5.2-BETA, общая заморозка кода</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>6 декабря 2003: 5.2-RC1, создание ветки &t.releng.5.2;</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>9 декабря 2003: 5.2-RC2</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>16 декабря 2003: 5.2-RELEASE</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>1 марта 2004: 5.3-BETA, общая заморозка кода</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>15 марта 2004: 5.3-RC1, создание веток &t.releng.5; и
|
||||
&t.releng.5.3;</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>22 марта 2004: 5.3-RC2</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>29 марта 2004: 5.3-RELEASE</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="future">
|
||||
<title>Направление работ после &t.releng.5;</title>
|
||||
|
||||
<para>Как это происходит и с другими ветками -STABLE, в основном работа
|
||||
над ней должна заключаться в исправлении ошибок и последовательном
|
||||
улучшении. Как обычно, всё должно проходить проверку в ветке
|
||||
&t.releng.head;, а затем внимательно переноситься в &t.releng.5;. Как и
|
||||
раньше, новые драйверы устройств, дополнительные возможности и тому
|
||||
подобные разработки приветствуются в этой ветке только после проверки в
|
||||
&t.releng.head;.</para>
|
||||
|
||||
<para>Дальнейшая изоляция SMPng будет разделена на две категории, драйвер и
|
||||
подсистема. Единственной подсистемой, которая будет достаточно
|
||||
изолированной к выходу &t.releng.5;, будет GEOM, так что постепенное
|
||||
изолирование драйверов устройств под её управлением является достойной
|
||||
задачей этой ветки. Полная изоляция подсистемы будет выполнена и
|
||||
опробована в ветке &t.releng.head; до того, как будет принято решение
|
||||
о переносе её в ветку &t.releng.5;.</para>
|
||||
</sect1>
|
||||
</article>
|
Loading…
Reference in a new issue