Co jest złego w wyłączaniu pliku strony Windows?


15

Ludzie mówią, że zawsze potrzebujesz pliku strony i że zwiększy to wydajność, ale mój system Windows 7 jest skonfigurowany do działania bez pliku strony. Po prostu nie rozumiem, dlaczego ludzie to mówią - mam 6 GiB pamięci RAM, a jedynym momentem, w którym prawie brakowało mi pamięci RAM, była kompilacja Chromium, dla której tymczasowo włączyłem plik strony.

Czy naprawdę potrzebuję pliku strony * w celu przyspieszenia w typowych sytuacjach? Dlaczego?

* Wiem, że zrzuty awaryjne wymagają pliku strony. Jednak nigdy nie używam zrzutów awaryjnych, więc to nie ma znaczenia.

Odpowiedzi:


8

Plik stronicowania nigdy nie zwiększy wydajności, ale niekoniecznie obniża go (przy odpowiednim zarządzaniu pamięcią). Jednak uruchamianie bez pliku strony będzie miało tendencję do zwiększania niestabilności systemu tylko w przypadku aplikacji żądających pamięci, która nie jest dostępna do użycia.

O ile twój system operacyjny nie jest szczególnie kiepski w zarządzaniu pamięcią, plik stronicowania z 6GiB pamięci powinien być mało użyteczny. Nie oznacza to, że w ogóle nie zobaczy zastosowania; IIRC MS Windows jest trochę szalony, jeśli chodzi o stronicowanie, nawet gdy jest dużo dostępnej pamięci. (Dlaczego nigdy się nie dowiem.)

Jednak to, co dzieje się, gdy nie używasz pliku strony, może być wystarczającym powodem, aby go włączyć: ciężkie awarie. Większość aplikacji oczekuje otrzymania żądanej pamięci. Kiedy tego nie robią, rozbijają się. (Ach, ale dawne dobre czasy życia w kilku tysiącach bajtów minęły ... i dla zbyt wielu programistów, podobnie jak praktyka zarządzania pamięcią).

Jeśli aplikacja jest poprawnie zbudowana, ładnie się nie powiedzie. (Przy odrobinie szczęścia w ogóle się nie zawiedzie. Ale nie licz na to.) W przypadku większości aplikacji masz fantastyczną porażkę. Co więcej, im więcej aplikacji zbliża się do tego limitu, tym większe prawdopodobieństwo niestabilności w całym systemie.

Sprawa z własnego doświadczenia. Windows XP, 4GiB, brak pliku strony. Perf był świetny. Dopóki nie zaczęliśmy zbliżać się do limitu 4GiB. Potem wszystko szaleje: aplikacje ulegają awarii, elementy menu pojawiają się tylko częściowo (lub wcale), przyciski nic nie robią itp. Wróciłem do pliku strony, mimo że wydajność była z nim gorsza - ogólna stabilność była po prostu lepsze i ważniejsze.

Być może teraz nie używasz żadnych aplikacji ani nie pracujesz w aplikacjach, które popchnęłyby 6GiB, ale mogę wymyślić kilka sytuacji, w których możesz się zbliżyć: edycja wideo, edycja fotografii, miksowanie i produkcja dźwięku itp. - zasadniczo wszystko, gdzie masz do czynienia z dużą ilością danych (z pracą lub przesyłaniem strumieniowym). Gdy te dane przekroczą możliwości pamięci, istnieje duża szansa, że ​​twoja aplikacja przejdzie w tryb „kupa”.


Tak więc, po prostu (Tak / Nie): czy można powiedzieć, że jeśli nigdy nie użyję ponad 2 GiB pamięci RAM , nie zobaczę wzrostu wydajności ? Czy jest jeszcze gdzieś zastrzeżenie, nawet przy takich warunkach wstępnych?
user541686,

9
Nie, plik strony nigdy nie poprawia wydajności. To tylko poprawia stabilność . Stronicowanie z definicji jest operacją na poziomie dysku, a operacje na dysku są zawsze wolniejsze niż operacje na poziomie pamięci RAM. I jest bardziej prawdopodobne, że nawet przy 6GiB (nigdy nie przekraczającym 2GiB) nadal będą występować problemy z wydajnością, ponieważ system Windows nadal, frustrująco, przesunie nieużywane procesy na dysk. Ktokolwiek pomyślał, że to mądre, chciałbym, żeby się „wyrzucili!)
Kerri Shotts

W porządku. Może dlatego, że to właśnie chciałem usłyszeć, nie wiem, ale podoba mi się twoja odpowiedź. : P Brzmi całkiem rozsądnie, dzięki!
user541686,

