Pokud načtete program, systém Windows musí zkopírovat spustitelný soubor do paměti, aby jej mohl spustit. Pokud aplikaci zavřete, program stále existuje v paměti RAM. Pokud program spustíte znovu, systém Windows nebude muset nic načítat z disku – vše bude ležet v paměti RAM.

Veškerá použitá paměť RAM se stane mezipamětí pevného disku. Protože disk je o šest řádů pomalejší než paměť RAM, chcete, aby co nejvíce programů a datových souborů leželo v paměti RAM. Z vaší nepoužívané paměti RAM se stane mezipaměť. Právě to je pohotovostní paměť. Je to paměť, která být okamžitě poskytnuta jakékoli aplikaci, která ji potřebuje, ale místo toho je v pohotovostním režimu pro případ, že její obsah bude potřeba:

  • https://i.imgur.com/NQwFGoB.png

Takže právě teď mám v počítači 8 GB paměti, která nedělá nic jiného, než že slouží jako mezipaměť pro pevný disk.

Pokud nějaký program potřebuje trochu paměti RAM, systém Windows mu ji poskytne. Ale než může paměť programu předat, musí si být jistý, že ji nejprve vynuluje.

Kvíz pro čtenáře:

Systém Windows si uchovává určitou paměť, která byla líně vynulována a je připravena ji v okamžiku předat aplikaci. Ve Správci prostředků se tato vynulovaná paměť připravená k předání nazývá *Volná paměť; můžete ji vidět na obrázku výše.

Je také známá jako seznam vynulovaných stránek, protože paměť byla vynulována a v počítači nedělá nic užitečného:

  • https://i.imgur.com/47xDkzT.png

Co je to SuperFetch?

SuperFetch spolupracuje se správcem paměti a proaktivně a líně načítá data do volné paměti, takže když je chcete spustit, jsou již uložena v mezipaměti. SuperFetch ví, jaké aplikace, hry, vývojářské nástroje obvykle načítáte, a líně je předem načte do paměti RAM pro případ, že budou potřeba.

Takže až půjdu za 3 minuty načíst WoW, těch 8 GB herních textur už bude v RAM. Pomocí nástroje, jako je RAMMap, můžete zjistit, jaké všechny soubory jsou v paměti RAM vašeho počítače aktuálně uloženy v mezipaměti.

Každý, kdo vám říká, abyste zakázali SuperFetch, je idiot, nerozumí počítačům a nutí Windows být pomalejší, protože nerozumí rozdílu mezi:

  • Volná paměť v pohotovostním režimu
  • Volná paměť v pohotovostním režimu

A takový člověk potřebuje dostat přes držku za to, že záměrně zpomaluje svůj počítač.

Aplikace používají paměť; ne RAM

Další věc, kterou většina lidí nechápe, je rozdíl mezi odevzdanou a pracovní sadou. To se snadněji chápalo v dobách, kdy Windows 95 běžely ve 4 MB paměti.

  • na monstrózním stroji s 16 MB RAM
  • může mít program, který má zabranou 1,5 GB paměti
  • ale využívá pouze 117 KB RAM

To proto, že vše, co program potřebuje k práci, se celé vejde do 117 KB. Zbytek byl buď zapsán do odkládacího souboru, nebo byl již kopií souboru (např. mohu namapovat datový soubor o velikosti 1,5 GB do svého adresového prostoru, a tím jsem odevzdal 1,5 GB paměti, přičemž nespotřebovává žádnou paměť RAM)

Například u jedné z miniaplikací v postranním panelu systému Windows Vista/7 došlo k úniku paměti. To znamenalo, že proces Sidebar.exe neustále odevzdával paměť (až do limitu 2 GB pro 32bitový proces), dokud proces nespadl, protože mu došla paměť. Ale Sidebar.exe spotřebovával jen asi 700 KB RAM, protože všechna tato uniklá paměť byla zapsána do odkládacího souboru (protože ji nikdo k ničemu nepoužíval).

