Hirdetés

Bootolás öt másodperc alatt

Nem gyorsabbat: gyorsat!

Arjan van de Ven, az Intel egyik Linux-fejlesztője – az ő gyermeke a PowerTOP –, valamint Auke Kok, az Intel Open Source Technology Centerének alkalmazottja mutatta be az 5 másodperces rendszerindítást – számolt be a fejlesztésről részletesen az LWN.net.

A hardver egy ASUS EEE PC volt SSD-vel felszerelve, a szoftverkörnyezet pedig egy módosított Fedorából, illetve egy módosított Moblinból állt. A bemutatón kicsit fel kellett tartani az EEE PC-t, ugyanis a rendszerindulás gyorsabban befejeződött, mint ahogy a bemutatóhoz használt projektor szinkronizálni tudott volna.

Jogos a kérdés: hogyan sikerülhetett ez? Arjan szerint a cél nem a gyorsabb indulás, hanem az 5 másodpercen belüli rendszerindítás volt. Ahelyett, hogy itt-ott nyertek volna egy-egy másodpercet, inkább felállítottak egy időkeretet, amin belül az indulásnak be kellett fejeződnie. Persze a csalást kizárták: „A befejezett indulás azt jelenti, hogy mind a CPU, mind a lemez idle állapotba kerül.” Ez nem jelentette ugyan a működő hálózatot, de magában foglalta a Network Manager elindítását. Egy hagyományos merevlemezzel ellátott rendszerben a bootolás némileg tovább tartott volna; Arjan azt nyilatkozta, hogy 10 másodperces indulást ért el egy ThinkPaden.

A Fedorának – mindenféle finomítás nélkül – 45 másodpercre volt szüksége a belépőképernyő megjelenítéséhez. A Bootchart nevű eszköz alkalmazása megmutatta, mihez is kell ilyen sok idő: egy teljes másodpercet tölt a loopback eszköz indításával – megnézi, hogy minden hálózati eszköz ebbe a csoportba tartozik-e. Újabb két másodpercet igényel a sendmail indítása; „idővel fizetünk azért, hogy egyesek levelezőszervert működtetnek”. Arjan javaslata szerint az átlagos laptophasználat esetében az ssmtp lenne jó a kimenő levelek kezeléséhez.

Újabb 5 másodpercet igényel a „setroubleshootd” eszköz, mely hibákat keres a SELinux konfigurációjában. Persze nem minden lassításért a Fedorát kell felelőssé tenni. Néhány „ár ellen” dolgozó program szintén késlelteti az indulást: az X Window System például elindítja a C preprocesszort és fordítót a megfelelő billentyűzetkiosztás felépítéséhez.

Az Ubuntu ennél 2 másodperccel indul gyorsabban. A modprobe 12 másodpercet igényel, amíg betölt egy egyszerű modult. A korlátozott meghajtókat kezelő eszköz 2,5 másodpercet vesz el tőlünk – egy olyan rendszeren, ahol korlátozott meghajtók nincsenek használatban; Arjan szerint „mindenki megfizet a bináris meghajtóprogramokért”. Az Ubuntu GDM-je további 2,5 másodperc CPU-időt használ fel a háttérkép megjelenítéséhez.

Mindkét rendszer használ splash-screeneket; Arjan és Auke azonos véleményt fogalmaztak meg róluk: „Gyűlöljük ezeket. Annyi idő alatt, mire ezt meglátod, mi már használható rendszert akarunk.”

A folyamat részletes leírása

A folyamat részletes leírása

A kernel indulása modulokkal együtt 1 másodperc volt. Az init szkriptek és egyéb háttérfolyamatok indítása egy újabbat vett igénybe, az X indítása egy harmadikat. További két másodpercbe tellett az asztalkörnyezet indítása. A kernelből eltávolították az initrd-t, ami fél másodpercig nem csinál semmit, így viszont minden, az induláshoz használt modulnak a kernelben kell lennie; Arjan szerint „az ott lévő dolgok 95%-a felesleges” – javaslata szerint inkább készítsünk egy olyan initrd-s kernelt, amiben a maradék 5% van.