1
Nieprawda - plik strony MOŻE poprawić wydajność, ponieważ miejsce nieużywanych danych w zamianie można wykorzystać do buforowania. Spowodowało to dla ciebie takie głosowanie.
peterh - Przywróć Monikę

1
Plik strony MOŻE poprawić wydajność. Zwiększa pamięć RAM dostępną dla wszystkich rodzajów szybkich pamięci podręcznych, poprawiając uruchamianie / ładowanie / działanie programu. Bez pliku strony ta cenna fizyczna pamięć RAM byłaby wypełniona nieusuwalnymi śmieciami.
Ark-kun

7

W tym artykule Mark Russinovich dowiesz się wszystkiego, co chciałeś wiedzieć o pliku strony.

Nie wiem, czy „pamięć podręczna” jest właściwym terminem stosowanym w odniesieniu do tego, co robi plik strony. Pamięć podręczna to szybko dostępne tymczasowe miejsce przechowywania danych. System operacyjny „psuje” rzeczy w pliku strony, gdy istnieje zbyt duża rywalizacja o fizyczną pamięć RAM. Jest to więc zatrzymanie przepełnienia pamięci RAM, aby zapobiec awariom programów z powodu braku pamięci. Ale wierzę, że Windows próbuje umieścić rzeczy, które nie były dostępne przez jakiś czas w pliku strony (i Linux może to zrobić), więc w tym sensie jest to pamięć podręczna, ale tak naprawdę nie jest to jej podstawowa funkcja.

W każdym razie przeczytaj artykuł. To da ci dobre wskazówki, jak ustawić plik stronicowania. Jak mówi @Sandeep Bansal, może się zdarzyć, że od czasu do czasu możesz mieć jedną z nich w ramach „sprawdzania wymagań” w celu uruchomienia (ale nie znam żadnej).

EDYCJA: Ten przykład może pomóc zrozumieć rolę pliku strony:

Powiedzmy, że masz 512 MB pamięci RAM. Masz otwartych wiele programów, w tym samą zminimalizowaną przeglądarkę, która zużywa 250 MB pamięci RAM, a całkowite użycie pamięci RAM przez wszystko, co działa w tym momencie, wynosi 500 MB.

Następnie uruchamiasz inny program (powiedzmy edytor tekstu), który chce przydzielić 150 MB pamięci RAM. Brak pamięci. Jeśli jednak mamy system stronicowania, strony pamięci zawierające zminimalizowaną przeglądarkę można przenieść na dysk. Zatem nowy program może się załadować.

Powiedzmy, że po chwili chcesz wrócić do przeglądarki. Cóż, musi „wczytać” to, co właśnie wysłał na dysk. Jeśli w tym momencie jest wystarczająca ilość wolnej pamięci RAM, można to zrobić bez problemu. Jeśli nie, najpierw trzeba znaleźć coś innego. Jeśli wiele procesorów konkuruje o procesor i występuje ciągłe stronicowanie, wtedy dzieje się powoli i występuje warunek zwany „thrashingiem”. Całe to wchodzenie i wyłączanie stronicowania powoduje mniejszą wydajność, ale pozwala uniknąć „twardego” awarii programów z powodu błędów braku pamięci. Taki jest cel pliku stronicowania. Zbyt dużo stronicowania, tj. „Thrashowanie” prawdopodobnie nie jest lepsze niż program po prostu się poddaje, ponieważ przez większość czasu nie może uzyskać więcej pamięci RAM.

Teraz możesz zobaczyć, jak jeśli istnieją algorytmy przewidujące, co może nie być używane w danym momencie, to system operacyjny może „wstępnie wydrukować” rzeczy, które według niego nie zostaną użyte od razu. To rozlicza system Windows za pomocą pliku strony, jeśli istnieje, nawet jeśli ma wystarczającą ilość pamięci RAM. Stara się udostępnić jak najwięcej pamięci RAM. Windows jest jak Linux, w którym wolna pamięć RAM działa jako pamięć podręczna dysku, więc jeśli gra się w równoważenie, to może przyczynić się do ogólnej wydajności. To wszystko jest częścią projektu systemu operacyjnego i dlaczego 10 lat zajmuje uzyskanie dobrego systemu operacyjnego od tysięcy programistów.

Tak więc, aby faktycznie odpowiedzieć również na twoje pytanie, to jedyna rzecz nie tak z wyłączeniem pliku stronicowania. Wracając do podanego przeze mnie przykładu, bez pliku strony po prostu nie byłbyś w stanie uruchomić przeglądarki lub źle napisane programy, które nie są programowo defensywne w celu przewidywania błędów OOM, mogłyby działać naprawdę dziwnie.


@ultrasawblade: Nadal nie rozumiem: celem każdego rodzaju „pamięci podręcznej” jest zapobieganie wypadkowi na dysk . Jeśli i tak tam się wybierasz, dlaczego nie po prostu pobrać pliku z dowolnego miejsca? Jaki jest sens pliku strony?
user541686,

