[ Prefetch - A Windows gyorsaságának titka ]

Prefetch - A Windows gyorsaságának titka

  • 2005-01-06 11:30
  • Forrás: NetAcademia tudástár
A felmérések szerint a felhasználók többsége azt szeretné, ha az operációs rendszer az eddiginél sokkal hamarabb lenne munkára kész, hidegindítás, hibernálás, vagy készenléti mód után egyaránt.

A Windows XP fejlesztésekor a nem titkolt cél az volt, hogy egy átlagos felhasználó gépén a bekapcsoló gomb megnyomásától a használható állapotig legfeljebb fél perc teljen el.


Ezt az id?t persze er?sen befolyásolja a hardverek sebessége is, ezért a Windows XP fejlesztésének ebben a szakaszában a Microsoft szorosan együttm?ködött az egyes hardvergyártókkal. A legels? dolog a számítógép életében a BIOS, éppen ezért ahol lehet, még a BIOS-on is gyorsítottak. A számítógép indulásakor futó BIOS POST (Power-On Self Test) rutin, a memória ellen?rzése, a lemezek felpörgetése, a floppymeghajtó ellen?rzése, a gép gyártója által esetleg megjelenített logók, a videokártya esetleges logója, valamint az egyéb diagnosztikai eljárások sokszor már önmagukban meghaladják az el?írt 30 másodpercet.

Éppen ezért találták ki a "Simple Boot Flag" nev? CMOS BIOS regisztert, amit az operációs rendszer a 0x70-0x71-es porton keresztül ér el. Ezen a regiszteren keresztül "beszélgethet" a BIOS és az operációs rendszer.

Az egyes bitek jelentése a következ? :
0 = PNPOS Plug and Play operációs rendszer
1 = BOOTING Az el?z? boot sikeres volt
2 = DIAG Diagnosztika futtatása szükséges
3-6 = Nem használt, értéke 0
7 = PARITY Ellen?rz?bit

A PNPOS bit 1 értéke azt jelzi, hogy a számítógépen Plug & Play operációs rendszer fut. Ilyenkor a BIOS-nak semmi dolga a perifériák konfigurálásával, leszámítva persze a rendszerindításhoz elengedhetetlenül szükséges eszközöket (például a merevlemezt). Ha értéke 0, a BIOS-nak kell kiosztania az eszközök részére az er?forrásokat
A BOOTING bit 1 értéke azt jelzi, hogy az el?z rendszerindítás sikeres volt, diagnosztikai tesztekre nincs szükség. A BIOS ilyenkor a POST futtatása (és további csicsák) helyett azonnal belefog a bootszektor betöltésébe.
A DIAG bit 1 értéke azt jelzi, hogy szükség van a diagnosztika futtatására (ezt beállíthatja az operációs rendszer, de maga a BIOS is, ha például a BOOTING bitet 0-nak találta).
A PARITY bit ellen?rz?bit: ha a beállított paritásérték nem jó, a regiszter tartalma érvénytelen, teljes rendszerdiagnosztika következik.


Prefetching

A Windows XP gyorsaságának lelke az úgynevezett prefetch (el?töltés): a rendszer els? indulásakor naplózza az összes lemezm?veletet. A legközelebbi induláskor pedig az el?z? naplók alapján el?re, párhuzamos, kötegelt lemezm?veletekkel betölti a rendszerindítás során szükséges fájlokat, adatokat (eszközmeghajtók fájljait, a registry részeit, stb.), még miel?tt a rendszer rájönne, hogy szüksége van rá. Amikor pedig kell, rögtön kéznél (azaz a memóriában) van az adat. A betöltés a "rendes" indítással párhuzamosan m?ködik, így míg például az eszközmeghajtók az eszközök felismeréséhez szükséges elkerülhetetlen üresjáratukat töltik, a Windows szépen el?készíti a terepet a folytatáshoz. A Windows XP emellett a naplók alapján automatikusan átrendezi a rendszertöltésben résztvev? fájlokat a merevlemezen (így lényegesen megn? az egy m?veletben betölthet komponensek száma, és persze lecsökken a betöltésükhöz szükséges id? ). Ennek köszönhet?en a boot loader máris négy-ötször gyorsabb lesz, mint a Windows 2000-ben. A m?veletekhez az XP (alapértelmezésben) az el?z? nyolc rendszerindítás adatait veszi alapul.
Mindezeken túl a Windows XP optimalizálja az eszközmeghajtók betöltésének sorrendjét, hogy a felhasználó minél el?bb hozzájuthasson a bejelentkez? képerny?höz. Ha például a Windows XP nincs tartományban, és a bejelentkezéshez nincs szükség a hálózati komponensekre, azok indítása id?ben hátrébb csúszik (a Winlogon tehát nem vár többé a hálózat elindítására!). Sok eszközmeghajtó már nem sorban, egymást megvárva, hanem egymással párhuzamosan indulhat el.


BootVis

A bootvis.exe sokmindent elárul a rendszerindítási folyamatról. A Windows XP rendszerindításának folyamatát figyelemmel kísérhetjük a bootvis.exe nev? eszközzel, amellyel nem csak a különféle indulási id?k, de a lemezm?veletek, a processzor terheltsége, a "lusta" eszközmeghajtók is megfigyelhet?k, s?t, akár módosíthatunk is az értékeken, de ez galibákat okozhat, s a végeredmény az lehet, hogy nem bírjuk életre lehelni a rendszerünket. (A Microsoft a BootVis segédalkalmazást le is vette a letölthet? eszközök listájáról, mert sok otthoni felhasználó téves információk vagy félretájékoztatás miatt beleesett abba a hibába, hogy saját maga akarta még tovább gyorsítani a rendszert, aminek visszafordíthatatlan következményei lettek az operációs rendszerre nézve.)