Néhány módosítás a kernelen lehetővé tette néhány alrendszer aszinkron indítását. Például a módosított kernel egy időben indította az Advanced Host Controller Interface (AHCI) inicializálását a tárolóeszközök kezeléséhez, valamint az Universal Host Controller Interface-t (UHCI) az USB támogatásához. „Talán még le tudtuk volna nyomni fél másodperccel az indulást, de csökkentettük egy másodperccel, és itt megálltunk” – mondta Arjan. A 2.6.28-as kernel használatával még nyertek időt, köszönhetően az AHCI-támogatás javulásának.

Mindezt még megfejelték az előreolvasási támogatás kernelszintű támogatásával. A kernel innentől fogva figyeli, mely blokkokat kell olvasni bootoláskor, aztán ezt elérhetővé teszi a userspace-ben.

A Fedora az init helyett az Upstart nevű programot használja, és ez az első program, ami a userspace-ben fut. Az Intel csapata azonban ezt visszacserélte a jó öreg initre. Az init több különböző dolgot csinál egyszerre: egyfajta sReadahead-ként működik, a lemezről olvasott blokkokat gyorsítótárazza a memóriában; elvégzi a fájlrendszer ellenőrzését, elindítja a D-Bus nevű processzek közötti kommunikációs rendszert, majd az X-et, végül az asztalt. Ezek után indul a Hardware Abstraction Layer (HAL), az udev, a cserélhető eszközöket támogató rendszer, aztán a hálózati alrendszer. Az udev csak a később hozzáadandó eszközöket kezeli – mivel a rendszer a régi /dev könyvtárat használja, indításkor nincs szükség az udevre.

Az sReadahead-nek köszönhetően mind a lemez, mind a CPU szinte teljes terhelésen dolgozik indításkor. Amikor az X elindul, már nem kell a lemezről olvasnia, mert minden gyorsítótárazva van. Az sReadahead a Fedora Readaheaden alapszik, s a jövő héten teszik közzé a moblin.org-on, és ha Arjan meg tud állapodni az ext3-as fájlrendszer karbantartójával, Ted Ts’o-val, valószínűleg általánosan is elérhető lesz (Ted javasolta a blokkok átrendezését a lemezen, hogy még jobban felgyorsuljon az indítás).

Rendszerindításkor csak 75 MB adat olvasható (3 másodperc, 25 MB/s olvasási sebesség), így nem olvassák be a teljes fájlt, csak azokat a részeket, amik feltétlenül szükségesek. Előreolvasás nélkül az indulás 7 másodpercet igényelt, előreolvasással sikerült a célban megfogalmazott 5.

Természetesen az X-et is jó alaposan meg kellett vagdosni. Az egyik megoldandó probléma a C fordító indításának megakadályozása volt a billentyűzetkiosztás újraépítéséhez. A jelenlegi X-fejlesztések több inicializálást és konfigurálást bíznak a kernelre, melyek jelentősen csökkenthetik az indítás idejét, mivel a kernel egyszerre több hardvert is inicializálhat. A segítség egy másik Intel-alkalmazottól, Keith Packardtól jött. Az ötlet az volt, hogy amikor a hardver többi része használatba kerül, állítsák be a megfelelő videó módot. Ez a gyorsindítású rendszer nem használ GDM-et, de közvetlenül a legutolsó felhasználó XFCE asztalára bootol be. Itt lehetőség van a képernyővédő azonnali indítására, így ha másik felhasználó ül a gép előtt, használnia kell a képernyővédő felhasználóváltó gombját.

„Ne elégedj meg az indítás felgyorsításával, ez rossz hozzáállás. Gyors legyen az indítás” – mondta Arjan. Nem kell olyan eszközök miatt várakozásra kényszeríteni a felhasználókat, amiket csak néhányuk használ – lásd sendmail. Később elmondta még, hogy nem kell minden disztribúcióból initrd-s és initrd-mentes verziót fenntartani. A kernel próbáljon initrd-mentesen indulni, és ha valami gáz van, váltson vissza az initrd-s megoldásra.

  • Kapcsolódó cégek:
  • Intel

Azóta történt

Előzmények