@ultrasawblade: Również w odniesieniu do artykułu: To mówi in general having [a page file] will mean more usable memory being available to the system. Czekaj, co? Więcej dostępnej pamięci? Czy> 3 GiB trwale nieużywanego miejsca w pamięci RAM jest niewystarczające? (Mylić, ponieważ rzadko używam nawet ponad 2 GiB.)
user541686

2
Pliki stron NIE są buforowane! Jeśli twój ram się zapełni i nadal chcesz się upewnić, że nadal wygląda na to, że twój system ma więcej dostępnego pamięci RAM, zacznie kopiować dane z pamięci RAM na dysk (z procesów, które wydają się senne), więc nadal masz dostępną pamięć RAM dla twoje nowe procesy!
pożarł elysium

2
@ultrasawblade: Mam sprzeciw wobec twojej edycji, że twój przykład określa użycie 97% pamięci RAM (500/512), podczas gdy mój przykład określa użycie 33% pamięci RAM (2 GB z 6). Ja nie pytając o to, co się stanie, gdy zbliżyć się do granicy; Już dobrze wiem, jakie problemy to powodują. Pytałem o to, co się stanie, jeśli masz jeszcze długą drogę do przebycia, w której nie wystąpiłoby żadne thrashowanie ani nic podobnego. Jeśli możesz podać ten sam argument w moim przypadku (używa się 6 GiB RAM i 2 GiB), byłoby to o wiele lepsze; w przeciwnym razie po prostu nie odpowiada na moje pytanie.
user541686

3
+1 dla linku Russinovitch. Jest odpowiedź. Jeśli chcesz zrezygnować z mechanizmu bezpieczeństwa, aby zapobiec możliwym awariom, to jest twoje przeczucie. Windows będzie działał dobrze bez pliku strony, chyba że zdecyduje się tego nie robić. ;)
Kara Marfia

2

Plik stronicowania nie służy tylko do przechowywania zrzutów awaryjnych, ale nie jest do tego stworzony.

Plik strony istnieje, więc może przechowywać dane, których pamięć RAM nie musi przechowywać, jest jak pamięć podręczna dla elementów, które nie muszą istnieć w pamięci, zapewniając w ten sposób więcej pamięci RAM na inne rzeczy.

Masz rację, że możesz nie potrzebować pliku strony, jeśli masz 6 GB pamięci RAM, ale możesz potrzebować pliku strony dla niektórych elementów, pamiętam, że kilka gier wymaga pliku strony, a także może być przydatny, jeśli taki istnieje.

Utworzenie pliku stronicowania o wielkości 500 MB nie szkodzi tylko po to, aby uniknąć problemów, jeśli określony proces tego potrzebuje.


Ale moje pytanie brzmi: powiedzmy, że nigdy nie używam więcej niż 2 GiB pamięci RAM. Czy mimo to włączenie pliku stronicowania przyspiesza mnie ? („To nie boli” różni się od „Tak, daje korzyść”.)
user541686,

Cóż, z 6 GB pamięci RAM nic nie zauważysz, mimo że dostępna jest pamięć RAM, plik stronicowania będzie zawsze używany do innych rzeczy. Mam 4 GB, nigdy tak naprawdę nie przekraczaj tego. Ale mam tylko 1 GB pliku stronicowania, podobnie jak codzienne komputery mają teraz 500 GB + HDD, więc co najmniej 500-1000 MB nie będzie stratą
Sandeep Bansal

@ Sandeep: Hm ... czym dokładnie są te „inne rzeczy”? Jedynym powodem, dla którego nie włączam pliku strony, jest to, że nie rozumiem, dlaczego Windows używałby dysku twardego, skoro jest tak dużo wolnej pamięci RAM, więc jestem ciekawy, jakie są te „inne rzeczy”.
user541686

To samo co Linux, dlaczego Linux używa przestrzeni wymiany, gdy ma dostęp do pamięci RAM. Plik strony zawiera pliki, które nie były używane przez pewien czas poza pamięcią RAM.
Sandeep Bansal

@ Sandeep: Nie mam pojęcia, dlaczego Linux to robi, ta sama różnica dla mnie. Jaki jest sens przechowywania plików w pliku stronicowania? Jeśli nie ma ich w pamięci RAM, dlaczego nie po prostu odczytać ich z dowolnego miejsca na dysku?
user541686,

1

