Od czasu uaktualnienia do systemu Windows 10 mój system nadmiernie zużywa pamięć RAM
Przeczytałem trochę i stwierdziłem, że prawdopodobnie pamięć przecieka przez sterownik. Dostałem więc zestaw sterowników dla systemu Windows i śledziłem użycie pamięci za pomocą poolmon:
Jednak tak naprawdę nie wiem, jak to zrobić. Czy element jest oznaczony jako „smNp” winowajcą tego wydania? Jak przejść stamtąd do faktycznej identyfikacji kierowcy?
Próbowałem czegoś takiego jak „C: \ Windows \ System32 \ drivers> findstr / s smnp . ”, Ale nie zwróciło żadnych wyników. Spojrzałem również na plik pooltag.txt i oto opis, który dla niego znalazłem:
Tak, każda pomoc byłaby mile widziana. Z góry dziękuję.
windows
memory
drivers
windows-10
memory-leaks
Nayncore
źródło
źródło
Odpowiedzi:
Przejście do
services.msc
(przez Win+R) i wyłączenie Superfetch całkowicie rozwiązuje ten problem. Nie jestem pewien, czy Superfetch jest po prostu zepsuty, czy też jest „z założenia”.Ponadto pozorne usunięcie pliku stronicowania będzie miało taki sam efekt, ale powyższe rozwiązanie jest bezpieczniejsze .
źródło
Obejrzałem ślady xperf kilku użytkowników i tutaj funkcja
ntoskrnl.exe!SmKmStoreHelperWorker
jądra zaczyna alokować pamięć.(Kliknij obraz, aby powiększyć)
Odkryłem to na sysinternals .
Zapytałem o to Microsoft, a odpowiedź brzmi, że jest to zgodne z projektem. Jest to związane z kompresją pamięci systemowej.
W ogłoszeniu Windows 10 Build 10525 Microsoft wyjaśnił to trochę :
Zamiast zapisywać dane pamięci do pliku strony, kompresuje je. Ta skompresowana pamięć jest pokazywana w procesie systemowym.
Microsoft opublikował także więcej szczegółów w wewnętrznym hubie. Winbeta stworzył artykuł, który zawiera więcej szczegółów.
Microsoft wydał także wideo na Channel9, które wyjaśnia tę funkcję.
Kompresja pamięci w systemie Windows 10 RTM
https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM
W najnowszych kompilacjach TH2 Microsoft zaktualizował opis w menedżerze zadań, a teraz pokazuje również, że proces SYSTEM obsługuje
compressed memory
:aby uniknąć nieporozumień związanych z „wysokim” użyciem.
W rocznicowej aktualizacji systemu Windows 10, która została wydana w sierpniu 2016 r., Microsoft wyodrębnił kompresję do pokazanej teraz w pseudo-procesie wywoływanym,
Memory Compression
aby nie mylić użytkowników, dlaczego SYSTEM ma tak duże użycie pamięci:Ale wygląda na to, że Taskmgr nie pokazuje tego procesu, tylko ProcessExplorer / ProcessHacker jest w stanie go pokazać. Taskmgr pokazuje tylko ilość skompresowanej pamięci w przeglądzie:
Po najechaniu wskaźnikiem myszy na wykres używanej pamięci w Taskmgr zobaczysz etykietkę pokazującą ilość skompresowanych danych.
W tym demo 388 MB zostało skompresowanych do 122 MB, więc 267 MB zostało zapisanych z kompresją.
źródło
System Memory compression
Znalazłem przypadek odstający, który powoduje duże zużycie pamięci systemowej, i chciałem go dołączyć, na wypadek gdyby te informacje były korzystne dla kogokolwiek.
Jeśli intensywnie korzystasz z migawek woluminów firmy Microsoft (migawek programowych, a nie migawek sprzętowych), im więcej migawek utrzymasz w połączeniu z dużymi zmianami danych, system zużyje więcej pamięci RAM.
Zwykle ilość pamięci RAM wykorzystywanej do wykonywania migawek woluminów jest niewielka i nie zostanie zauważona, chyba że masz gigantyczny wolumin (tj. 64 TB) z deltami wielotabajtowymi między migawkami. Domyślnie migawki same się usuwają, jeśli liczba operacji zapisu jest zbyt wysoka, ale istnieją sposoby, aby temu zapobiec, pozwalając na osiągnięcie ogromnych delt.
Poniżej znajduje się skrajny przypadek pokazujący proces systemowy serwera wykorzystujący 13 GB pamięci RAM. Ten serwer ma tylko dwie migawki woluminów, wykonane w odstępie 15 dni, z około 10 TB danych zapisanych pomiędzy każdą migawką.
Powyższy proces systemu poprzednio miał 24 GB użytkowania i zaobserwowano następujące trzy zachowania:
Podejrzewałem migawki woluminów, więc spróbowałem usunąć najstarszą migawkę, która natychmiast zmniejszyła zużycie pamięci systemu z 24 GB do 13 GB.
W tych okolicznościach może to być normalne zachowanie, chociaż nie potwierdziłem tego w firmie Microsoft. W międzyczasie dodam do tego serwera dodatkowe 32 GB pamięci RAM, aby obsłużyć migawkę.
(Uwaga: jest to serwer kopii zapasowych o dużej pojemności z systemem Windows 2016 z podłączonym dyskiem SSD iSCSI o pojemności 64 TB. Utrzymuje średnio trzy migawki woluminów w danym momencie, z nowym tworzonym co 15 dni. Istnieje około 10 TB dane zapisane między każdą migawką).
źródło
Wyłącz moduł pobierania wstępnego w kluczu regedit:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
prawdopodobnie maszEnable Prefetcher
wartość2
lub3
taką zmianę na0
Następnie musisz wyłączyć
Superfetch
w usługachWyszukaj services.msc
Znajdź
superfetch
kliknij,properties
a następnie ustaw godisabled
i zatrzymaj usługę.Robię te kroki, a kiedy
system
gram i zwykle korzystam z komputera, a proces wykorzystuje tylko 28 tysźródło