Vistalizace 7: paměť v systému Windows Vista
autor: Jiří Vašek , publikováno 16.1.2008
Seznam kapitol
1. Trocha historie nikoho nezabije
2. Správa paměti pod Windows Vista
3. Optimalizace paměti pod Windows Vista
Vistalizace 7: paměť v systému Windows Vista

Jednou z největších změn ve Windows Vista je rozhodně překopaná správa paměti. V porovnání s předchozími verzemi Windows i s ostatními operačními systémy se jedná opravdu o velký skok, který je pro mnoho uživatelů velkou záhadou. Mnoho uživatelů zároveň nadává na velkou náročnost a celkovou lenost systému. Pojďme se tedy podívat, kde je zakopané jádro pudla...


Task manager ve Windows Vista se na první pohled změnil minimálně, hlavní změnou je právě odlišný pohled na operační paměť. Hlavním rozdílem je využití paměti, Windows Vista obvykle obsadí velkou část vaší paměti, i když třeba neběží žádné aplikace. Je toto způsobeno přílišnou náročností operačního systému, jak se často tvrdí?

Vistalizace 7: paměť v systému Windows Vista

Odpověď zní samozřejmě záporně. Především Windows Vista mají naprosto odlišnou filozofii pohledu na operační paměť. Předchozí verze Windows využívaly paměť jako prostředek - jednoduše každá spuštěná aplikace byla načtena do paměti, a její ne právě využívané části se odstránkovaly na disk, aby se fyzická paměť ušetřila. Cílem bylo udržovat paměť co nejprázdnější, proto se také vyrojily různé optimizery s pochybnou funkčností.

Superfetch - paměť jako cache

Vistalizace 7: paměť v systému Windows Vista

Ve Windows Vista je pohled na paměť odlišný, dle mého názoru však spíše lepší. Celá paměť se nyní chápe jako cache. Myšlenka je opět jednoduchá - proč udržovat paměť prázdnou, k čemu by pak vlastně byla dobrá? Lepší je využít ji k přednačítání dat, které uživatel zřejmě bude potřebovat, a proto se mu bude pracovat rychleji, s menšími prodlevami při spouštění programů. Celý mechanismus má nízkou prioritu, takže uživatele neobtěžuje pokud zrovna potřebuje výkon pro nějakou náročnou aplikaci. Marketingový název pro tuto funkci je Superfetch.

Typicky tedy Windows Vista obsadí velkou část operační paměti, někdy i téměř celou. Toto překvapivě nezávisí na celkové velikosti paměti, kterou má váš počítač - paměť se prostě aktivně využívá, ať už máte 1GB nebo 4GB fyzické RAM. Skutečná spotřeba paměti systému se liší od Windows XP jen málo, odpovídá nárůstu nároků další generace systému. Překvapivě, na většině počítačů se kterými jsem přišel do styku, nezávisle na instalované paměti v systému, je procesy využito přibližně 50% fyzické operační paměti, zbytek je swapován. Toto ovšem není možné brát jako bernou minci, na některých sestavách se situace liší.

Superfetch lze ručně vypnout, a získat tak prázdnou paměť, ovšem nevidím důvod proč to dělat. Celý mechanismus funguje velmi dobře, a i když chcete spustit nějakou paměťově náročnou aplikaci (hru), není s pamětí obsazenou Superfetchem problém, uvolní se během krátké doby. Jediným postranním efektem je, že ona hra může několik minut běžet pomaleji. Někteří hardcore gameři však toto nesnášejí, a Superfetch vypínají (do dalšího restartu třeba příkazem NET STOP SUPERFETCH). Někteří uživatelé také doporučují nějaký freeware čistič paměti, kterým před spuštěním hry "zruší" cachovaná data Superfetche, jaká je skutečná efektivita však bohužel netuším.

Poznámka pro bastlíře: Existují "zaručené" finty, jak Superfetch zprovoznit i na starších Windows XP, někteří vtipálci tvrdí, že ve Windows XP tato funkce je, stačí ji pouze úpravou registrů zapnout údajně klíčem: [HKLM \SYSTEM \CurrentControlSet \Control \SessionManager \MemoryManagement \PrefetchParameters] "EnableSuperfetch". Toto je však nesmysl pocházející z jedné dávné internetové kachny. Windows XP žádný Superfetch neznají, takže jej nelze ani zapnout. Web XPMyths o tomto "zázraku" mluví jednoznačně - Anyone who says this works is not only lying but a fool.

Fajn, to bychom měli otázku celkového využití paměti, ale pořád nechápeme, kde zjistit, kolik paměti spotřebují jednotlivé procesy. Odpověď na tuto otázku je totiž složitá, a dost možná přesně odpovědět vůbec nelze. Podívejme se, proč tomu tak je.

Koncepce paměti ve Windows Vista

Hlavním pojmem, na který si budeme muset zvyknout, je Pracovní sada (Working set, dále WS). Zjednodušeně řečeno, WS říká, kolik paměti každý proces využívá. Ve výchozím nastavení zobrazuje task manager pouze Soukromou pracovní sadu (jinak též Svěření, Private working set, dále PWS), který je podmnožinou WS. Samotný WS se tedy skládá z PWS a paměti, kterou mohou sdílet ostatní procesy. Přitom nikde není vidět, které procesy využívají kolik sdílené paměti, takže už tady se ukazuje, že zjištění přesné paměťové náročnosti není úplně jednoduché. Tento rys sdílené paměti ve WS se již částečně objevil ve starších Windows XP, ovšem celý mechanismus byl skrytý, nyní ve Windows Vista je vše obnaženo až na kost, a hledej šmudlo.

Vistalizace 7: paměť v systému Windows Vista

Jednotlivé sloupce s údaji lze zobrazit stejně jako ve Windows XP - Zobrazit > Vybrat sloupce... Nabídka se však proti Windows XP změnila, a již nevidíme využití paměti a využití virtuální paměti pro jednotlivé sloupce. Můžeme zobrazit pouze WS a PWS, přičemž další hodnota - Rezervovaná velikost (Commit size, dále CS) vyjadřuje, kolik paměti je pro daný proces rezervováno; tato hodnota je vždy ze všech největší, pokud se obsazení WS/PWS přiblíží CS, je opět navýšena. Hodnoty Stránkovaný a Nestránkovaný fond (Paged / Non-paged Pool) značí, kolik z CS lze stránkovat a které ne, přičemž tyto dvě hodnoty jsou poměrně malé a ani omylem dohromady nedávají CS, a zdá se že pro účely přehledu o spotřebě paměti nejsou vůbec podstatné. V tomto bodě lze tedy říci, že přímo nemůžeme zjistit, kolik který proces aktuálně používá paměti, lze použít pouze přibližný odhad na základě hodnot WS, PWS a CS, přičemž maximální hodnota bude Commit size (Rezervovaná velikost).

Tímto však celá anabáze ještě nekončí. V task manageru se z karty Procesy přepněme na kartu Výkon, zde na Sledování prostředků, a zde na Paměť. V české mutaci Windows Vista jsou jednotlivé sloupce překvapivě pojmenovány jinak než na kartě Procesy, a jsou i přeházeny. Proč se tak stalo, je mi záhadou. Každopádně ani zde nelze vyčíst nic jiného, než co jsme si prohlédli na kartě Procesy. Naštěstí zde ve skutečnosti nejsou rozpory proti kartě Procesy.

Vistalizace 7: paměť v systému Windows Vista

Ne tak na samotné kartě Výkon. Zde můžeme vidět, kolik fyzické paměti v počítači máte, kolik z toho je cachováno (česky V mezipaměti, tedy kolik využívají spuštěné procesy, nazvané to je poměrně nelogicky), a kolik je volno.

Vistalizace 7: paměť v systému Windows Vista

Na vzorovém obrázku dobře vidíme, že volno není prakticky nic, procesy využívají přes 1GB fyzické paměti, něco málo paměti zabírá paměť jádra, zbytek je v režii Superfetch. Taktéž zde můžeme vidět využití stránkovacího souboru; Windows zde poněkud nelogicky nazývají "stránkovacím souborem" celou operační paměť, tedy fyzickou RAM i pagefile na disku. Ve stavovém řádku dole opět vidíme údaj o využití fyzické paměti, ovšem pokud odečteme cachovanou fyzickou paměť od celkové hodnoty, stejně dostaneme jinou hodnotu než systém ukazuje dole, což je skutečně záhadné a nejspíš to souvisí s rozdíly v rezervované a skutečně využívané paměti procesy.

Tak jako tak zjišťujeme, že využití paměti ve Windows Vista ve srovnání se staršími Windows je nesrovnatelně komplikovanější, a celé to je "černá skříňka", do které je velký problém nahlédnout, a ani online informace přímo od Microsoftu nejsou sdílnější. Informace o využití paměti jednotlivými procesy jsou pouze orientační. To ovšem neznamená, že nejde zjistit nic; pokud nějaký proces žere příliš mnoho prostředků, lze to z task manageru vyčíst pořád stejně dobře.

Na druhou stranu, vzhledem k agresivnímu využívání volné paměti Superfetchem není až tak moc podstatné, kolik procesy přesně využívají paměti, i kdybychom spotřebu zredukovali vypnutím zbytečných procesů, stejně by Superfetch okamžitě volnou paměť zužitkoval. Ostatně, k čemu je operační paměť, když není využita? Na ozdobu? :).

Osobně bych doporučil soustředit se spíše na vypnutí zbytečných procesů, které by mohly žrát procesorový čas (ovšem přesný monitoring u tak složitého systému jako Windows Vista může vypadat podobně jako monitoring paměti).

Ptáte se tedy, jak celý běh systému zrychlit, když "to stejně funguje tak nějak samo, a ovlivnit to jde špatně"? Pořád existují univerzální finty, které běhu systému pomůžou, podívejme se tedy na paměťovou optimalizaci Windows Vista.



 
Komentáře naleznete na konci poslední kapitoly.
413 čtenářů navrhlo autorovi prémii: 183.3Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.