Warum summieren sich die gesamte RAM-Auslastung des Ressourcenmonitors und des Task-Managers nicht einmal remote zur gesamten physischen Speichernutzung? [doppelt]

Diese Frage hat hier bereits Antworten: Windows mit zu viel RAM, wie Ressource Hog zu diagnostizieren (4 Antworten) Geschlossen vor 5 Jahren.

Ich habe dies auf vielen verschiedenen Windows-Computern bei vielen verschiedenen Gelegenheiten bemerkt:Die vom Task-Manager oder Ressourcenmonitor gemeldete RAM-Auslastung scheint sich oft zu einem Betrag zu summieren, der deutlich niedriger ist als der tatsächlich verwendete Betrag.

Zum Beispiel habe ich oft auf meinem Laptop oder Desktop so etwas wie 7 GB im Einsatz gesehen, und doch ist die Summe des Arbeitsspeichersatzes eher 3 GB. Ich kann einfach nicht finde heraus, wo es benutzt wird!

Hier ist ein extremes Beispiel, das ich heute im Ressourcenmonitor auf einem Server bemerkt habe:

Ressourcenmonitor
Klicken Sie für volle größe

Wenn Sie mit der rechten Maustaste auf das Bild klicken und in einer neuen Registerkarte öffnen und die Zahlen anzeigen, werden Sie feststellen, dass der Arbeitssatz (der keinen nichtphysischen virtuellen Speicher enthält) etwa 1,7 GB beträgt. Ich erhalte ähnliche Zahlen, indem ich die RAM-Auslastung im Task-Manager addiere, wenn "Prozesse von allen Benutzern anzeigen" lautet aktiviert.

Jetzt ist hier ein Screenshot der Registerkarte Leistung des Task-Managers:

Task-manager
Klicken Sie für volle größe

Dies besagt, dass 7.6 GB physischer Speicher verwendet werden.

Ich sehe dies die ganze Zeit auf PCS, Laptops und Now-Servern: Die gesamte RAM-Auslastung, die von System Tools gemeldet wird, macht nur etwa 1/4 der RAM-Auslastung aus, die ich beobachte. WTF geht weiter???

Gibt es eine befriedigende Erklärung, wo all mein RAM ist? Was verschlingt es und warum hinterlässt es keine Spuren?

BEARBEITEN: Hier ist ein Bild der grafischen RAM-Nutzung, wie Benutzer whs gefragt hat:

Verwenden Sie RamMap
Klicken Sie für volle größe

EDIT 2: Antwort auf James' Antwort, hier ein Bild von der nicht ausgelagerte Prozesse in poolmon.exe, nach Größe sortiert:

geben Sie hier die Bildbeschreibung ein

Diese Ergebnisse verwirren mich. poolmon gibt korrekt an, dass ich 6 GB nicht gemanagten Pool verwendet habe, aber alle nicht gemanagten Poolprozesse sind weniger als 8 MB groß.

Was könnte das bedeuten? Kann poolmon einige der Prozesse mit dem nicht gepackten Pool nicht erkennen?

Author: DumpsterDoofus, 2015-04-25

1 answers

Es tut mir leid, ich weiß, das klingt nach einer flippigen Antwort... aber die Antwort auf die Frage in Ihrem Titel lautet: "weil sie es nicht sollen."

Oder um es höflicher auszudrücken: Es gibt viel RAM, das nicht in den privaten Arbeitssätzen von Prozessen enthalten ist. Ein Teil davon befindet sich in gemeinsam genutzten Arbeitssätzen von Prozessen - aber Sie können dort aufgrund der Freigabe keine zuverlässige Vorstellung von der tatsächlichen Verwendung erhalten; Das Addieren der Prozessnummern führt zu einem viel zu großen Ergebnis.

Andere Sachen, die belegt RAM, wie der nicht gemanagte Pool, der residente Teil des ausgelagerten Pools und die residenten Teile anderer Kernel-Space-Anwendungen, wird in der Anzeige "Prozesse" des Task-Managers überhaupt nicht angezeigt.

In Bezug auf Ihr spezifisches Problem:

Siehe im Task-Manager-Display den Abschnitt "Kernelspeicher". Sie haben 6 GB "nonpaged Memory" (das ist Nonpaged Pool). Das ist Teil des Abschnitts "In Gebrauch" in Ihrem zweiten Diagramm. Der nicht gepackte Pool wird keinem Prozess belastet, weshalb das Addieren der Pro-Prozess-Nummern im Task-Manager kommt der verwendeten Summe nicht nahe. Einige Treiber verwenden es höchstwahrscheinlich. Dies ist eine völlig übermäßige Menge; es sollte weit unter 1 GB sein. welcher Treiber auch immer für den übermäßigen Teil der nicht gemanagten Poolnutzung verantwortlich ist, ist zweifellos fehlerhaft.

RamMap kann dies bestätigen (auf der Registerkarte" Use Counts "sehen Sie sich die Summe für" Nonpaged Pool " an), aber es kann Ihnen nicht helfen, herauszufinden, welcher Treiber dies verursacht.

So finden Sie es: Erhalten Sie ein kopie des Microsoft-Tools "Poolmon". Es ist ein Zeichen-Modus-Tool (Junge, ist es jemals) mit dem Windows-Treiber-Kit verteilt. Für Windows 7 ist das WDK ein kostenloser Download. Sie müssen das Ganze herunterladen (es ist eine ISO) und installieren Sie es von diesem, aber Sie können wählen, nur die Werkzeuge zu installieren, wenn das alles ist, was Sie wollen.

Suchen Sie Poolmon in den WDK - Verzeichnissen - wählen Sie unbedingt das richtige 32-oder 64-Bit-Verzeichnis aus-und führen Sie es über eine Administratorbefehlsaufforderung aus. Sie erhalten eine Anzeige wie diese:

geben Sie hier die Bildbeschreibung ein

Drücken Sie Nun die Taste "p" (Nein, ich mache keine Witze. Keine Menüs hier!) bis die Spalte " Type "nur" Nonp " anzeigt. Drücken Sie dann (falls erforderlich zweimal) "b", um die Anzeige in absteigender Reihenfolge nach der Byte-Spalte zu sortieren (dies wurde bereits im Beispiel hier getan).

Dann schau dir die Spalte " Tag " für die oberste Zeile an. In dem hier gezeigten (offensichtlich künstlichen) Fall ist es "Leck". (Auf diesem System wird ein Treiber ausgeführt, der absichtlich fehlerhaft war, um dieses Problem zu verursachen - es ist "undichten" nicht gepackten Pool.)

Übrigens sind die hervorgehobenen Zeilen diejenigen, die sich seit der vorherigen Aktualisierung dieses archaischen Bildschirms geändert haben.

Jetzt suchen c:\Windows\System32\Drivers für ein .sys-Datei, die diese Zeichenfolge enthält. In diesem Fall würden Sie nach" Leak " suchen, wie folgt:

c:\windows\system32> findstr /s Leak *.sys

Suchen Sie dann im Web nach Verweisen auf diese Zeichenfolge und / oder diesen Treibernamen.

Kehre hierher zurück und melde den vollständigen Namen, den Herstellernamen usw. von der .sys-Datei wäre auch hilfreich.

(Ich wette, das Tag, das Sie finden, ist ECMC, der Treiber ist intmsd.sys, und es ist mit einem Produkt namens ExpressCache oder IntelliMemory verbunden. Ich würde dieses Produkt "deinstallieren". Es gibt ein Update, um das Problem zu beheben, aber selbst mit der festen Version habe ich noch nie gesehen, dass die Leistung eines Systems durch dieses Produkt verbessert wurde.Es dupliziert im Wesentlichen Funktionen, die bereits in Windows sind.)

Wenn Sie es nicht so finden können, verwenden Sie als Nächstes das "Windows Performance Toolkit". Suchen Sie in diesem Forum nach dieser Zeichenfolge mit Antworten von magicandre1981 nach einer Anleitung. Ignorieren Sie Antworten, die xperf erwähnen-es ist eine ältere Version des Tools.

UPDATE: Laut den Kommentaren hat das OP das Obige getan und festgestellt, dass, obwohl Poolmon berichtete, die Gesamtgröße des nicht gepackten Pools tatsächlich riesig war, alle zugewiesenen Teile anscheinend winzig waren. Meine Vermutung (auch in den Kommentaren) ist, dass dies auf das zurückzuführen ist, was ich "aufgeblähten" Pool nennen werde: Pool wurde zugewiesen, dann freigegeben, aber aus irgendeinem Grund diese Menge an RAM, die dem Pool zugewiesen wurde, wurde nicht geschrumpft, um das "Freigeben"widerzuspiegeln. Nach dem in beschriebenen Verfahren kann diese Antwort von magicandre den Täter identifizieren.

 36
Author: Jamie Hanrahan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-02-15 02:08:13