Folytatom a boot gyorsításos dolgot, amit majd meg fogok szakítani ilyen-olyan mellékszálakkal, de kitartóan török a "leggyorsabb Debian HDD-n" címre. Ez a következő, még eléggé látványos eredményt hozó fázis.
Az e4rat (ext4 reducing access time) egy olyan toolkészlet, amely a boot idő redukálását az alábbiakkal végzi:
- Felméri, hogy milyen fájlokat olvas fel a rendszer az indulás első 120 másodpercében
- A fájlokat fizikailag át- (sorba)rendezi a merevlemezen, így az elérési idő csökken
- A sorbarendezett blokkokat a boot elején előre beolvassa a memóriába, ezzel az elérési idő egy nagyságrendet javul
Mint a névből is látszik, ez a módszer csak ext4-en működik, mivel a fájlok átrendezéséhez egy ext4-es feature-t használ (ez a 2.6.31-es kernel óta érhető el). Állítólag nem elérhetetlen az 50%-os javulás is, én nem ennyire vérmes reményekkel indultam neki, de tény, hogy jelentősek az eredmények.
Hogyan?
Mit kell tennünk? Mindössze három lépést:
- Elindítjuk a felmérést (ezt elég egyszer futtatni, illetve érdemes minden esetben, ha átrendezzük a bootoláskor induló programokat)
- Átrendezzük a fájlokat (ezt több lépcsőben érdemes megpróbálni, és néha-néha érdemes újra ráfuttatni)
- Beállítjuk az előreolvasást (ezt permanensen be kell állítani, minden bootkor futni fog)
Easy as 1-2-3, ahogy az angol mondja. Hehe, vicceltem.
Először is telepítsük fel az e4rat-ot, letölthető DEB csomagokat találunk a hivatalos oldalon. Ezután bootoljunk, és a GRUB képernyőn nyomjunk egy e betűt az adott sor szerkesztéséhez. A kernel paraméterek közé (súgok: linux /boot/vmlinuz-3.2.0-4-686-pae root=UUID=... sor) a végére biggyesszük oda:
init=/sbin/e4rat-collect
Ennek hatására nem az init, hanem az e4rat-collect indul el, és ez indítja az initet, miközben figyeli, hogy az init milyen programokat indít el. Normál esetben 120 másodperc után lép ki az e4rat, de előbb is leállíthatjuk a sudo e4rat-collect -k parancs segítségével (így elkerülhetjük, hogy a boothoz szervesen nem tartozó alkalmazásokat is belevegye az "optimalizációba", így túlhízlalva az előolvasást és túlnövelve annak idejét). Persze ki is várhatjuk a 120 másodpercet, csak ne indítsuk el pl. a Libreoffice-t közben. :-)
Az elkészült eredmények a /var/lib/e4rat/startup.log fájlban lesznek, ha megnézzük a tartalmát, látható, hogy ez mindössze egy fájl lista. Ennek segítségével tudjuk indítani a fájl blokkok sorbarendezését; azonban előtte egy felhasználós üzemmódba kell váltanunk.
Mentsünk el minden futó dolgot, majd adjuk ki az init 1 parancsot. Konzolos felületre jutunk, és meg kell adni a root felhasználó jelszavát. (Erre azért van szükség, hogy ne fogja más processz az átrendezendő fájlokat.)
A fájl optimalizálást az alábbi paranccsal indíthatjuk. Futtassuk le többször, addig amíg ki nem írja, hogy nem tud tovább rendezni:
e4rat-realloc /var/lib/e4rat/startup.log
Még ne bootoljunk újra, rögtön be is írhatjuk a GRUB paraméterek közé, hogy mostantól állandóan indítsa az e4rat-ot:
# vi /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="init=/sbin/e4rat-preload quiet"
...
(Keressük meg a fenti sort és írjuk bele az init=... részt.) Fontos a grub telepítő újrafuttatása, enélkül nem élesedik a változtatás:
update-grub
...és kész!
További magyarázat helyett álljon itt egy előtte-utána videó. Sajnos nincs videó rögzítő eszközöm, ezért felraktam vmware-be is a Debiant hajszálpontosan ugyanazt a beállításokat használva, mint amiről írtam a korábbi posztban. Összehasonlításnak ez is épp elég látványos. Az elért eredmény 28%-kal felgyorsult boot.
Előtte
Utána