Problemy z wydajnością w aplikacjach i usługach pojawiają się, gdy pamięć podręczna plików systemowych zużywa większość fizycznej pamięci RAM

Dotyczy
Microsoft Windows XP Professional x64 Edition Windows Vista Home Basic Windows Vista Home Premium Windows Vista Business Windows Vista Enterprise Windows Vista Ultimate Windows Vista Home Basic 64-bit Edition Windows Vista Home Premium 64-bit Edition Windows Vista Enterprise 64-bit Edition Windows Vista Ultimate 64-bit Edition Windows Server 2008 Datacenter without Hyper-V Windows Server 2008 Enterprise without Hyper-V Windows Server 2008 Standard without Hyper-V Windows Server 2008 Datacenter Windows Server 2008 Enterprise Windows Server 2008 Standard Windows Server 2008 for Itanium-Based Systems Windows Server 2008 R2 Datacenter Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Service Pack 1 Windows Server 2008 R2 Standard

Objawy

Występują problemy z wydajnością aplikacji i usług w różnych wersjach systemów Windows XP, Windows Vista, Windows Server 2003, Windows Server 2008 i Windows Server 2008 R2. Ponadto można zauważyć następujące objawy:

  • Dostępna pamięć jest prawie wyczerpana.
  • Pamięć podręczna plików systemowych zużywa większość fizycznej pamięci RAM.
  • W pamięci podręcznej występuje duża liczba żądań odczytu wysyłanych na dysk twardy.

Przyczyna

Zarządzanie pamięcią w systemach operacyjnych Microsoft Windows wykorzystuje algorytm oparty na zapotrzebowaniu. Jeśli jakikolwiek proces wymaga dużej ilości pamięci i używa jej, zwiększa się rozmiar zestawu roboczego (liczba stron pamięci w fizycznej pamięci RAM) procesu. Jeśli żądania te są ciągłe i niezaznaczone, zestaw roboczy procesu rozrasta się, zajmując całą fizyczną pamięć RAM. W takiej sytuacji zestawy robocze dla wszystkich innych procesów są stronicowane na dysk twardy. Takie zachowanie powoduje zmniejszenie wydajności aplikacji i usług, ponieważ strony pamięci są stale zapisywane na dysku twardym i odczytywane z dysku twardego.

To zachowanie dotyczy również zestawu roboczego pamięci podręcznej plików systemowych. W przypadku ciągłego i dużej liczby żądań odczytu w pamięci podręcznej pochodzących z dowolnego procesu lub ze sterownika rozmiar zestawu roboczego pamięci podręcznej plików systemowych zostanie zwiększony, aby sprostać temu zapotrzebowaniu. Pamięć podręczna plików systemowych zużywa fizyczną pamięć RAM. Dlatego nie ma wystarczającej ilości fizycznej pamięci RAM dla innych procesów.

W 32-bitowych wersjach systemów operacyjnych Microsoft Windows starszych niż Windows Vista teoretyczny limit pamięci podręcznej plików systemowych jest mniejszy niż 1 gigabajt (GB). Ograniczenie zakresu adresów wirtualnych uniemożliwia zestawom roboczym pamięci podręcznej plików systemowych wyczerpanie fizycznej pamięci RAM.

W 32-bitowych wersjach systemów operacyjnych Windows Vista zasoby jądra są przydzielane dynamicznie. Zestaw roboczy pamięci podręcznej plików systemowych zwiększa się, aby zużywać zakres adresów wirtualnych trybu jądra kosztem innych zasobów jądra. Ograniczenie tego zakresu pamięci jest mniejsze niż 2 GB. Jeśli komputer ma więcej niż 2 GB fizycznej pamięci RAM, pamięć podręczna nie może wyczerpać całej fizycznej pamięci RAM. Jednak pamięć podręczna może wyczerpać wirtualną przestrzeń adresową w jądrze. Może to spowodować błędy alokacji dla innych składników jądra.

W 64-bitowych wersjach systemów operacyjnych Windows rozmiar zakresu adresów wirtualnych jest zazwyczaj większy niż fizyczna pamięć RAM. W takiej sytuacji zestaw roboczy pamięci podręcznej plików systemowych może się zwiększyć, zużywając większość fizycznej pamięci RAM.

Rozwiązanie

Algorytmy zarządzania pamięcią w systemach operacyjnych Windows 7 i Windows Server 2008 R2 zostały zaktualizowane w celu rozwiązania wielu problemów z buforowaniem plików występujących we wcześniejszych wersjach systemu Windows. Tylko w niektórych wyjątkowych sytuacjach należy zaimplementować tę usługę na komputerach z systemem Windows 7 lub Windows Server 2008 R2.

Jak ustalić, czy problem dotyczy Twojego systemu

Aby ustalić, czy ten problem dotyczy Twojego systemu, zainstaluj narzędzie SysInternals RamMap. Narzędzie to można pobrać z następującej witryny Windows Sysinternals w sieci Web:

http://technet.microsoft.com/en-us/sysinternals/ff700229
Po uruchomieniu narzędzia wybierz opcję Użyj zliczeń . Spowoduje to wyświetlenie kilku kolumn pokazujących bieżący wzorzec użycia pamięci. Kliknij kolumnę Aktywne , aby posortować dane według liczby używanych bajtów, i odnotować największe użycie bezpośrednio pod sumą.

