Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przed systemem Windows Server 2012 dwa podstawowe potencjalne problemy spowodowały wzrost pamięci podręcznej plików systemowych do momentu, aż dostępna pamięć została prawie wyczerpana w ramach niektórych obciążeń. Gdy taka sytuacja powoduje, że system jest powolny, możesz określić, czy serwer ma jeden z tych problemów.
Liczniki do monitorowania
Pamięć\Long-Term średni okres istnienia pamięci podręcznej rezerwowej (s) < 1800 sekund
Pamięć\Dostępne (w bajtach, kilobajtach lub megabajtach)
Pamięć\Bajty rezydentne pamięci podręcznej systemu
Jeśli Memory\Available Mbytes jest niskie, a jednocześnie Memory\System Cache Resident Bytes zużywają znaczną część pamięci fizycznej, możesz użyć RAMMAP, aby dowiedzieć się, do czego służy pamięć podręczna.
Pamięć podręczna plików systemowych zawiera struktury danych metapliku NTFS
Ten problem jest wskazywany przez dużą liczbę aktywnych stron metapliku w danych wyjściowych RAMMAP, jak pokazano na poniższej ilustracji. Ten problem mógł zostać zaobserwowany na zajętych serwerach z milionami plików, do których uzyskuje się dostęp, co powoduje buforowanie danych metapliku NTFS, które nie są zwalniane z pamięci podręcznej.
Problem został rozwiązany przez narzędzie DynCache . W systemie Windows Server 2012 lub nowszym architektura została przeprojektowana i ten problem nie powinien już istnieć.
Pamięć podręczna plików systemowych zawiera zamapowane pliki pamięci
Ten problem jest wskazywany przez dużą liczbę aktywnych stron plików mapowanych w danych wyjściowych RAMMAP. Zwykle oznacza to, że niektóre aplikacje na serwerze otwierają wiele dużych plików przy użyciu interfejsu API CreateFile z ustawionym flagą FILE_FLAG_RANDOM_ACCESS .
FILE_FLAG_RANDOM_ACCESS flaga to wskazówka dla Menedżera pamięci podręcznej, aby zachować zamapowane widoki pliku w pamięci tak długo, jak to możliwe (dopóki Menedżer pamięci nie zasygnalizuje niskiego stanu pamięci). Jednocześnie ta flaga nakazuje Menedżerowi pamięci podręcznej wyłączenie wstępnego pobierania danych pliku.
Ta sytuacja została w pewnym stopniu złagodzona przez ulepszenia przycinania zbioru roboczego w systemie Windows Server 2012+, ale sam problem należy rozwiązać przede wszystkim przez dostawcę aplikacji i uniknięcie użycia polecenia FILE_FLAG_RANDOM_ACCESS. Alternatywnym rozwiązaniem dla dostawcy aplikacji może być użycie niskiego priorytetu pamięci podczas uzyskiwania dostępu do plików. Można to osiągnąć przy użyciu interfejsu API SetThreadInformation . Strony, do których uzyskuje się dostęp przy niskim priorytecie pamięci, są usuwane z zestawu roboczego bardziej agresywnie.
Menedżer pamięci podręcznej, zaczynając od systemu Windows Server 2016, wprowadza dodatkowe ograniczenia poprzez ignorowanie FILE_FLAG_RANDOM_ACCESS podczas podejmowania decyzji o przycinaniu, traktując te pliki tak samo jak każdy inny plik otwarty bez flagi FILE_FLAG_RANDOM_ACCESS (Menedżer pamięci podręcznej nadal honoruje tę flagę, aby wyłączyć wstępne pobieranie danych plików). Nadal możesz spowodować nadmierne wypełnienie pamięci podręcznej systemu, jeśli masz otwartych wiele plików za pomocą tej flagi i uzyskujesz do nich dostęp w sposób naprawdę losowy. Zdecydowanie zaleca się, aby FILE_FLAG_RANDOM_ACCESS nie były używane przez aplikacje.
Próg dla zanieczyszczonych stron plików zdalnych jest stale przekraczany
Ten problem jest wskazywany, jeśli system napotyka sporadyczne spowolnienie podczas zapisu z klienta zdalnego. Ten problem może wystąpić, gdy duża ilość danych jest zapisywana z szybkiego klienta zdalnego do powolnego miejsca docelowego serwera.
Przed systemem Windows Server 2016 w takim scenariuszu, jeśli próg brudnej strony w pamięci podręcznej zostanie osiągnięty, dalsze zapisy będą zachowywać się tak, jakby wystąpił zapis. Może to spowodować opróżnienie dużej ilości danych na dysku, co może prowadzić do długich opóźnień, jeśli magazyn jest powolny, co powoduje przekroczenie limitu czasu połączenia zdalnego.
W systemie Windows Server 2016 i nowszych środki są wprowadzone w celu zmniejszenia prawdopodobieństwa przekroczenia limitu czasu. Zaimplementowano oddzielny próg brudnych stron dla zdalnych zapisów, a po jego przekroczeniu zostanie wykonane automatyczne oczyszczanie bufora. Może to spowodować sporadyczne spowolnienie podczas intensywnej aktywności zapisu, ale eliminuje ryzyko przestoju w większości przypadków. Domyślnie ten zdalny próg zanieczyszczeń wynosi 5 GB na plik. W przypadku niektórych konfiguracji i obciążeń inna liczba działa lepiej.
Jeśli domyślny rozmiar 5 GB nie działa dobrze w przypadku konfiguracji, zaleca się zwiększenie limitu w zakresie 256 MB, dopóki wydajność nie będzie zadowalająca. Należy pamiętać o następujących kwestiach:
Aby zmiany tego klucza rejestru zaczęły obowiązywać, wymagany jest ponowny rozruch.
RemoteFileDirtyPageThreshold mierzony jest w liczbie stron (gdzie rozmiar strony jest zarządzany przez Menedżera pamięci podręcznej). Oznacza to, że należy ustawić żądany rozmiar w bajtach, podzielony przez 4096.
Zalecane wartości to 128 MB <= N <= 50% dostępnej pamięci.
Ten próg można całkowicie wyłączyć, ustawiając go na -1. Nie jest to zalecane , ponieważ może to spowodować przekroczenie limitu czasu dla połączeń zdalnych.
Jeśli na przykład chcesz ustawić limit na 10GiB, czyli 10 737 418 240 bajtów / 4096 = 2 621 440, co jest wartością DWORD dziesiętną 2621440.
Ten próg można kontrolować przy użyciu następującej wartości rejestru.
-
Klucz:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management-
Typ:
DWORD -
Nazwa wartości:
RemoteFileDirtyPageThreshold - Dane wartości: Dziesiętna — liczba stron (rozmiar strony zarządzany przez Menedżera pamięci podręcznej).
-
Typ: