Ubuntu fénysebességgel

Egészen biztosan sokan találkoztunk már azzal a jelenséggel, amikor bekapcsoljuk a számítógépünket, és a... – írta: sh4d0w, 15 éve

Egészen biztosan sokan találkoztunk már azzal a jelenséggel, amikor bekapcsoljuk a számítógépünket, és a rendszerindítási folyamat „évszázadokat” igényel, mialatt mi türelmetlenül ülünk, várva, hogy használhassuk végre a csúcstechnika nagyszerű termékét. Ez a folyamat nem specifikusan Ubuntus, vagy Linuxos probléma, Windows alatt is szert tehetünk hasonló tapasztalatokra. Mind Windowson, mind Linuxon indulnak meghajtóprogramok, modulok, szolgáltatások, grafikus felhasználói felület, amelyek mind-mind időrabló módon indulnak – és alkalmazásokról még nem is beszéltem. Windows alatt is biztosan vannak olyan folyamatok, amelyek feleslegesen indulnak el, némi utánajárással felkutatható, mi az, amit nyugodt szívvel kikapcsolhatunk, e cikk most azonban az Ubuntura koncentrál, az itt leírtak nagy valószínűséggel Debian és annak egyéb derivatívái alatt is működnek. Igen, nincs mit szépíteni a dolgon, ha az elterjedtebb grafikus felületek közül használjuk valamelyiket (GNOME, KDE, XFCE), számoljunk a lassabb indulási idővel!

Ezen írás kimondott célja, hogy egy – a körülményekhez képest – gyors, de legalábbis az alaprendszernél gyorsabb indítású rendszert mutasson be, valamint megpróbálunk kezdeni valamit azokkal az alkalmazásokkal is, amelyek hírhedten lassan hajlandóak csak elindulni – gondolok itt elsősorban az OpenOffice Writerre, Gimpre, Firefoxra. Az sem cél, hogy egy mindenre kiterjedő, kifogástalan leírás készüljön, egészen biztosan lehetnek benne szakmai hibák, amik elsősorban tapasztalatlanságból fakadnak, a cél inkább az, hogy segítséget kapjanak azok, akik lassúnak érzik a rendszerük használatát. A tapasztalatokat a saját otthoni rendszeremen szereztem, de néhány kollégám is segítségemre volt teszteléssel.

Nem titok, hogy az itt leírtakat az Intel kernelhackerei által végzett munka inspirálta. Nem cél, hogy 5 másodperc alatt bootoljon a rendszer, de cél, hogy relatíve kevés „hackeléssel” csökkentsük az indulási folyamatok idejét, így akár a kezdők is alkalmazhatják – természetesen olyan kezdőkre gondolok, akik tudnak kezelni egy szövegszerkesztőt, egy állománykezelőt.

Mire jó a readahead? Alkalmazásával bizonyos állományok előreolvastathatók a rendszermemóriába, így amikor szükség van rájuk, már nem lemezről kell beolvasni őket, hanem a lényegesen gyorsabb memóriában már rendelkezésünkre állnak. Fontos kitétel, hogy a leírtakhoz legalább 512 MB memória kell, alatta már igen necces a dolog (de szerintem ha az alkalmazások előreolvasását is elvégeztetjük, akkor még jobb, ha legalább 1 GB RAM-unk van).

Vegyük használatba a readaheadet, azaz a számítógép indításakor a GRUB-ban álljunk rá arra a sorra, ahol az indítani kívánt kernelünk van, és adjuk hozzá a kernel indítási paramétereihez a profile kulcsszót (van ugyan egy előre elkészített előreolvasási lista, de az olyan, amilyen). Készüljünk fel, hogy ekkor a rendszerindítás lényegesen lassabb lesz, mint általában, hiszen a readahead figyeli, milyen állományok kerülnek beolvasásra a lemezről, majd ezekről listát készít a későbbi indításokhoz. Ez a folyamat a grafikus felület indításáig tart, vagyis ekkor leáll a readahead. Ez azért van így, hogy a bootolási folyamatban ne kerüljenek beolvasásra az alkalmazások, viszont azokkal is illene valamit kezdeni, illetve a GUI betöltődését is gyorsítjuk, amennyire lehetséges. A megoldás egy részét az UbuntuForums-on jdong prezentálta. Aki akarja, itt angolul elolvashatja, e nyelvet nem ismerőknek leírom, mit csinált a szerző, majd továbblépünk kicsit az alkalmazásokhoz. Fontos megjegyzés, hogy – nagyon ritkán – a jdong által alkalmazott dolgok nemhogy gyorsították, de inkább lassították a grafikus felület betöltődését, egyelőre ismeretlen ok miatt.

Készítsünk egy könyvtárat a readahead állományainak:

mkdir ~/.readahead

Ezután lépjünk ki logout-tal, majd lépjünk be a karakteres terminálon (Alt+Ctrl+F1) és indítsuk el a readaheadet:

sudo readahead-watch -o ~/.readahead/gnome.root /

A merevlemez elkezd darálni, akár több percig is, majd amikor visszakapjuk a promptot, a program készen áll, hogy figyelje, mi is történik tulajdonképpen. Térjünk vissza Alt+F7-tel a grafikus belépőképernyőre és lépjünk be. Miután sikeresen beléptünk, egymás után indítsuk el és zárjuk be azokat a programokat, amiket gyorsíttatni szeretnénk; ha ezzel megvagyunk és leállt a lemezünk, térjünk vissza a korábban használt karakteres terminálhoz (Alt+Ctrl+F1) és állítsuk le az előreolvasást végző programot:

sudo killall readahead-watch
sudo chown <user:csoport> ~/.readahead -R

A lista ugyan elkészült, de ha adatállományokat is tárolunk az Asztalunkon, főleg nagyobbakat, akkor a readahead azt is belevette a listába (hiszen betöltésre kerül), de ha ott mondjuk egy 1 gigás AVI fájlunk van, nem túl jó ötlet beolvastatni az egészet memóriába. Vizsgáljuk át a program által generált listát, legfelül láthatjuk a legnagyobbat (KB-ban):

cat ~/.readahead/gnome.root | xargs -i ls -lk {} | sort -rn -k +5 | less

Ha úgy látjuk, hogy vannak ott olyan állományok, amiket nem szeretnénk előreolvastatni, akkor kedvenc szövegszerkesztőnkben töröljük ki az őket prezentáló sorokat – természetesen kisebb adatállományokat is beszúrhatunk, ha úgy tartja kedvünk.

Az eddig leírtak a / fájlrendszerre vonatkoznak, ha több szeparált partíciónk van (pl. /home), akkor azokra is külön meg kell csinálni a leírtakat, természetesen külön állományba téve az azokra vonatkozó listákat, valamint mindig a megfelelő fájlrendszerre adva ki az utasításokat.

Indítsuk újra a gépünket, hogy lássuk, mi is a különbség: a „narancssárga” képernyőn állunk mindaddig, amíg a lemez dolgozik, ez azonban észrevehetően kevesebb munka, mint korábban.

Előfordulhat, hogy nem azonnal lépünk be a grafikus felületen, mert bekapcsoltuk a gépet, aztán nekiálltunk valami mást csinálni. Ilyenkor jól jöhet, ha már a bootfolyamat végére befűzzük a grafikus belépéshez szükséges állományok előreolvasását, így a tényleges belépés sokkal gyorsabban zajlik majd, mint korábban. A kivitelezéshez nyissuk meg a /etc/rc.local állományt és az exit 0 kifejezés előtt szúrjuk be ezt a néhány sort:

for list in /home/<user>/.readahead/*; do
readahead-list $list
done

Indítsuk újra a gépünket és várjuk meg, míg minden lemezművelet befejeződik, azután lépjünk be és ellenőrizzük, nyertünk-e valamit időben.

Felmerülhet néhány kérdés azokban, akik végigcsinálták a fentieket:

1. Mennyi időbe telik a readahead meghívása olyan állományokra, amik már gyorsítótárazva vannak? Körülbelül 0.05 másodpercet igényel a readahead rászabadítása egymás után kétszer ugyanarra a listára.
2. Mennyi időbeli átfedést jelent, ha a háttérben még fut a readahead, mikor belépek? Körülbelül 2 másodperc volt jdong rendszerén.

Ha nem a várt eredményt kapjuk, és vissza szeretnénk vonni az elvégzett dolgokat, nem kell mást tennünk, mint törölni a ~/.readahead könyvtárat, valamint a /etc/rc.local állományhoz adott sort.

Konklúzió

Mielőtt rátaláltam volna a readahead különböző alkalmazási formáira, olyan 85 másodperc körüli idő után volt használható a rendszer a gyári disztribúcióval (hozzáteszem: elég sok minden elindul, ráadásul egy olyan HDD-ről, amely meglehetősen bizonytalan állapotú). Ezt a leírást követve 42 másodpercre csökkent ez az idő – szeparált /home partícióval együtt.

A programoknál helyenként bámulatos sebességnövekedést kaptunk: elég sok negatív jelzőt lehet mondani a Windowsról és a Microsoft Office-ról, azt azonban nem, hogy az MSO indítása Windowson lassú lenne – és a linuxos táborban sokan irigykedve nézik ezt a sebességet. Jó hír: az előreolvasott OOWriter kb. ugyanazzal a sebességgel indul Linuxon, mint amit a redmondi páros produkál. Hasonló jó tapasztalatokra lehet szert tenni, ha GIMP-et használunk. Indításkor elég sok apró állományt olvas be, emiatt hosszú tízmásodperceket tölt az indulással – de nem előreolvasva! A Firefoxnak, az Update Managernek és a Synapticnak szintén előnyére válik, ha rájuk uszítjuk a readaheadet.

Azóta történt

Előzmények

  • Saját Ubuntu készítése

    Jónéhány leírás akad az Interneten arról, hogyan készíthetünk testreszabott rendszert mind Windows-, mind...