Windows 10, "System" -Prozess, der sehr viel RAM beansprucht

83

Seit dem Upgrade auf Windows 10 hat mein System übermäßig viel RAM verbraucht

Bildbeschreibung hier eingeben

Ich habe ein bisschen gelesen und festgestellt, dass es wahrscheinlich ein Treiber ist, der Speicher verliert. Also habe ich mir das Windows Driver Kit besorgt und die Speichernutzung mit poolmon verfolgt:

Bildbeschreibung hier eingeben

Allerdings weiß ich nicht wirklich, wie ich von hier aus vorgehen soll. Ist der Artikel mit dem Tag "smNp" der Schuldige in dieser Ausgabe? Wie gehe ich von dort aus, um den Fahrer tatsächlich zu identifizieren?

Ich habe versucht , ein paar Sachen wie "C: \ Windows \ System32 \ drivers> findstr / s SMNP . " , Aber es ergab keine Ergebnisse. Ich habe mir auch die pooltag.txt-Datei angesehen und diese Beschreibung dafür gefunden:

Bildbeschreibung hier eingeben

Also ja, jede Hilfe wäre dankbar. Danke im Voraus.

Nayncore
quelle
1
ok, ich habe die Informationen hinzugefügt, die gefunden werden konnten. Überprüfen Sie sie
magicandre1981
1
Dies ist eine Funktion des Systems, mit der durch die Verwendung der Komprimierung anstelle des Auslagerns auf die Festplatte mehr Arbeitsspeicher verfügbar gemacht werden kann. @ magicandre1981 hat hier die richtigen Informationen, die als die richtige Antwort akzeptiert werden sollten.
Mani Gandham
Die 14 Megabyte, die poolmon dem smNp-Tag zuordnet, sind eine rein triviale Menge. Sie sind besorgt über 1,3 GB im privaten Arbeitssatz des Systemprozesses - warum sollten Sie sich auf 14 MB nicht ausgelagerten Pool konzentrieren (der überhaupt nicht im Arbeitssatz eines Prozesses enthalten ist)?
Jamie Hanrahan

Antworten:

13

Durch das Aufrufen von services.msc(via Win+R) und Deaktivieren von Superfetch wird dieses Problem vollständig behoben. Ich bin mir nicht sicher, ob Superfetch gerade kaputt ist oder "von vornherein".

Darüber hinaus hat das Entfernen der Auslagerungsdatei anscheinend den gleichen Effekt, die oben genannte Lösung ist jedoch eine sicherere Alternative.

den
quelle
1
Das hat tatsächlich funktioniert. Die Speichernutzung für das System beträgt auch nach stundenlangem Gebrauch wieder ~ 0,1 MB. Vielen Dank!
Nayncore
26
Während eine solch hohe Speichernutzung normalerweise eine rote Fahne für einen Speicherverlust darstellt, wird dieser Speicher zu Recht als EIGENSCHAFT von Windows 10 verwendet (siehe die Antwort von magicandre unten).
Bigbio2002,
7
Es ist kein Bug und sollte nicht deaktiviert werden
phuclv
6
Wenn die Funktion ständig Warnungen zu wenig Arbeitsspeicher auslöst, ist sie keine gute Funktion. Jetzt ist mein Surface Pro mit 4 GB RAM für die Entwicklung völlig unbrauchbar und selbst auf Laptops mit 8 GB RAM bekomme ich ständig diese Warnungen. Daumen hoch für Lösung!
Oleg I.
94

Ich habe mir die Xperf-Spuren mehrerer Benutzer angesehen und hier ntoskrnl.exe!SmKmStoreHelperWorkerbeginnt die Funktion des Kernels, Speicher zuzuweisen.

Bildschirmfoto
(Zum Vergrößern auf das Bild klicken)

Ich habe das auf sysinternals entdeckt .

Ich habe Microsoft danach gefragt und die Antwort lautet, dass dies beabsichtigt ist. Dies hängt mit der Komprimierung des Systemspeichers zusammen.

In der Ankündigung von Windows 10 Build 10525 erklärte Microsoft dies ein wenig :

