Untersuchen des Speicherverlusts svchost / nsi mit Daten

701
strix

svchostund nsiinsbesondere hat beharrlich mit Speicherlecks im Laufe der Jahre mit Google sucht Aufdrehen viele Treffer (aber nur wenige Lösungen) in Verbindung gebracht worden. Verwandte Fragen mit verwandten Antworten wurden in der Vergangenheit bereits mehrfach von Superbenutzern gestellt, aber alles, was ich gesehen habe, waren die Leute, die sich fragten, wie sie bestimmen können, welcher Prozess das Leck enthält. Dies ist keine große Hilfe, wenn ich das bereits weiß.

Ich stelle diese Frage auf, weil das Problem trotz der Behauptungen, dass diese oder diese Lösung das Problem behoben hat, weiterhin bestehen bleibt, und auch, um die Ergebnisse meiner eigenen Untersuchung zu melden, falls dies hilfreich ist, und um zu sehen, wie ich sonst noch in das Problem eingreifen kann.

Die eine Sache, die angedeutet wurde, dass das Problem möglicherweise behoben wurde, war die Anwendung von KB 2950358 (Entschuldigung, es kann keine Verknüpfung hergestellt werden), das Installationsprogramm sagt jedoch lediglich, dass dieses Update nicht auf dieses System anwendbar ist.

Maschine, Betriebssystem und Software: Win7 Pro x64, 8 GB Speicher mit nVidia GTX 580-Video (Treiber von nVidia, 372.54 vom 15. August, vor 15 Tagen bei diesem Schreiben). Prozesse, die fast immer laufen gehören Spotify, Chrome (derzeit v52.0.2743.116), Skype (derzeit 7.26.0.101) sowie ein paar Cygwin mintty, bashund sshProzesse. Internet Explorer ist nicht installiert (über die Bits hinaus, die nicht entfernt werden können). Übliche Browser-Add-Ins wie Flash für yt usw. Nichts Ungewöhnliches, auch wenn einige von ihnen stark auf Netzwerke angewiesen sind und theoretisch impliziert werden könnten, wenn man von KB 2847346 ausgeht. Alle Windows-Updates einschließlich des neuesten optionalen Rollup-Updates wurden angewendet.

Weglassen einige Zwischenschritte, getrennt I nsiout in seine eigene svchost, neu gestartet und protokolliert dann die Ausgabe von tasklist, jede Sekunde, für die PIDs des nsiProzesses und der svchostzu dem nsiverwendeten gehören. Die Ergebnisse sind hier dargestellt . Gewiss, letztere ist im Wesentlichen flach, nsiwächst aber stetig (wenn nicht sogar).

Zur gleichen Zeit nahm ich procmonsys-Aufrufe auf, die von gemacht wurden nsi, aber mit Ausnahme von 6 Ereignissen waren dies Ereignisse zum Erstellen von Threads und zum Beenden von Threads, was nicht sehr hilfreich ist. Was auch immer das Problem verursacht nsi, verursacht keine eigenen Syscalls.

Bevor ich mich aufspaltete nsi, machte ich fast vier Tage lang eine ähnliche Spur, und diese svchostInstanz begann mit 24 MB und stieg kontinuierlich auf etwa 2150 MB an, bevor ich sie stoppte, wobei die Änderungsrate offenbar mit der Zeit zunahm. In der Vergangenheit habe ich den beleidigenden svchostProzess von 6 GB nach oben gesehen, aber mit dem procmonLaufen war dies der Punkt, an dem mir der Speicher zu Ende ging. Ein paar Mal wurde etwas Speicher freigegeben, jedoch nicht so viel wie zugewiesen wurde. Ich kann diese Grafik später verlinken, wenn jemand sie sehen möchte.

Ich habe das auch mit überwacht procmonund kann eine Aufschlüsselung der Ereignisse bereitstellen, aber sie sind wahrscheinlich nicht sehr interessant, da festgestellt wird, nsidass dies fehlerhaft ist und dass keines der Ereignisse besonders interessant ist.

Gibt es ein Werkzeug zur Verfolgung, welche Prozesse Anforderungen an einen bestimmten Dienst stellen?

Was ist mein nächster Schritt, da der anscheinend relevante KB-Hotfix nicht anwendbar ist?

