Dacă încărcați un program, Windows trebuie să copieze executabilul în memorie pentru a-l putea rula. Dacă închideți aplicația, programul există în continuare în memoria RAM. Dacă rulați din nou programul, Windows nu va trebui să încarce nimic de pe disc – totul va sta în RAM.
Toată memoria RAM utilizată devine o memorie cache a hard disk-ului. Deoarece discul este cu șase ordine de mărime mai lent decât memoria RAM, doriți ca o cantitate cât mai mare din programele și fișierele de date să stea în RAM. RAM-ul dvs. nefolosit devine o memorie cache. Aceasta este ceea ce reprezintă memoria de rezervă. Este memoria care să fie dată imediat oricărei aplicații care are nevoie de ea, dar în schimb este în așteptare în cazul în care este nevoie de conținutul ei:
- https://i.imgur.com/NQwFGoB.png
Acum, în acest moment, pe calculatorul meu am 8 GB de memorie care nu face nimic altceva decât să fie o memorie cache pentru hard disk.
Acum, dacă un program are nevoie de memorie RAM, Windows îi va da puțină memorie. Dar, înainte de a putea ceda memoria unui program, trebuie să se asigure că mai întâi a pus la zero memoria.
Cercetător Quiz: De ce trebuie ca Windows să reducă la zero memoria RAM înainte de a o putea da unui alt proces?
Windows păstrează o parte din memoria care a fost redusă leneș la zero și este gata să o predea unei aplicații la un moment dat. În Managerul de resurse, această memorie zerată și pregătită să plece se numește *Memorie liberă; o puteți vedea în captura de ecran de mai sus.
Este cunoscută și sub numele de lista de pagini zerate, deoarece memoria a fost zerată și nu face nimic util pe calculator:
- https://i.imgur.com/47xDkzT.png
Ce este SuperFetch?
Ce face SuperFetch este să lucreze cu managerul de memorie pentru a încărca în mod proactiv și leneș datele în memoria liberă, astfel încât acestea să fie deja stocate în memoria cache atunci când mergeți să le executați. SuperFetch știe ce aplicații, jocuri, instrumente de dezvoltare încărcați de obicei și le preia leneș în memoria RAM în cazul în care este nevoie de ele.
Așa că, atunci când mă duc să încarc WoW peste 3 minute, acei 8 GB de texturi de joc vor fi deja în RAM. Utilizați poate folosi un instrument precum RAMMap pentru a vedea ce fișiere are în prezent în cache toată memoria RAM din computerul dumneavoastră.
Cine vă spune să dezactivați SuperFetch este un idiot, nu înțelege computerele și forțează Windows să fie mai lent pentru că nu înțelege diferența dintre:
- Memorie liberă în standby
- Memorie liberă în zerod
Și acea persoană are nevoie de o palmă în ceafă pentru că își face intenționat calculatorul mai lent.
Aplicațiile folosesc memoria; nu memoria RAM
Un alt lucru pe care majoritatea oamenilor nu îl înțeleg este diferența dintre setul angajat și setul de lucru. Acest lucru este mai ușor de înțeles pe vremea când Windows 95 rula în 4 MB de memorie.
- pe o mașină monstru cu 16 MB de RAM
- pot avea un program care a angajat 1,5 GB de memorie
- dar folosește doar 117 KB de RAM
Aceasta pentru că tot ce are nevoie programul pentru a funcționa poate încăpea în întregime în 117 KB. Restul fie a fost scris în fișierul swap, fie era deja o copie a unui fișier (de exemplu, pot să mapez un fișier de date de 1,5 GB în spațiul meu de adrese și am angajat 1,5 GB de memorie, în timp ce nu consumă RAM)
De exemplu, unul dintre gadgeturile din bara laterală din Windows Vista/7 a avut o scurgere de memorie… Acest lucru însemna că procesul Sidebar.exe continua să angajeze memorie (până la limita de 2 GB pentru un proces pe 32 de biți), până când procesul se bloca pentru că nu mai avea memorie. Dar Sidebar.exe consuma doar aproximativ 700 KB de memorie RAM, deoarece toată acea memorie pierdută era scrisă în fișierul swap (deoarece nimeni nu o folosea pentru nimic).
Acesta este un motiv pentru care nu dezactivați fișierul swap. Window poate copia pagini de RAM pe hard disk. În cazul în care paginile de RAM nu sunt utilizate efectiv, ele pot fi refolosite pentru alte lucruri (cum ar fi o memorie cache pe disc), deoarece copia de rezervă a acelor date se află în fișierul swap. Dacă sidebarul ar mai solicita vreodată acea memorie (ceea ce nu ar face-o niciodată, pentru că a uitat de ea), Windows poate schimba din nou conținutul acelei memorii RAM de pe hard disk.
tl;dr: am 8.5 GB de memorie liberă:
- 8 GB fac ceva util pentru ca mașina mea să fie mai rapidă
- 0,5 GB se irosesc prin faptul că nu fac nimic
Vreți ca SuperFetch să vă folosească memoria – face ca mașina să fie mai rapidă. Nu-l dezactivați.
Acești oameni sunt ca tatăl meu. El crede că știe suficient cât să fie periculos. M-a sunat plângându-se că mașina lui cu Windows 7 are nevoie de 3 minute pentru a porni. I-am spus:
- este din cauza tuturor rahaturilor de antivirus pe care le rulează
- obține un SSD; va porni în 13 secunde
El obține un SSD, iar Windows tot îi ia 3 minute să pornească. Îi spun că e de vină rahatul lui de anti-virus. Respinge din start opiniile mele. Șase luni mai târziu, reinstalează Windows proaspăt, iar acum pornește în 13 secunde.
Dezactivarea SuperFetch este ca și cum ai dezactiva fișierul swap, sau ai instala un RAM-doubler, sau ai folosi un curățător de registru: te face să arăți ca un idiot. În persoană zâmbesc și dau din cap. În spatele tău vorbesc de rahat despre tine pe reddit.
Lectură bonus
Mai multe pe această temă înainte:
- /r/ProgrammerHumor/comments/68ker6/ultimate_în_colectie_de_gunoaie/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/
Update – nu ar putea SuperFetch hard disk I/O să-mi afecteze jocurile?
Cineva a întrebat, am răspuns, dar voi copia aici pentru vizibilitate și pentru a ajuta la răspândirea informațiilor.
Pe bune, ar putea afecta performanța jocurilor?
Simplu, pur și simplu, nu o va face.
Cea mai mare îngrijorare a ta ar putea fi legată de faptul că SuperFetch îți agită hard disk-ul, citind chestii în timp ce încerci să te joci. Și toate aceste intrări/ieșiri de pe hard disk vor afecta lucrurile „reale” de pe hard disk de care aveți nevoie pentru a vă juca jocul.
Nu va fi așa.
Verificați Resource Monitor, fila Disk. Windows 7 a adăugat o caracteristică prin care aplicațiile pot indica faptul că doresc să efectueze operațiuni de I/O cu o prioritate de „fundal”.
- un SSD are un timp de răspuns în jur de 1-2 ms
- un HDD cu platină rotativă are un timp de răspuns în jur de 10-20 ms
Și astfel, în Resource Monitor, puteți vedea cât timp durează să deservească I/O-ul hard-diskului. Iar la HDD-urile rotative, veți vedea de obicei 10-30 ms:
- https://i.imgur.com/m4ogUc5.png
Dar în timp ce acest lucru se întâmplă, există alte operațiuni de I/O pe hard-disk care rulează cu prioritate de fundal. Windows se va asigura că operațiunile I/O din fundal nu interferează niciodată cu operațiunile I/O obișnuite. I/O în fundal poate fi pedepsit atât de mult încât poate dura 500-1000ms pentru a servi o citire în fundal:
- https://i.imgur.com/3SATs9M.png
Așa că avem:
ReadResponse timeSSD1 msHDD10 msBackground Priority I/O500 ms
Este păcat că mai mulți dezvoltatori nu știu despre Background I/O Priority, mă uit la voi:
- Steam downloader
- uTorrent
- Battle.net updater
- Windows Update(!!!)
Pentru că ajută foarte mult.