[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: