Jeśli załadujesz program, Windows musi skopiować plik wykonywalny do pamięci, aby go uruchomić. Jeśli zamkniesz aplikację, program nadal istnieje w pamięci RAM. Jeśli uruchomisz program ponownie, system Windows nie będzie musiał ładować niczego z dysku – wszystko będzie siedzieć w pamięci RAM.

Cała używana pamięć RAM staje się pamięcią podręczną dysku twardego. Ponieważ dysk jest sześć rzędów wielkości wolniejszy niż pamięć RAM, chcesz, aby jak najwięcej programów i plików danych znajdowało się w pamięci RAM. Twoja nieużywana pamięć RAM staje się pamięcią podręczną. To jest to, co pamięć standby jest. Jest to pamięć, która ma być natychmiast przekazana każdej aplikacji, która jej potrzebuje, ale zamiast tego jest w gotowości na wypadek, gdyby jej zawartość była potrzebna:

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

Więc teraz na moim komputerze mam 8 GB pamięci, która nie robi nic poza byciem pamięcią podręczną dla dysku twardego.

Teraz, jeśli program potrzebuje trochę pamięci RAM, Windows da mu trochę pamięci. Ale zanim przekaże pamięć programowi, musi być pewien, że najpierw wyzeruje pamięć.

Czytelnik Quiz: Dlaczego system Windows musi wyzerować pamięć RAM, zanim przekaże ją innemu procesowi?

Windows utrzymuje pewną ilość pamięci, która została leniwie wyzerowana i jest gotowa do przekazania aplikacji w dowolnym momencie. W Menedżerze zasobów ta wyzerowana, gotowa do użycia pamięć jest nazywana *wolną pamięcią; można ją zobaczyć na powyższym zrzucie ekranu.

Jest ona również znana jako lista stron zerowych, ponieważ pamięć została wyzerowana i nie robi nic użytecznego na komputerze:

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

Co to jest SuperFetch?

To, co robi SuperFetch, to współpraca z menedżerem pamięci w celu proaktywnego i leniwego ładowania danych do wolnej pamięci, tak aby były już zbuforowane, gdy będziesz chciał je uruchomić. SuperFetch wie, jakie aplikacje, gry, narzędzia deweloperskie zazwyczaj ładujesz i leniwie wstępnie pobiera je do pamięci RAM na wypadek, gdyby były potrzebne.

Więc kiedy pójdę załadować WoW za 3 minuty, te 8 GB tekstur gry będzie już w pamięci RAM. Możesz użyć narzędzia takiego jak RAMMap, aby zobaczyć, jakie pliki są obecnie buforowane w pamięci RAM twojego komputera.

Każdy kto mówi ci abyś wyłączył SuperFetch jest idiotą, nie rozumie komputerów, i zmusza Windows do bycia wolniejszym ponieważ nie rozumie różnicy między:

  • wolną pamięcią w trybie czuwania
  • wolną pamięcią w trybie Zerod

I ta osoba potrzebuje klapsa w tył głowy za celowe spowalnianie komputera.

Aplikacje używają pamięci; nie RAM

Inną rzeczą, której większość ludzi nie rozumie, jest różnica między zestawem zaangażowanym a roboczym. Jest to łatwiejsze do zrozumienia w czasach, gdy Windows 95 działał w 4 MB pamięci.

  • na maszynie potwora z 16 MB pamięci RAM
  • można mieć program, który zaangażował 1,5 GB pamięci
  • ale używa tylko 117 KB pamięci RAM

To dlatego, że wszystko, czego program potrzebuje do działania, może zmieścić się w całości w 117 KB. Reszta albo została zapisana w pliku wymiany, albo była już kopią jakiegoś pliku (np. mogę zmapować plik danych o rozmiarze 1,5 GB do mojej przestrzeni adresowej i przeznaczyć na niego 1,5 GB pamięci, jednocześnie nie zużywając żadnej pamięci RAM)

