Hlavní navigace

Názor ke článku Kam uložit swap soubor nebo cache prohlížeče? Do RAMDISKu! od Ondřej Novák - Já tedy nevím, ale co se týče PAE...

  • 1. 9. 2010 10:55

    Ondřej Novák (neregistrovaný) 77.75.72.---

    Já tedy nevím, ale co se týče PAE tak ty Windows umí adresovat bez problémů. Ono si spoustu lidí plete fyzickou paměť a virtuální paměť. Virtuální paměť na 32-bitovém systému může být maximálně 4GB, z nichž 1-2GB zabírá systém (nikoliv fyzicky, ale virtuálně) a zbytek je pro aplikaci. To jestli aplikace má k dispozici 2GB nebo 3GB záleží na přepínači /3G a také na příznaku u apliklace, že v tomto režimu umí pracovat.

    Fyzická paměť to je něco jiného. Pokud mám víc paměti, než 4GB, mohu do ní nahrát víc aplikací, které všechny mohou využít svůj přidělený rozsah. Pokud mám paměť 8GB, mohu spustit 4 aplikace které využijí svých 2GB a mám zaručeno, že paměť bude celá využita.

    Ani to není vše, co se s pamětí dá dělat. Windowsy velice neradi nechávají nějakou paměť ladem. Nevyužité bloky do maximálního rozsahu adresovatelné pomocí PAE jsou použité jako disk cache. Jakékoliv čtení i zápisy jsou zálohovány v této cache, aby to bylo hned k dispozici. Při delším provozu systému Windows tedy nenajdete v paměti jediný volný blok. Ať je sebevětší. Buď je tam paměť aplikací, nebo disková cache. Proč taky nechávat paměť ladem, když mě stála nějaké peníze a nemalou částku stojí i její provoz ve formě odběru elektrické energie?

    I kolem TEMP souborů koluje dost mýtů. Ano, vadí mi, že si aplikace nemůže pomocí služeb operačního systému vytvořit virtuální filesystem a do něho ukládát dočasné soubory (jako tmpfs). Ale na druhou stranu, možná to není potřeba, protože Windowsy tohle dělají tak nějak samy, právě díky diskové cache. Dočasné soubory mývají většinou atribu FILE_ATTRIBUTE_TEM­PORARY, který Windowsům říká, že by se měli pokusit tenhle soubor držet v paměti jak dlouho je to možné, a pokud možno jej nedávat na disk. Ve filesystému ho samozřejmě najdete, ale to neznamená, že musí být fyzicky zapsán na disku. Každá trochu rozumější aplikace by měla tímhle atributem označovat všechny dočasné soubory.

    V neposlední řádě bych se zmínil o mýtech kolem swapu. Je naprostá hloupost dávat swap na ramdisk. Jaký to má smysl? Paměť přesouvaná z jedné části paměti na druhou? Mělo by to smysl, kdyby se bloky nějakým způsobem komprimovali, kdysi takovou službu nabízel QEMM pro Windows. Počítalo se s tím, že komprese je mnohem rychlejší než zápis a dekomprese je mnohem rychlejší než čtení. Pak se mohlo swapování pomocí takového komprimovaného ramdisku určitým způsobem zrychlit. V současné době jsem nenašel nic podobného.

    Mnohem lidí vadí, že Windows "swapují" v době, kdy mají dost paměti. Musím vás upozornit, že nejde o klasické swapování, které by zdržovalo. Máte nabušený stroj, plný zajímavého HW a spoustu komponent běží na prázdno. Proč jim nedat nějakou práci dopředu, když by později mohla zdržovat? A tak windowsy nějakým způsobem zálohují změněné stránky na disk do swapu. CPU jim v tom dává docela pěkný nástroj v podobě dirty flagu u každé stránky, který je nastaven při každé změně stránky. Pokud máte nějaké stránky, u kterých hrozí brzké vyřazení, tak jsou na pozadí v době, kdy je disk idle odkládány do foroty. Jakmile je zvýšená potřeba paměti, už se nemusí odkládat, prostě se přepíší jiným obsahem.

    Pokud máte dost paměti, swap by vám neměl vadit. Případně jej lze vypnout. Tím si ale dobrovolně omezítě množství spustitelných aplikací v systému a při větším požadavku na paměť dokonale vykostíte disk cache. Někdy je totiž lepší odswapovat nepoužívané stránky aplikaci v idle (i třeba nepoužívaných služeb, který je ve windows hafo) ve prospěch diskové cache. Při vypnutém swapu to udělat nejde.

    Pořád se ale nevyhnete diskové aktivitě při zápisu stránek ze změněné diskové cache (to dělá i ten linux). Dávat swap na ramdisk je nesmysl. Argumentace PAE jen ukazuje, že autor nepochopil, co PAE vlastně je.

    Při větším množství paměti, kdy většinou vystačíte, ale občas potřebujete víc, se vyplatí dávat swap na SSD disk (pozor, nedávat tam data!) Pomalý zápis do swapu na SSD neucítíte, probíhá na pozadí. Zato velmi znatelně ucítíte rychlejší přiswapování, tedy spíš, vůbec si toho nevšimnete. Pouze v případě obrovských nároků na paměť se může stát, že ucítíte i pomalý zápis a to jen v případě, že Windowsy nestihnout odswapovat všechny dirty stránky před požadavkem na další volnou paměť. To se Vám ale tak často nestane.