In Windows 10 haben wir dem Speichermanager ein neues Konzept hinzugefügt, das als Komprimierungsspeicher bezeichnet wird. Hierbei handelt es sich um eine speicherinterne Sammlung komprimierter Seiten. Dies bedeutet, dass nicht verwendete Seiten komprimiert werden, anstatt sie auf die Festplatte zu schreiben , wenn der Memory Manager unter Speicherdruck steht . Dadurch wird der pro Prozess verwendete Arbeitsspeicher reduziert, sodass Windows 10 mehr Anwendungen gleichzeitig im physischen Arbeitsspeicher verwalten kann. Dies trägt auch zu einer besseren Reaktionsfähigkeit in Windows 10 bei. Der Komprimierungsspeicher befindet sich im Arbeitsbereich des Systemprozesses.Da der Systemprozess den Speicher im Speicher hält, wird sein Arbeitssatz genau dann größer, wenn Speicher für andere Prozesse verfügbar gemacht wird. Dies ist im Task-Manager sichtbar und der Grund dafür, dass der Systemprozess anscheinend mehr Speicher als in früheren Versionen beansprucht.

Anstatt Speicherdaten in die Auslagerungsdatei zu schreiben, werden sie komprimiert. Und dieser komprimierte Speicher wird im Systemprozess angezeigt.

Microsoft hat weitere Details im Hub veröffentlicht. Winbeta hat einen Artikel erstellt, der weitere Details enthält.

Anscheinend lag der Grund dafür in der Entscheidung von Microsoft, UWP-Apps auszusetzen, wenn sie nicht im Vordergrund standen, ähnlich wie bei einigen Smartphone-Betriebssystemen. Windows 8-Benutzer haben verstanden (vielleicht auch nicht), dass Apps, die nicht auf dem Bildschirm angezeigt werden, erst ausgeführt werden, wenn der Benutzer wieder zu ihnen wechselt. Der Ansatz "Alles oder Nichts" wird mit Windows 10 aktualisiert, wobei eine Ebene zwischen der Auslagerungsdatei und der normalen Auslagerungsaktivität eingefügt wird. Wenn nun Probleme mit dem Speicherdruck auftreten, bestimmt MM, welche Seiten in einem Prozess namens Zuschneiden in die geänderte Liste verschoben werden sollen.Die geänderte Liste ist eine sekundäre Liste von Auslagerungsdateien, die eine Liste von Standby-Auslagerungsdateien sichert. Eine Sicherungsliste wird erfasst, wenn der Speicher von einem anderen Prozess aus der Standby-Liste wiederhergestellt wird und der ursprüngliche Prozess nach seiner Seite sucht. Anstatt alles oder nichts komprimiert Windows 10 MM nicht verwendete Seiten, anstatt sie auf die Festplatte zu schreiben. Mit weniger Schreiben sollte das Ergebnis dank der Komprimierung weniger Festplattenvorgänge sein, und jetzt können mehr Daten im Speicher gespeichert werden.

Bildbeschreibung hier eingeben

Laut dem Windows-Team nimmt der komprimierte Speicher in der Praxis etwa 40% der unkomprimierten Größe ein. Aufgrund eines typischen Geräts, auf dem eine typische Arbeitslast ausgeführt wird, schreibt Windows 10 Seiten nur 50% so oft auf die Festplatte wie frühere Versionen von das Betriebssystem. „Wenn alles nach Plan verläuft, kann es für Windows-Benutzer zu kürzeren Wartezeiten für alle Geräte und einer längeren Lebensdauer auf Systemen mit flashbasierten Festplatten kommen .

Dekomprimierung ist auch etwas, für das Windows 10 gut geeignet ist. Windows 10 verwendet die Kombination aus Parallelisierbarkeit und sequentiellen Lesevorgängen, um Seiten in den Speicher zu bringen, die einmal aufgerufen wurden. Die neue Dekomprimierung sollte zu einer schnelleren Erfahrung führen, da Windows 10 gleichzeitig Daten dekomprimiert und sie mit mehreren CPUs parallel liest. Ältere Windows-Versionen haben sich aufgrund der Übertragungsraten zwischen den Datenträgern möglicherweise träge angefühlt.

Microsoft hat auch ein Video auf Channel 9 veröffentlicht, in dem die Funktion erläutert wird.