To je důvod, proč odkládací soubor nevypínat. Okna mohou kopírovat stránky paměti RAM na pevný disk. Pokud se stránky RAM skutečně nepoužívají, mohou být znovu použity k jiným účelům (například jako mezipaměť disku), protože záložní kopie těchto dat je ve swapovacím souboru. Pokud by si postranní panel někdy znovu vyžádal tuto paměť (což se nikdy nestane, protože na ni zapomněl), Windows může obsah této paměti RAM vyměnit zpět z pevného disku.

tl;dr: mám osmičku.5 GB volné paměti:

  • 8 GB dělá něco užitečného, aby byl můj počítač rychlejší
  • 0,5 GB přijde nazmar tím, že nic nedělá

Chcete, aby SuperFetch využíval paměť – zrychluje počítač. Nevypínejte ho.

Tito lidé jsou jako můj otec. Myslí si, že ví právě tolik, aby byl nebezpečný. Volal mi a stěžoval si, že jeho počítač s Windows 7 startuje 3 minuty. Říkám mu:

  • je to všemi těmi antivirovými sračkami, které spouští
  • pořiď si SSD; nastartuje to za 13 sekund

Pořídil si SSD, a Windows stejně startují 3 minuty. Říkám mu, že je to tím jeho antivirovým svinstvem. Odmítá mé názory bez rozmyslu. O půl roku později si znovu nainstaluje Windows čerstvý a teď už startuje za 13 sekund.

Zakázat SuperFetch je jako zakázat swapfile, nainstalovat RAM-doubler nebo používat čistič registrů: dělá to z vás idiota. Osobně se usmívám a přikyvuji. Za vašimi zády vás pomlouvám na redditu.

Bonusové čtení

Více na toto téma předtím:

  • /r/ProgrammerHumor/comments/68ker6/ultimate_in_garbage_collection/dh071ep/
  • /r/technology/comments/1xbofp/ramdrive_to_improve_performance_and_prolong_ssd/cf9wbmf/
  • /r/programming/comments/4nvimz/john_carmack_on_memory_mapped_gpu_assets/d4818ep/

Aktualizace – Nemohl by SuperFetch I/O pevného disku poškodit mé hraní?

Někdo se ptal, odpověděl jsem, ale zkopíruji to sem kvůli přehlednosti a abych pomohl šířit informace.

Na vážno tho, mohlo by to ovlivnit herní výkon?

Jednoduše řečeno ne.

Vaše největší obavy by mohly být z toho, že SuperFetch vám zahltí pevný disk, načte věci, zatímco se snažíte hrát hru. A všechny tyto vstupy a výstupy z pevného disku poškodí „skutečné“ věci na pevném disku, které potřebujete ke hraní hry.

Nepoškodí.

Zkontrolujte Monitor prostředků, kartu Disk. Systém Windows 7 přidal funkci, kde mohou aplikace označit, že chtějí provádět I/O operace s prioritou „na pozadí“.

  • Disk SSD má dobu odezvy kolem 1-2 ms
  • Točivý plotnový HDD má dobu odezvy kolem 10-20 ms

A tak v nástroji Sledování prostředků můžete vidět, jak dlouho trvá obsluha I/O pevného disku. A u točivých pevných disků obvykle vidíte 10-30 ms:

  • https://i.imgur.com/m4ogUc5.png

Ale zatímco se tak děje, probíhají jiné I/O operace pevného disku s prioritou na pozadí. Systém Windows zajistí, aby I/O operace na pozadí nikdy nezasahovaly do běžných I/O operací. Vstupy/výstupy na pozadí mohou být potrestány natolik, že obsluha jednoho čtení na pozadí může trvat 500-1000 ms:

  • https://i.imgur.com/3SATs9M.png

Takže máme:

Čas odpovědi na čteníSSD1 msHDD10 msPriorita I/O na pozadí500 ms

Je škoda, že o prioritě I/O na pozadí neví více vývojářů, dívám se na vás:

  • Steam downloader
  • uTorrent
  • Battle.net updater
  • Windows Update(!!)

Protože to opravdu pomáhá.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.