[Comm] Re:

Denis Smirnov =?iso-8859-1?q?mithraen_=CE=C1_freesource=2Einfo?=
Пт Май 9 03:12:57 MSD 2003


On Fri, May 09, 2003 at 03:06:42AM +0500, ASA wrote:

> DS> У меня были только общие идеи. Для каждого стартового скрипта должно быть
> DS> описание зависимостей -- после запуска какого скрипта можно запускать этот
> DS> скрипт. Зависимость должна быть двух типов -- обязательная, и
> DS> необязательная. Обязательная -- значит что если не поднимается тот сервис,
> DS> от которого зависит нужный нам, то он даже не будет пытаться подниматься.
> Вы только что описали систему поднятия сервисов в WinNT/2000/XP ;)

:)

> DS> Необязательные -- только обеспечивают соблюдение очерёдности.
> А  это  хорошая  идея.  Относительно.  Но очередность уже есть в
> SysV.

В SyV она тольно последовательная. Я имею в виду что-то вроде "почтовый
сервер должен запускать после антивирусного сервиса, если таковой
имеется".

Соответственно последовательность работы загрузчика следующая -- берётся
список поднимаемый сервисов, строится дерево зависимостей, дальше
запускаем скрипты инициализации для N сервисов, из тех, которые можно
инициализировать сразу. После завершения каждого из скриптов смотрим что
следующее можно инициализировать.

 > DS> Думаю доказывать прирост в скорости загрузки не надо.
 > Надо.   С   теми  скриптами,  которые  в  основном  налегают  на
 > недисковые  ресурсы (сеть, обработка конфигов и т.п.) - понятно.
 > А  если скрипт в основном завязан на диск, то его надо запускать
 > отдельно   от  других  подобных  ему.  И  тут  может  возникнуть
 > нетривиальная  задача  развязки  обязательных  и  необязательных
 > зависимостей.

А в чём собственно её нетривиальность? Автор пакета должен суметь чётко
сформулировать что необходимо его сервису для работы.

Насчёт завязки на диск -- что это, например? Сервер БД на что больше
завязан? IMHO сервер БД можно запускать как только смонтированы все
разделы и подняты интерфейсы (если он не локальный).

Для многопроцессорных систем польза от многопоточного запуска, IMHO,
очевидна. 

Ещё можно вспонмить известный факт с многопроцессной компиляцией (make
-jN), которая увеличивает скорость компиляции даже на однопроцессорных
машинах.

 > DS> Вопрос только в
 > DS> одном -- настолько ли оно надо, чтобы тратить на это силы?
 > Имхо нет. Предлагаю промежуточную копромиссную схему, которая не
 > требует больших усилий.
 > В  сам  S-скрипт (те, которые лежат в init.d) добавляем еще одно
 > поле  типа  как это сделано для chkconfig. В этом поле указываем
 > класс скрипта - дисковый или нет.

Тоже вариант. Только вот с классом скрипта непонятно -- как их делить?
Какой у Bind'а? А если он обслуживают тучу зон? А у иксов?
 
 > Затем    rc-скрипт   (тот,   который   обеспечивает   выполнение
 > SysV-инициализации)  последовательно выполняет скрипты не просто
 > отсортировав SXX по порядку (типа `echo S*|sort`), а разбивая их
 > на  группы  по  приоритету  (S00  -  в одну кучу, S01 в другую и
 > т.п.).  Внутри  этой  группы  rc смотрит на поле класса скрипта,
 > находит  и  запускает  в  два  независимых "потока" "дисковые" и
 > "недисковые" скрипты.
 > Получаем,  во-первых,  полную  совместимость  с уже существующим
 > софтом,    завязанным    на   SysV,   а   во-вторых,   требуемое
 > распараллеливание скриптов.
 > Можно  пойти  дальше  и  ввести  еще  одно  поле  в  S-скрипте -
 > зависимость  от  уже  стартовавшего  сервиса.  Реализация именно
 > такого  способа  задания  зависимостей  не  представляет  вообще
 > никакого труда.

Собственно этим и можно в результате сделать точно ту схему, о которой я
писал выше. Только тогда придётся шерстить все скрипты.
 
-- 
С уважением, Денис

http://freesource.info
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20030509/f50dfd3a/attachment-0004.bin>


Подробная информация о списке рассылки community