From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Fri, 9 May 2003 03:12:57 +0400 From: Denis Smirnov To: community@altlinux.ru Subject: Re: [Comm] Re: Message-ID: <20030508231257.GB15096@localhost.localdomain> References: <200304281204.30421.combr@vesna.ru> <20030428192549.GO25074@localhost.localdomain> <20030506132429.GE4534@solemn.turbinal.org> <20030506134941.GE1605@localhost.localdomain> <20030507113037.GL374@osdn.org.ua> <20030507123312.GA12934@localhost.localdomain> <20030508082948.GG374@osdn.org.ua> <20030508191358.GA7673@localhost.localdomain> <4969971133.20030509030642@udm.ru> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="IrhDeMKUP4DT/M7F" Content-Disposition: inline In-Reply-To: <4969971133.20030509030642@udm.ru> Sender: community-admin@altlinux.ru Errors-To: community-admin@altlinux.ru X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.0.9 Precedence: bulk Reply-To: community@altlinux.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: List-Post: --IrhDeMKUP4DT/M7F Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit 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 --IrhDeMKUP4DT/M7F Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+uuR5PuR8c4jhFKIRAlrXAKCW5FAzfcWCD23Bhf442ZUnzbMAbwCgmGvq 1vSRH9LA3vM0knnzqlo4wrQ= =cgwl -----END PGP SIGNATURE----- --IrhDeMKUP4DT/M7F--