Speicherkomprimierung in Windows 10 RTM
https://channel9.msdn.com/Blogs/Seth-Juarez/Memory-Compression-in-Windows-10-RTM

In diesem Video diskutierte Mehmet Iyigun einige Zeit darüber, warum der Systemprozess in Windows 10 etwas mehr Speicher beansprucht und warum dies eine gute Sache ist. Ein Prozess, der mehr Speicher benötigt, klingt nach einer schlechten Sache - bis ich mehr über Speicherverwaltung, Paging und Hard- / Soft-Page-Fehler verstanden habe. Es stellt sich heraus, dass das Betriebssystem einige clevere Optimierungen vornimmt, die es Ihren Prozessen ermöglichen, einen Teil des Arbeitsspeichers zu verkleinern, ihn jedoch nicht unbedingt auf die Festplatte auslagern. Der Arbeitsspeicher bleibt nicht nur im RAM erhalten, sondern er wird auch komprimiert, wodurch harte Seitenfehler seltener auftreten. Die Ergebnisse sollten für eine schnellere Erfahrung sorgen.

In den neuesten TH2-Builds hat Microsoft die Beschreibung im Task-Manager aktualisiert und zeigt nun auch, dass der SYSTEM-Prozess Folgendes hostet compressed memory:

Bildbeschreibung hier eingeben

um Verwirrungen über die "hohe" Nutzung zu vermeiden.

Im Windows 10 Anniversary Update, das im August 2016 veröffentlicht wurde, hat Microsoft die Komprimierung in einen Pseudoprozess extrahiert, der aufgerufen wurde Memory Compression, um die Benutzer nicht länger zu verwirren, warum SYSTEM so viel Speicher benötigt:

Bildbeschreibung hier eingeben

Es sieht jedoch so aus, als ob Taskmgr diesen Prozess nicht anzeigt, sondern nur ProcessExplorer / ProcessHacker. Der Taskmgr zeigt nur die Größe des komprimierten Speichers in der Übersicht an:

Bildbeschreibung hier eingeben

Wenn Sie in Taskmgr den Mauszeiger über das Diagramm für den verwendeten Speicher halten, wird eine QuickInfo angezeigt, in der die Menge der komprimierten Daten angegeben ist.

Bildbeschreibung hier eingeben

In dieser Demo werden 388MB auf 122MB komprimiert, sodass mit der Komprimierung 267MB eingespart werden.

magicandre1981
quelle
9
@Zaibis: Ich denke, die Idee ist, dass Sie nicht "1 GB fallen lassen". 1 GB wurde von Windows reserviert und wird für Zuweisungen verwendet. Du hast die Erinnerung nicht verloren .
Leichtigkeit Rennen im Orbit
12
"Unbenutzter Speicher ist verschwendeter Speicher" ist seit langem das Mantra von OS X. Sieht aus, als wäre auch Windows mit an Bord.
Deceze
1
@ magicandre1981 Was meinst du mitSystem Memory compression
user2284570
2
Ich kann das nicht im Detail beantworten. Ich habe nur die Information erhalten, dass es beabsichtigt ist, etwas mit einer Speicherkomprimierung zu tun hat und dies wird durch einen Blogpost erklärt. Wenn ich neue Informationen erhalte, aktualisiere ich meinen Beitrag.
magicandre1981
2
@JosiahKeller Im Dialogfeld "Wenig Arbeitsspeicher" geht es um wenig virtuellen Arbeitsspeicher. Es hat fast nichts mit der Nutzung oder Verfügbarkeit des physischen Speichers (RAM) zu tun. Sie werden von allen modernen Desktop-Betriebssystemen separat ausgewiesen.
David Schwartz
0

Ich habe einen Ausreißer-Fall gefunden, der eine hohe Systemspeicherauslastung verursacht, und wollte ihn einbeziehen, falls diese Informationen jemandem nützen.

Wenn Sie die Volume-Snapshots von Microsoft (den Software-Snapshot und nicht den Hardware-Snapshot) in hohem Maße verwenden , verbraucht das System umso mehr RAM , je mehr Snapshots Sie mit großen Datenänderungen kombinieren .

