[Linux] Multiprocess booten

Pagina: 1
Acties:

  • WildernessChild
  • Registratie: Februari 2002
  • Niet online

WildernessChild

Voor al uw hersenspinsels

Topicstarter
Laatst had ik zomaar een wild idee. Mijn Linux From Scratch heeft nu zo'n 12 seconden nodig vanaf LILO tot aan de loginprompt. Tijdens het booten worden er volgens mij veel dingen na elkaar gestart die niet afhankelijk van elkaar zijn. Zou het dan mogelijk zijn om de boottijd nog verder te verkorten door meerdere dingen tegelijk te starten? Je zou dan een dependency-file nodig hebben om aan te geven welke dingen van elkaar afhankelijk zijn. Het liefst zou ik dit allemaal in Bash-scripts realiseren. Helaas ben ik niet echt goed in die rare scripttaal van Bash. Maar toch, zou multiprocess booten technisch mogelijk zijn, en zou hier veel winst te behalden zijn?

Maker van Taekwindow; verplaats en resize je vensters met de Alt-toets!


  • Wilke
  • Registratie: December 2000
  • Laatst online: 10:21
Hmja, ik zou denken dat het wel moet kunnen.

Je moet dan alleen een systeempje maken om te zorgen dat bv. wel eerst het netwerk wordt gestart en dat je daarna pas probeert (bv.) tegelijkertijd smbd, apache, inetd, etc. te starten.

Op zich heeft Gentoo zo'n dependencies systeem, maar het start dingen niet tegelijkertijd op...je zou eens kunnen kijken hoe het werkt, en misschien proberen dat te wijzigen?

Verwijderd

Ik vind dit wel een goed idee... Alle inet services kunnen idd zonder problemen tegelijk gestart worden. Zou best wel wat tijdwinst kunnen geven.

Ik ga hier ook eens mee rommellen.

Verwijderd

Ik vraag me af hoeveel tijdwinst je hiermee haalt, eerlijk gezegd. Je *start* namelijk alleen de services, en dat is neem ik aan gewoon CPU tijd... Dus parallel of serieel maakt niet uit, kost beide evenveel tijd, zou ik zeggen.

Mjah, wel interessant idee, though. ;).

Verwijderd

Ik denk dat er best er 'iets' aan tijdwinst is. Vooral op SMP systemen natuurlijk.

Het schijnt namelijk dat bijvoorbeeld cross-compiling van pakketjes ook sneller gaat dan alles serieel. Alleen zijn dependencies dan natuurlijk een groot probleem.

[ Voor 61% gewijzigd door Verwijderd op 29-12-2002 12:06 ]


  • Wilke
  • Registratie: December 2000
  • Laatst online: 10:21
Inderdaad, maar niet alleen op SMP systemen denk ik hoor...vaak zitten er allerlei delays in, neem bijvoorbeeld het krijgen van een IP-adres met DHCP - ondertussen kun je alles wat niet met het netwerk te maken heeft, alvast starten, in principe...

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 15-05 13:11

deadinspace

The what goes where now?

Verwijderd schreef op 29 december 2002 @ 12:00:
Ik vraag me af hoeveel tijdwinst je hiermee haalt, eerlijk gezegd. Je *start* namelijk alleen de services, en dat is neem ik aan gewoon CPU tijd... Dus parallel of serieel maakt niet uit, kost beide evenveel tijd, zou ik zeggen.
Erger nog, het starten van programma's direct na boot is voor een erg groot deel disk I/O... Je moet dus oppassen dat je door het parallelliseren niet te veel verschillende disk I/O tegelijkertijd gaat doen... Dat verhoogt namelijk de seektimes (de leeskop moet van de ene kant van de HD naar de andere en weer terug enz), met het risico dat je het juist langer laat duren...

Het is een grappig idee, maar als het niet helpt of misschien zelfs averechts uitpakt moet je niet al te verbaasd opkijken ;)
Bovendien zijn er nog wel wat andere issues... De output van programma's komt dan niet netjes serieel meer, maar ook door elkaar. Lastig als je een error kijgt, want je kunt dan mogelijk niet zien van welk programma die error nou afkomt...

Bovendien kan het mij niets schelen of mijn systeem nou in 12 of 10 seconden boot, ik boot liever zo weinig mogelijk :)

  • Arzie
  • Registratie: Juni 1999
  • Laatst online: 09:11
Een ander punt is dat het booten uit 2 dingen bestaat, het starten van de kernel en het starten van alle services. De kernel kun je denk ik weinig aan doen, het starten van de services is het enige ding waarop je tijdwinst zou kunnen behalen.
Als we even grof schatten nemen beide delen evenveel tijd in beslag, dus 6 seconden. Stel dat je bij de services 20% winst haalt, dan scheelt het je net een seconde, niet echt noemenswaardig dus.

  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
Op mijn LFS systeempje heb ik dit gedaan, hier staat wat uitleg.

Ik merk weinig verschil in opstarttijd. Wel spreekt het idee me meer aan dan de vaker gebruikte sysv/bsd manieren. Je gooit een opstartscript voor iets in de dir, en geeft even aan wat eerst geladen moet zijn, en klaar.

"He took a duck in the face at two hundred and fifty knots."


Verwijderd

ik gebruik netatalk (appletalk voor linux) en dat duurt redelijk lang.....in zulk soort gevallen is er denk ik aardig wat tijd te winnen....en ook b.v. het opzetten van ipv6 tunnels kan aardig lang duren (b.v. als er nog geen ipv4 verbinding is door bv. een kapotte kabel oid) Sommige zitten gewoon op een time-out te wachten dus....
Misschien handig om iemand van een linux dist die voor het boot gedeelte verantwoordelijk is naar zijn/haar mening te vragen?

  • Wilke
  • Registratie: December 2000
  • Laatst online: 10:21
deadinspace schreef op 29 december 2002 @ 20:21:
[...]

Erger nog, het starten van programma's direct na boot is voor een erg groot deel disk I/O... Je moet dus oppassen dat je door het parallelliseren niet te veel verschillende disk I/O tegelijkertijd gaat doen... Dat verhoogt namelijk de seektimes (de leeskop moet van de ene kant van de HD naar de andere en weer terug enz), met het risico dat je het juist langer laat duren...


Niet helemaal mee eens - Linux regelt dat zelf al goed (leeskop gaat altijd helemaal heen en weer, hij scheduled disk-I/O gewoon anders daarvoor, als het moet). Oh ja, en ik vraag me af voor hoeveel % het disk-I/O is trouwens!

Je hebt gelijk, het zou net zo goed positief als negatief kunnen werken, maar als je het niet probeert weet je dat nooit, natuurlijk!

[ Voor 4% gewijzigd door Wilke op 30-12-2002 01:56 ]


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Ik start het opzetten van mijn internetverbinding als een achtergrondproces, direct bij het booten, omdat dat zeker een halve minuut duurt :z
Gewoon een ampersandje, ik zou zeggen, probeer het ook 'ns, zo ingewikkeld zijn de bootscripts niet...

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.

Pagina: 1