Prefetching az alkalmazásoknál

Ezúttal tényleg igaz a marketingfogás: a Windows XP tényleg gyorsabban futtatja az alkalmazásokat! A prefetching algoritmus ugyanis nemcsak az operációs rendszer indításakor, de (hacsak kifejezetten le nem tiltjuk) minden egyes alkalmazás esetén is m?ködik. Nézzünk csak bele a Windows XP \Windows\Prefetch könyvtárába! Jónéhány ".pf" kiterjesztés? fájlt találunk majd benne (és egy layout.ini-t, melyben összegzi a kapott eredményeket) Az egyes prefetch fájlok tartalmazzák az alkalmazások futása során használt lemezterületek adatait (fájlokat, .dll-eket, registry-kulcsot, stb.). Ha egy alkalmazáshoz már létezik prefetch-fájl, a Windows XP az alkalmazás indításakor automatikusan betölti a szükséges adatokat, hogy mire az alkalmazásnak szüksége lesz rá, kéznél legyen. (A rendszerindítás prefetch fájlja az ntosboot-B00DFAAD.pf; ez a fájl tartalmazza az el?z? nyolc rendszerindítás adatait. Ez a fájl a rendszerindítás után 1 perccel jön létre, illetve frissül. Ha letöröljük, a következ? rendszerindításnál nem lesz prefetch (ideális eszköz a prefetch hasznosságának kipróbálására).
Egy fontos dolgot jegyezzünk meg: a prefecth akkor képes igazán jól m?ködni, ha van hova betölteni az adatokat. Éppen ezért a Windows XP memóriaigényének kielégítése teljesítmény-okokból fontosabb, mint az el?döké volt. A minimális 128 megabájt a mai memóriaáraknál már nem okozhat gondot.


A lemezterület automatikus optimalizálása

A prefetch jó és gyors m?ködésének fontos feltétele, hogy a betöltend? adatok a lemezen is megfelel? sorrendben legyenek. Mit sem ér a prefetch algoritmus, ha a gyors betöltés során ide-oda kell rángatni a merevlemez fejét! A Windows XP ezért a számítógép pihen?idejében ("idle" állapot esetén) folyamatosan optimalizálja a merevlemezek tartalmát. A prefetch szolgáltatás a prefetch fájlokból kiolvassa a boot és az alkalmazások indításának adatait, és ezek alapján felépíti a layout.ini fájlt. Az automatikus defragmentálás ezután ez alapján m?ködik. A layout.ini fájl 32 alkalmazás elindítása után jön létre el?ször, és a rendszerindítások során automatikusan frissül.

Több helyen téves információként olvasható, hogy használaton kívüli fájlok lepik el a Prefetch mappát és egy id? után megtelik, lassítja a rendszert.
Ez nem igaz, a Prefetch hetenként kipucolja a felesleges fájlokat és három naponta, amikor a rendszerünket nem használjuk végrehajt egy optimalizációt. Az optimalizációt manuálisan is kier?szakolhatjuk a defrag -b c: paranccsal (ahol c: az XP installáció helye).

Némi "tuningra" azért van módunk.
A HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\...
...\PrefetchParameters\EnablePrefetcher
registry-kulcs értékét az alábbiak  szerint módosíthatjuk:
0 - Kikapcsolja a prefetch szolgáltatást,
1 - Csak a bootolás idejére engedélyezi a prefetch-t,
2 - Csak "alkalmazásindítási" prefetch engedélyezett,
3 - Mind a boot-, mind az alkalmazásindítási prefetch engedélyezett. (Alapértelmezett és javasolt)

Oláh Zoltán

2007-11-11 15:26
Megnéznéd , hogy ezzel lehet e mit kezdeni , mert a betöltés már legalább 40 másodperc!

2007-06-15 12:24
Köszi, gLes, :))))

2007-03-18 17:25
Mini Nyuszi Baba: konvertálásnál nem szokott el?fordulni adatvesztés, és rengeteg el?nnyel jár az NTFS fájlrendszer használata.

Mini Nyuszi Baba

2007-03-18 17:11
gLes! Nekem az XP Home-m Egy C:(FAT32) és egy D:(FAT32) meghajtón van, el?telepítve. nem akarok konvertálni mert sok fontos adat van!(Notebook)

2006-12-07 14:09
Azt nem a prefetch csinálja, viszont valami hiba van a lemezeden, remélhet?leg csak logikai. Ha nem NTFS fájlrendszer van rajta, akkor javítás után mindenképp konvertáld át. Az egyes partíciók ellen?rzését úgy tudod elindítani, hogy Sajátgépb?l megnyitod a tulajdonságaikat és ott az Eszközök fülön megtalálod Hibaellen?rzés címszó alatt.
A prefetchem a winxp indításkor rosszalkodik és az automata lemezellen?rz? jön be, ami hibát mutat. A belépéskor szintén a chkdsk lefuttatását javasolja, de ezt windowsból nem tom megtenni.
Mi a megoldás?