Normalerweise ist die für Volume-Snapshots verwendete RAM-Größe gering und wird nicht bemerkt, es sei denn, Sie haben ein riesiges Volume (dh 64 TB) mit Multi-Terabyte-Deltas zwischen Snapshots. Standardmäßig löschen sich Snapshots einfach von selbst, wenn die Schreib-E / A zu hoch werden. Es gibt jedoch Möglichkeiten, dies zu verhindern, sodass Sie massive Deltas erreichen können.

Unten sehen Sie einen Extremfall, der den Systemprozess eines Servers mit 13 GB RAM zeigt. Dieser Server verfügt nur über zwei Volume-Snapshots im Abstand von 15 Tagen, wobei zwischen den einzelnen Snapshots etwa 10 TB Daten geschrieben werden.

Systemspeicherauslastung bei 13 GB

Der obige Systemprozess war zuvor mit 24 GB ausgelastet, und die folgenden drei Verhalten wurden beobachtet:

  1. Nach einem Neustart und einer erneuten Anmeldung blieb das System einige Zeit auf einem leeren Bildschirm hängen, bis der Desktop angezeigt wurde.
  2. Während dieses Hangs zeigte das Aufrufen des Task-Managers (STRG-UMSCHALT-ESC), dass die Systemspeicherauslastung zunahm.
  3. Während dieses Hangs führte der Datenträger mit den Volume-Snapshots viele Lesevorgänge durch, die im Systemmonitor nicht angezeigt wurden. Da auf der Festplatte iSCSI verwendet wurde, zeigte die Netzwerkkarte einen konstanten Lesestrom von ca. 200 Mbit / s.

Ich vermutete Volume Snapshots und versuchte, den ältesten Snapshot zu löschen, wodurch die Speichernutzung des Systems sofort von 24 GB auf 13 GB sank.

Unter diesen Umständen kann dies ein normales Verhalten sein, obwohl ich dies mit Microsoft nicht bestätigt habe. In der Zwischenzeit werde ich diesem Server zusätzliche 32 GB RAM hinzufügen, um den Snapshot-Overhead zu bewältigen.

(Hinweis: Dies ist ein Hochvolumensicherungsserver unter Windows 2016 mit einem angeschlossenen 64-TB-SSD-iSCSI-Laufwerk. Es werden durchschnittlich drei Volumensnapshots zu einem bestimmten Zeitpunkt verwaltet, wobei alle 15 Tage ein neuer erstellt wird. Es sind ungefähr 10 TB verfügbar zwischen den einzelnen Schnappschüssen geschriebene Daten).

Brain2000
quelle
-1

Deaktiviere Prefetcher in regedit key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParametersDu hast wahrscheinlich Enable Prefetchereinen Wert von 2oder 3ändere ihn auf0

Als nächstes müssen Sie die SuperfetchDienste deaktivieren

  1. Suchen Sie nach services.msc

  2. superfetchKlicken propertiesSie auf Suchen und stellen Sie es auf disabledund beenden Sie den Dienst ebenfalls.

Ich mache diese Schritte und wenn ich spiele und normalerweise PC benutze und der systemProzess nur 28k verwendet

Grzesiek Grzychu Góra
quelle
12
Das ist eine schreckliche Idee. Prefetch / Superfetch werden aus einem bestimmten Grund verwendet. Wenn Sie glauben, dass Sie den Speicher besser verwalten können als Ihr Betriebssystem, irren Sie sich leider.
b1nary.atr0phy
Das Deaktivieren von Prefetch (oder das Löschen des Prefetch-Ordners) ist in der Tat eine sehr dumme Idee. Prefetch bewirkt nicht, dass das System mehr RAM verwendet. Es beschleunigt das Laden von Exes und DLLs, sobald Sie sie starten , und erst dann. Bei SuperFetch deaktiviert Microsoft SuperFetch standardmäßig auf Systemen mit einer SSD für das Windows-Laufwerk. Sie glauben, dass der Nutzen es nicht wert ist. Persönlich halte ich es aktiviert, weil ich andere Laufwerke habe, Nicht-SSDs, auf denen SF weiterhin ausgeführt werden soll.
Jamie Hanrahan