Na przykład, jeden z gadżetów w pasku bocznym Windows Vista/7 miał wyciek pamięci… Oznaczało to, że proces Sidebar.exe nadal pobierał pamięć (do limitu 2 GB dla procesu 32-bitowego), dopóki proces nie zawiesił się z powodu braku pamięci. Ale Sidebar.exe zużywał tylko 700 KB pamięci RAM, ponieważ cała ta przeciekająca pamięć była zapisywana do pliku wymiany (ponieważ nikt jej do niczego nie używał).

To jest powód, dla którego nie wyłącza się pliku wymiany. Windows może kopiować strony pamięci RAM na dysk twardy. Jeśli te strony RAM nie są używane, mogą być użyte do innych celów (jak pamięć podręczna dysku), ponieważ kopia zapasowa tych danych znajduje się w pliku wymiany. Jeśli sidebar kiedykolwiek poprosiłby o tę pamięć ponownie (co nigdy nie nastąpi, ponieważ o niej zapomniał), Windows może zamienić zawartość pamięci RAM z powrotem z dysku twardego.

tl;dr: mam 8.5 GB pamięci wolnej:

  • 8 GB robi coś pożytecznego, aby moja maszyna była szybsza
  • 0,5 GB marnuje się, nie robiąc nic

Chcesz, aby SuperFetch zużywał pamięć – dzięki niemu maszyna jest szybsza. Nie wyłączaj go.

Ci ludzie są jak mój ojciec. Wydaje mu się, że wie wystarczająco dużo, aby być niebezpiecznym. Zadzwonił do mnie skarżąc się, że jego maszyna z Windows 7 potrzebuje 3 minut, aby się uruchomić. Powiedziałem mu:

  • to przez ten cały syf z antywirusem, który uruchamia
  • zakup dysk SSD; uruchomi się w 13 sekund

Zakupił dysk SSD, a Windows nadal uruchamia się w 3 minuty. Mówię mu, że to wina jego antywirusa. Odrzuca moje opinie z miejsca. Sześć miesięcy później instaluje Windowsa od nowa i teraz uruchamia się w 13 sekund.

Wyłączenie SuperFetch jest jak wyłączenie swapfile, zainstalowanie RAM-doublera lub użycie narzędzia do czyszczenia rejestru: sprawia, że wyglądasz jak idiota. Na żywo uśmiecham się i przytakuję. Za twoimi plecami gadam o tobie gówno na reddicie.

Bonus Reading

Więcej na ten temat wcześniej:

  • /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/

Uaktualnienie -. czy SuperFetch nie zaszkodzi mi w grach?

Ktoś zapytał, ja odpowiedziałem, ale skopiuję tutaj dla widoczności i pomocy w rozpowszechnianiu informacji.

Naprawdę, czy to może wpłynąć na wydajność gier?

Nie, po prostu nie wpłynie.

Twoją największą obawą może być to, że SuperFetch będzie grzebał w twoim dysku twardym, wczytując dane, podczas gdy ty będziesz próbował grać w swoją grę. A wszystkie te operacje we/wy dysku twardego zaszkodzą „prawdziwym” rzeczom na dysku twardym, których potrzebujesz do gry.

Nie zaszkodzi.

Sprawdź Monitor Zasobów, zakładka Dysk. W systemie Windows 7 dodano funkcję, dzięki której aplikacje mogą wskazać, że chcą wykonywać operacje wejścia/wyjścia z priorytetem „w tle”.

  • czas reakcji dysku SSD wynosi około 1-2 ms
  • czas reakcji dysku HDD z wirującym talerzem wynosi około 10-20 ms

W Monitorze zasobów można więc sprawdzić, jak długo trwa obsługa operacji wejścia/wyjścia dysku twardego. Na wirujących dyskach twardych zwykle jest to 10-30 ms:

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

Ale w tym czasie inne operacje we/wy dysku twardego są wykonywane z priorytetem w tle. System Windows zadba o to, aby operacje We/Wy w tle nigdy nie kolidowały z regularnymi operacjami We/Wy. Operacje We/Wy w tle mogą zostać ukarane tak bardzo, że obsługa jednego odczytu w tle może zająć 500-1000ms:

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

Więc mamy:

ReadResponse timeSSD1 msHDD10 msBackground Priority I/O500 ms

Szkoda, że więcej programistów nie wie o Background I/O Priority, patrzę na was:

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

Bo to naprawdę pomaga.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.