Re: Tempo startu X-ów
On Wed, 26 Oct 2005, Krzysztof Matusik wrote:
[...]
Ktoś wspomniał gdzie indziej, że ważna jest tylko
kolejność runleveli- co jest oczywiście nieprawdą:
wyobraźmy sobie sytuację uruchamiania równolegle skryptów podnoszenia
interfaców sieciowych i usług sieciowych- można spodziewać się, że te drugie
nie zostaną uruchomiane właściwie (np. gniazda nie zostaną ustanowione).
Jeśli tym kimś miałem być ja, to nie dokładnie przeczytałeś mój list, albo
ja się nie wyraziłem dość jasno. Pisałem nie o runlevelach tylko o
dwucyfrowych kodach, określających kolejność uruchamiania skryptów
startowych [update-rc.d(8)]. W oparciu o ten kod, skrypty mają
zagwarantowane, że np. S19* są wykonywane przed S20*, ale skrypty mające
ten sam kod np. z prefiksem S20 mogą być wykonane równolegle (nie ma między nimi
zależności).
Na tym polegała też moja modyfikacja, skryptu /etc/init.d/rc, że skrypty z
tym samym prefiksem uruchamiam współbieżnie, natomiast przed rozpoczęciem
uruchamiania skryptów z nowym prefiksem, czekam na zakończenie wszystkich
skryptów uruchomionych wcześniej...
Kiedyś próbowałem modyfikować skrypty startowe, tak by część zadań uruchamiała
się równolegle. Jest spory zysk na czasie i wcale nie jest potrzebna maszyna
wieloprocesorowa.
Możesz podać więcej szczegółów - bo ja uzyskałem duży zysk na czasie,
tylko w wariancie bez synchronizacji; po dodaniu synchronizacji (jak
powyżej), zysk był na poziomie 6%...
Jednak nie można zastosować tego do dystrybucji, bo każda
maszyna będzie zachowywać się inaczej- jak podejrzewam.
Problem leży w samym działaniu INITa i konstrukcji /etc/rc.d/; skrypty
wykonywane są szeregowo. Potrzebny byłby program, którego config wyglądałby
trochę jak relacyjna baza danych.
Tak to wygląda w MS Windows - deklarujesz zależności pomiędzy usługami.
Tworzą one taki skierowany graf acykliczny (DIG). Żeby rozpocząć
uruchamianie usług zapewne wykonywane jest sortowanie topologiczne i to co
jest na jego wyjściu jest równoważne liście z danego /etc/rc?.d na
systemach *nix'owych.
Nie wątpię, że taka deklaratywna konfiguracja jest prostsza w utrzymaniu
niż podana wprost lista skryptów, ale nie demonizowałbym różnicy. W końcu
mówimy o kilkunastu - kilkudziesięciu skryptach. Oczywiście mam nadzieje,
że kiedyś i w Debianie pojawi się konfiguracja deklaratywna, choćby jako
coś z czego generowane są katalogi odsyłaczy /etc/rc?.d...
Pozdrawiam,
Marek
--
"Niewiara jest jak wiara na miarę"
Raz, Dwa, Trzy
Reply to: