Jak sprawdzić, czy mój serwer Windows się zmienia?

29

Korzystam z Eksploratora procesów do monitorowania serwera Windows podczas rekonstrukcji niektórych danych. Jest to przede wszystkim proces wymagający dużej mocy procesora, ale chcę się upewnić, że się nie zamienia. Jak mogę sprawdzić, czy używa Process Explorer? Moje początkowe przypuszczenie znajduje się w oknie Informacje o systemie, to Delta zapisu pliku stronicowania. Tak? Nie? Jestem idiotą?

* Zrzut ekranu nie pochodzi z serwera ... tylko przykład.

alt text http://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg

churnd
źródło

Odpowiedzi:

30

„Licznik stron na sekundę to licznik do obejrzenia, ale nie powinieneś się tym przejmować” zamianą ”, ponieważ system Windows nie używa pliku stronicowania jak * nixes.

Najpierw musisz zrozumieć, że strony systemu Windows nie są wyłączone. Zacytuję odpowiednią część posta na blogu Erica Lipperta (lekko zredagowanego), ponieważ sam nie mogę tego lepiej powiedzieć:

„Pamięć RAM można postrzegać jedynie jako optymalizację wydajności. Dostęp do danych w pamięci RAM, gdzie informacje są przechowywane w polach elektrycznych, które rozprzestrzeniają się z prędkością zbliżoną do prędkości światła, jest znacznie szybszy niż dostęp do danych na dysku, gdzie informacje są przechowywane w ogromnej, ciężkiej cząsteczki metali żelaznych

System operacyjny śledzi, które strony pamięci, z których najczęściej uzyskuje się dostęp do procesów, i wykonuje ich kopię w pamięci RAM, aby uzyskać wzrost prędkości. Gdy proces uzyskuje dostęp do wskaźnika odpowiadającego stronie, która nie jest obecnie buforowana w pamięci RAM, system operacyjny powoduje „błąd strony”, wychodzi na dysk i wykonuje kopię strony z dysku na pamięć RAM, przyjmując uzasadnione założenie że wkrótce znów będzie dostępny.

System operacyjny jest również bardzo inteligentny, jeśli chodzi o udostępnianie zasobów tylko do odczytu. Jeśli oba procesy ładują tę samą stronę kodu z tej samej biblioteki DLL, system operacyjny może współużytkować pamięć podręczną RAM między dwoma procesami. Ponieważ kod prawdopodobnie nie zostanie zmieniony przez żaden proces, rozsądnie jest zapisać zduplikowaną stronę pamięci RAM, udostępniając ją.

Ale nawet przy sprytnym udostępnianiu, w końcu w tym systemie buforowania zabraknie pamięci RAM. Kiedy tak się dzieje, system operacyjny zgaduje, które strony będą prawdopodobnie wkrótce ponownie dostępne, zapisuje je na dysku, jeśli zostały zmienione, i zwalnia pamięć RAM, aby odczytać coś, co jest bardziej prawdopodobne, że będzie ponownie dostępne wkrótce.

Gdy system operacyjny zgadnie niepoprawnie lub, co bardziej prawdopodobne, gdy po prostu nie ma wystarczającej ilości pamięci RAM, aby zapisać wszystkie często używane strony we wszystkich uruchomionych procesach, komputer zaczyna „przeładowywać”. System operacyjny spędza cały swój czas na pisaniu i odczytywaniu drogiej pamięci dyskowej, dysk działa nieprzerwanie i nie wykonuje się żadnej pracy.

Oznacza to również, że „brak pamięci RAM” rzadko powoduje błąd „brak pamięci”. Zamiast błędu powoduje to obniżenie wydajności, ponieważ pełny koszt faktu, że miejsce na dysku faktycznie znajduje się na dysku, nagle staje się istotny.

Innym sposobem spojrzenia na to jest to, że całkowita ilość pamięci wirtualnej, którą zużywa Twój program, nie jest tak naprawdę bardzo istotna z punktu widzenia jego wydajności. Istotna jest nie całkowita ilość zużytej pamięci wirtualnej, ale (1) ile tej pamięci nie jest współdzielone z innymi procesami, (2) jak duży jest „zestaw roboczy” często używanych stron, i ( 3) czy zestawy robocze wszystkich aktywnych procesów są większe niż dostępna pamięć RAM.

Do tej pory powinno być jasne, dlaczego błędy „brak pamięci” zwykle nie mają nic wspólnego z ilością posiadanej pamięci fizycznej ani z ilością dostępnej pamięci. Prawie zawsze chodzi o przestrzeń adresową, która w 32-bitowym systemie Windows jest stosunkowo niewielka i łatwo ulega fragmentacji. „

Kilka dodatkowych punktów:

  1. biblioteki dll i pliki programów są zawsze tylko stronicowane, nigdy nie są usuwane, ponieważ znajdują się już na dysku (i zwykle pierwsze strony są zwalniane, gdy fizyczny RAM jest niski)
  2. o wiele bardziej prawdopodobne jest, że zabraknie Ci wolnych wpisów w tablicy stron lub będziesz mieć mocno frustrowaną pamięć niż jakiekolwiek inne problemy z pamięcią (inne niż ogólna słaba wydajność, jak już wspomniano
  3. nawet jeśli działasz bez pliku strony, nadal możesz mieć błędy strony
  4. Mówiąc ogólnie, pamięć zaangażowana mówi więcej o tym, jak proces wykorzystuje pamięć

aby zobaczyć pełny obraz zarządzania pamięcią w systemie Windows

Menedżer pamięci wirtualnej w systemie Windows NT

jeśli uważasz, że masz problem z pamięcią, najpierw sugeruję obejrzenie tej prezentacji na temat rozwiązywania problemów z pamięcią systemu Windows

Oto świetne wyjaśnienie, dlaczego czasami „brakuje pamięci”, gdy nie jest to spowodowane fragmentacją pamięci:

Zobacz także Przekraczanie granic systemu Windows: pamięć fizyczna

Więcej informacji na temat pamięci wirtualnej, fragmentacji i wycieków pamięci oraz WOW64

RAM, pamięć wirtualna, plik stronicowania i tak dalej (obsługa Microsoft)

Aktualizacja:

Windows 10 robi coś innego z pamięcią i z czasem zobaczysz proces o nazwie „Pamięć systemowa i skompresowana”. Windows 10 dodaje „magazyn kompresji” do listy stronicowania. Ten RAM jest pamięcią UŻYTKOWNIKA, która jest własnością systemu (zazwyczaj system miał tylko pamięć jądra). Pamięć ta jest kompresowana w celu zmniejszenia średniej do około 30%. Pozwala to na przechowywanie większej liczby stron w pamięci (dla tych, którzy wykonują matematykę, czyli o 70% więcej miejsca) Należy pamiętać, że jeśli pamięć nadal ma presję, strony ze sklepu kompresji (tryb użytkownika System przestrzeni systemowej) można umieścić na zmodyfikowanym lista (skompresowana), którą można zapisać w fizycznym pliku stronicowania. System zobaczy, że pochodzą one z przestrzeni trybu użytkownika systemu i są skompresowane, i nie będzie próbował umieścić ich z powrotem w sklepie. Tak więc w systemach Windows 10 może to wyglądać, jakby system wdychał RAM, ale w rzeczywistości stara się być bardziej wydajny w użyciu RAM. Użytkownicy komputerów Mac używają podobnej funkcji od 2013 roku, a nowsze wersje jądra Linuksa używają wersji kompresji pamięci. Ta metoda oszczędzania pamięci jest nie tylko lepsza, ale już powszechna wśród innych systemów operacyjnych.

Jim B.
źródło
6

Tak, delty stronicowania dawałyby ci na żywo informację o tym, ile serwer stronicuje (lub „zamienia”), ale tylko w tym momencie. Aby przyjrzeć się temu dokładniej i zobaczyć widok historyczny, sugerowałbym użycie Monitora wydajności ( perfmon.exe ) do sporządzenia wykresu lub zapisu tych delt (i wszelkich innych interesujących liczników wydajności, które mogą pomóc w skorelowaniu określonych zdarzeń lub działań z skokami w aktywność stronicowania).

Jessica McKinnon
źródło
5

Monitor wydajności (perfmon) jest tutaj Twoim przyjacielem. Szukasz twardych błędów strony (to znaczy błędów strony, gdy strona pamięci potrzebna do spełnienia żądania musi zostać odczytana z dysku), więc monitorowanie zarówno twardych, jak i miękkich błędów strony jest nieoptymalne.

Obserwuj licznik „Strony wejścia / s” w obiekcie „Pamięć” za pomocą perfmon, aby dowiedzieć się, ile poważnych błędów strony występuje.

Evan Anderson
źródło
0

Dobrą zasadą jest to, że jeśli opłata za zatwierdzanie jest wyższa niż pamięć fizyczna, na pewno coś stronicujesz , ale jeśli Twoja aplikacja korzysta z jednego stałego bufora danych, który jest zawsze w użyciu, zwykle nie będzie stronicowana w ogóle. Może wystąpić pewne opóźnienie przy uruchomieniu, gdy inna pamięć jest stronicowana, aby zrobić na to miejsce.

Maximus Minimus
źródło
3
mh: Nie jestem pewien, czy zgadzam się z twoją ogólną zasadą. Jeśli opłata zatwierdzenia jest wyższa niż pamięć fizyczna, oznacza to po prostu, że w pewnym momencie coś zostało stronicowane, ale system niekoniecznie nadal stronicuje. Coś zostanie wywołane tylko wtedy, gdy wystąpi błąd strony. W przeciwnym razie zgadzam się, że użycie jednego stałego bufora danych byłoby najlepsze, ale myślę, że prawdopodobnie przenosimy się do królestwa stackoverflow.com
Jessica McKinnon
Mój zło, powinienem był powiedzieć „coś zostało zamienione w przeszłości, a przyszłe żądania pamięci również będą wymagały zamiany”.
Maximus Minimus
Niekoniecznie jest to prawdą, że aplikacja może blokować tylko strony w pamięci, która ma to uprawnienie do systemu operacyjnego.
Jim B