Jeśli największą liczbą użyć jest "Metaplik" i używana jest duża część dostępnej pamięci, oznacza to, że występuje problem z pamięcią podręczną plików systemowych opisany w sekcji "Objawy". Można to sprawdzić, monitorując za pomocą monitora wydajności licznik bajtów rezydentnych pamięci\pamięci podręcznej systemu, aby obserwować stały wzrost pamięci podręcznej w czasie.

Rysunek 1. Przykładowe dane wyjściowe RamMap, w których występuje problem na komputerze.

10214DE2-59A3-F4C0-07FB-5F75A3CBCD47

Rysunek 2. Przykładowe dane wyjściowe RamMap, w których komputer nie ma problemu.

26eb9766-30fb-0aba-069b-b9f6b636a812

Jeśli licznik bajtów rezydentnych pamięci podręcznej systemu w monitorze wydajności wykazuje tendencję wzrostową w czasie, oznacza to, że problem występuje na komputerze, jak pokazano na rysunku 3.

Rysunek 3. Przykładowe dane wyjściowe monitora wydajności, w których komputer napotyka problem w czasie.

5a390908-db40-e825-d4fd-348cd86d33eb

Wymagania dotyczące ponownego uruchamiania

Podczas instalowania, odinstalowywania lub używania tej usługi nie jest wymagane ponowne uruchomienie komputera.

Jeśli czytasz ten artykuł, ponieważ pracujesz z klientem, który uważa, że ten problem go dotyczy, wykonaj poniższe kroki, aby pomóc w rozwiązaniu tego problemu.

  1. Sprawdź, czy dane wyjściowe RamMap, perfmon lub poolmon klienta potwierdzają, że pamięć podręczna plików systemowych zużywa większość fizycznej pamięci RAM w sposób opisany wcześniej.

  2. Aby uzyskać usługę dynamicznej pamięci podręcznej systemu Windows, pobierz ją tutaj.

  3. Niektóre ustawienia rejestru pamięci podręcznej dynamicznej są następujące:

    Serwery plików, możesz spróbować 1GB.
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
    "MaxSystemCacheMBytes"=dword:00000400
    "MinSystemCacheMBytes"=dword:00000064
    "SampleIntervalSecs"=dword:0000003c
    "CacheUpdateThresholdMBytes"=dword:00000064

    2007, warto wypróbować 500 MB:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
    "MaxSystemCacheMBytes"=dword:000001F4
    "MinSystemCacheMBytes"=dword:00000064
    "SampleIntervalSecs"=dword:0000003c
    "CacheUpdateThresholdMBytes"=dword:00000064

    SQL 2005 i nowsze wersje, w przeszłości podczas pracy z SQL EE, używały 2 GB:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
    "MaxSystemCacheMBytes"=dword:000007D0
    "MinSystemCacheMBytes"=dword:00000064
    "SampleIntervalSecs"=dword:0000003c
    "CacheUpdateThresholdMBytes"=dword:00000064

Więcej informacji

Aby obejść ten problem, użyj funkcji interfejsu API GetSystemFileCacheSize i funkcji interfejsu API SetSystemFileCacheSize, aby ustawić maksymalną lub minimalną wartość rozmiaru zestawów roboczych pamięci podręcznej plików systemowych. Użycie tych funkcji jest jedyną obsługiwaną metodą ograniczenia zużycia pamięci fizycznej przez pamięć podręczną plików systemowych.

Usługa dynamicznej pamięci podręcznej systemu Microsoft Windows to przykładowa usługa, która demonstruje jedną ze strategii użycia tych interfejsów API w celu zminimalizowania skutków tego problemu.

Zainstalowanie i używanie usługi dynamicznej pamięci podręcznej firmy Microsoft nie powoduje wyłączenia wsparcia dla systemu Microsoft Windows. Ta usługa i jej kod źródłowy są podane jako przykład użycia obsługiwanych przez firmę Microsoft interfejsów API w celu zmniejszenia rozrostu pamięci podręcznej systemu plików.

Usługę i kod źródłowy można uzyskać z następującej witryny firmy Microsoft w sieci Web:

http://www.microsoft.com/download/details.aspx?FamilyID=e24ade0a-5efe-43c8-b9c3-5d0ecb2f39af&displaylang=pl

Dodatkowe zasoby

Przeczytaj rozdziały 9 (Zarządzanie pamięcią) i 10 (Menedżer pamięci podręcznej) w 5. edycji wewnętrznej systemu Windows.

ZARZĄDZANIE PAMIĘCIĄ (PROBLEMY Z DUŻĄ PAMIĘCIĄ PODRĘCZNĄ SYSTEMU) Wpis w blogu

Powolne problemy z kopiowaniem dużych plików — wpis w blogu

Ograniczenia pamięci dotyczące poszczególnych wersji systemu Windows

976618 Problemy z wydajnością w aplikacjach i usługach pojawiają się, gdy pamięć podręczna plików systemowych zużywa większość fizycznej pamięci RAM

918483 Jak ograniczyć stronicowanie pamięci puli buforów w 64-bitowej wersji SQL Server

895932 Co należy wziąć pod uwagę przed włączeniem trybu pamięci podręcznej systemu w systemie Windows XP

232271 Jak zoptymalizować serwer systemu Windows NT przy użyciu rejestru

837331 Menedżer pamięci podręcznej w Windows Server 2003 — informacje

http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx

Temat LargeSystemCache w witrynie TechNet

Wpis na blogu RamMap

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.