Pierwszym krokiem jest zrozumienie, czym jest pamięć podręczna, a raczej do czego służą różne pamięci podręczne.
CPU ma małą pamięć podręczną, która pozwala mu przechowywać wyniki OP, stany flag i obliczone adresy. Na podwójnym rdzeniu uważam, że wewnętrzna pamięć podręczna ma rozmiar około 1 MB. Jest niezwykle szybki, dostępny tylko dla wewnętrznych elementów procesora, a najbardziej odczuwa go ciepło podkręconego procesora.

Pamięć podręczna poziomu 2 działa jako szybki bufor dla transakcji między procesorem a pamięcią, a także przechowuje wątki kodu zebrane przez pobranie wstępne. Na podwójnym rdzeniu uważam, że typowa instalacja miałaby 6 MB pamięci podręcznej na poziomie 2. Jest bardzo szybki, choć wolniej niż wewnętrzna pamięć podręczna, jest dostępny tylko dla kontrolera pamięci i procesora i znajduje się na dedykowanej linii na magistrali.

Plik strony jest rzeczywiście pamięcią podręczną, ponieważ przechowuje dane, które mogą, ale nie muszą znajdować się w pamięci. System operacyjny może używać pliku stronicowania do różnych zadań, z których jednym jest zapisanie bieżącego stanu pliku danych, który nie został jeszcze zatwierdzony na dysk. Gdy plik stronicowania nie istnieje, to do aplikacji zewnętrznej należy zapewnienie tej funkcjonalności wewnętrznie. Problem w tym scenariuszu polega na tym, że wiele programów nie zachowuje się dobrze, jeśli chodzi o wyrzucanie elementów bezużytecznych, a na dysku pozostają fałszywe pliki .temp. Te resztki nie są częścią manifestu instalacyjnego i mogą utrudniać procedurę odinstalowywania, a także zmniejszać szybkość dostępu do dysku.

Moim zdaniem plik wymiany jest zwykle dobrym rozwiązaniem. Rzeczywiście, jeśli twój system jest bardzo zapełniony Ramem i jest dedykowany 1 konkretnemu zadaniu, a ta aplikacja zajmuje się tymi wszystkimi rzeczami, plik wymiany może nie być potrzebny. Jednym z przykładów może być arkadowa gra wideo, która działa na platformie Windows. Zazwyczaj są one instalowane tylko ze sterownikami potrzebnymi dla obecnych urządzeń i prawdopodobnie nie cierpią z powodu rywalizacji ze sterownikami. W przeważającej części jednak większość aplikacji nie zajmuje się wszystkimi potencjalnymi problemami, które mogą się pojawić, a zwłaszcza tymi, które obejmują wpływ aplikacji innych firm i rywalizację sterowników.

Chociaż możesz zauważyć niski do umiarkowanego spadek wydajności w krótkim okresie dodawania pliku strony, w dłuższej perspektywie wydajność powinna pozostać niezmienna. Brak pliku stron może na początku wydawać się szybszy, ale z czasem wydajność znacznie się obniży.

Steven Malm, MCP.


„Gdy plik stronicowania nie istnieje, to do aplikacji zewnętrznej należy zapewnienie tej funkcjonalności wewnętrznie”. -> Nie jestem pewien, co masz na myśli; programy tak naprawdę nie dbają o to, czy jest tam plik strony, czy nie.
user541686

0

Osobiste doświadczenie

W tej chwili mój laptop z 8 GB pamięci RAM ma problemy uniemożliwiające utworzenie / użycie pliku strony. Moje życie to piekło. Ciągle pojawiają się monity o „małej pamięci”, awarie aplikacji itp. Korzystanie z 3 programów, które jedzą 1-1,5 GB każdy (powiedzmy, przeglądarki internetowej, programu Visual Studio ze specjalnymi wtyczkami itp.), Chodzi po cienkim lodzie.

Kolejny argument

Korzystanie z danych z fizycznej pamięci podręcznej RAM jest bardzo szybkie. Im więcej „wolnej” fizycznej pamięci RAM, tym większa pamięć podręczna może pomieścić. Im więcej uśpionych danych system operacyjny może przenieść z fizycznej pamięci RAM do pliku strony, tym więcej fizycznej pamięci RAM jest zwolnione dla pamięci podręcznych często używanych danych.

Załóżmy, że grasz w grę, która ładuje dane lokalizacji po zmianie lokalizacji. Masz również uruchomioną przeglądarkę internetową, która pozostawia, powiedzmy, 2 GB do gry, co wystarcza na jedną lokalizację. Bez pliku strony za każdym razem, gdy zmieniasz lokalizację, dane będą powoli ładowane z dysku twardego. Dzięki plikowi strony nieużywane dane przeglądarki internetowej zostaną przesłane do pliku strony, a cenna fizyczna pamięć RAM zostanie użyta do przechowywania danych dla kilku lokalizacji, co spowoduje znacznie szybsze ładowanie lokalizacji.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.