2
Die KB-Liste hat Dateien ausgeführt. Hast du verifiziert, dass du keine der betroffenen Dateien hast? Wenn Sie den Hotfix, mit dem Sie verlinkt haben, nicht verwenden, ist er nicht anwendbar und hat nichts mit dem von Ihnen beschriebenen Verhalten zu tun. * Außerdem hat svchost keinen Speicherverlust. Anwendungen, die mit ihm kommunizieren, haben einen Speicherverlust. Es besteht ein großer Unterschied. * Haben Sie das Softwareupdate installiert, das diesen Hotfix enthält? Ramhound vor 7 Jahren 0
Installieren Sie das WPT (Teil des Win10-SDK: https://dev.windows.com/en-us/downloads/windows-10-sdk, das seit Win7 ausgeführt wird). Führen Sie WPRUI.exe aus, und wählen Sie ** First Level ** aus. , ** CPU-Auslastung **, ** VirtualAlloc-Nutzung, ** Resident Analysis ** und klicken Sie auf ** Start **. Erfassen Sie jetzt 5 Minuten der Speichernutzung und klicken Sie auf ** Save **, um den Bericht in einer ETL zu speichern Datei. Zippen Sie die große ETL-Datei in eine ZIP / RAR-Datei, laden Sie die ZIP-Datei hoch (OneDrive, Dropbox, Google-Laufwerk) und veröffentlichen Sie den Freigabe-Link hier. Ich werde versuchen, es zu analysieren und zu sehen, was der Dienst tut magicandre1981 vor 7 Jahren 0
@Ramhound ja, sie sind sowieso Teil des Basis-Betriebssystems (`rpcrt`,` rpchttp`). Ich nehme an, der Grund für den Hotfix "nicht zutreffend" ist, dass er ziemlich alt ist (2014) und diese Dateien bereits über ein Windows-Update gepatcht wurden. Das Speicherverlust wird in den WSS / PWS / Commit-Größen der betroffenen Prozesse angezeigt. Dies bedeutet jedoch nicht, dass die Hauptursache im betroffenen Prozess ("nsi") liegt. Wie in KB 2847346 erläutert, können Prozesse, die Benachrichtigungen nicht abbrechen, zu einem Verlust von "nsi" führen. strix vor 7 Jahren 0
@ magicandre1981 wird es tun, und danke für das Angebot! Wenn ich herausfinden kann, wie ich damit umgehen kann, werde ich zuerst nach etwas anderem Ausschau halten. strix vor 7 Jahren 0
@strix - Sie haben falsch angenommen. Es ist nicht anwendbar, da Sie wahrscheinlich über die tatsächliche KB verfügen, die den Hotfix installiert hat. Aus diesem Grund möchte ich, dass Sie die Dateiversionen überprüfen, um sich selbst zu überprüfen, wenn Sie nicht durch den beschriebenen Speicherlink betroffen sind. Ramhound vor 7 Jahren 0
@ magicandre1981 http://bit.ly/2c6eoSu; Die PID von nsi in dieser Spur ist 1808. Lassen Sie mich wissen, wann Sie es haben, damit ich es offline nehmen kann. Diese Aufnahme ist fast neu, ohne dass sensible Apps ausgeführt werden. (Ich habe mir WPA angesehen, aber um das zu verstehen, sind mehr Kenntnisse über die Windows-Architektur erforderlich als von mir.) NB: Ich musste mich für ADK 8.1 entscheiden, da mir SDK 10 "keine gültige Win32-Programmdatei" gab. aber ich nehme an, das ist so gut. Danke nochmal für deine Hilfe. strix vor 7 Jahren 0
Ich sehe nur etwas Speicherauslastung wegen einer WorkerFactory, die etwas Arbeit leistet (ntdll.dll! NtWaitForWorkViaWorkerFactory ruft ntoskrnl.exe! RtlpCreateUserThreadEx) auf. Dies ist ein Nebeneffekt anderer Tools, die Netzwerkdaten wie die Seitenleiste abfragen (Schließen Sie Gadgets, die Netzwerkstatistiken anzeigen). magicandre1981 vor 7 Jahren 0
@ magicandre1981 Danke fürs Ausprobieren. Vielleicht wurde das Problem zu dieser Zeit nicht gekitzelt, obwohl der Prozess in diesem Zeitraum von 7 Minuten um etwa 500.000 anwuchs. Nun, nachdem die Maschine eine Weile gelaufen ist und das Problem offenkundiger ist, gibt es ungefähr 40 Threads, von denen die meisten eine Startadresse von 'ntdll.dll!' Haben. RtlDestroyHandleTable` im Zustand `Wait: WrQueue`, wenn das der Fall ist überhaupt sinnvoll. Diese werden in regelmäßigen Abständen zerstört, kommen aber immer kurz darauf zurück. Gibt das einen Hinweis? Erinnert mich an festgeklemmte PID-Tabelleneinträge in Unix, da das Ziel proc ist tot strix vor 7 Jahren 0
@ magicandre1981 Da Sie die Sidebar erwähnen, habe ich alles in ihr getötet (was Sidebar.exe scheinbar auch verschwinden ließ) und die Größe von nsi in den nächsten Tagen nachverfolgen, um zu sehen, ob dies einen Unterschied macht und Bericht erstatten wird zurück. Ich kann nicht verstehen, warum es sollte, aber Sie wissen nie. strix vor 7 Jahren 0
@ magicandre1981 Nach 46 Stunden wuchs der Dienst "nsi" von 8 MB auf 936 MB, auch wenn die Sidebar nicht aktiv war. Ich schätze, Sidebar ist es nicht. Irgendwelche Vorschläge, wie Sie feststellen können, welche Anwendung dazu führt, dass "nsi" Speicherplatz zuordnet und nicht freigibt? Kann / soll ich WPT / WPA verwenden, um nach Aufrufen von `ntdll.dll! NtWaitForWorkViaWorkerFactory` zu suchen, und benötige ich dazu geladene Symbole? Wenn ja, woher bekomme ich Symboldaten? strix vor 7 Jahren 0
In WPA können Sie die Debug-Symbole laden. http: //msdn.microsoft.com/en-us/windows/hardware/commercialize/test/wpt/symbol-support magicandre1981 vor 7 Jahren 0
@ magicandre1981 sehr geschätzt, danke! strix vor 7 Jahren 0
Konnten Sie die Ursache finden? magicandre1981 vor 7 Jahren 0

0 Antworten auf die Frage