Der Task-Manager zeigt die Gesamtspeicherauslastung von svchost.exe an. Gibt es eine Möglichkeit, die Speichernutzung einzelner Dienste anzuzeigen?
Beachten Sie, dass dies der Leistungsberichterstattung von Finegrained für svchost.exe ähnelt
Der Task-Manager zeigt die Gesamtspeicherauslastung von svchost.exe an. Gibt es eine Möglichkeit, die Speichernutzung einzelner Dienste anzuzeigen?
Beachten Sie, dass dies der Leistungsberichterstattung von Finegrained für svchost.exe ähnelt
Antworten:
Es gibt eine einfache Möglichkeit, die von Ihnen gewünschten Informationen abzurufen (dies erfordert jedoch eine geringfügige Änderung an Ihrem System):
Teilen Sie jeden Dienst so auf, dass er in seinem eigenen SVCHOST.EXE-Prozess ausgeführt wird. Der Dienst, der die CPU-Zyklen beansprucht, wird im Task-Manager oder im Prozess-Explorer leicht sichtbar (das Leerzeichen nach "=" ist erforderlich):
Tun Sie dies in einem Befehlszeilenfenster oder fügen Sie es in ein BAT-Skript ein. Administratorrechte sind erforderlich und ein Neustart des Computers ist erforderlich, bevor er wirksam wird.
Der ursprüngliche Zustand kann wiederhergestellt werden durch:
Beispiel: So führen Sie die Windows-Verwaltungsinstrumentation in einer separaten SVCHOST.EXE aus:
Diese Technik hat keine negativen Auswirkungen, es sei denn, Sie erhöhen den Speicherverbrauch geringfügig. Abgesehen von der Überwachung der CPU-Auslastung für jeden Dienst ist es auch einfach, das Delta der Seitenfehler, die Lese- und Schreibrate der Festplatten-E / A für jeden Dienst zu überwachen. Wählen Sie für den Prozess-Explorer das Menü Spalten anzeigen / auswählen: Registerkarte Prozessspeicher / Seitenfehler-Delta, Registerkarte Prozessleistung / E / A-Delta-Schreibbytes, Registerkarte Prozessleistung / E / A-Delta-Lesebytes.
Auf den meisten Systemen gibt es nur einen SVCHOST.EXE-Prozess mit vielen Diensten. Ich habe diese Sequenz verwendet (sie kann direkt in ein Befehlszeilenfenster eingefügt werden):
quelle
svchost.exe
auf Windows XP-Systemen fest. Auf diesem sehe ich 6.type= own
funktioniert es möglicherweise nicht richtig, und Sie haben keinen Zugriff auf Dateien, die mit diesem Snippet verschlüsselt sind (was auch möglich ist) katastrophal sein, wenn die OS-Dateien verschlüsselt sind!)Sie können den integrierten
tasklist
Befehl verwenden und nach Dienstnamen filtern (/fi
Schalter), zum Beispiel:Ausgabe:
Wenn Sie keinen Namen kennen, können Sie diese mit der folgenden Anweisung auflisten:
Es listet alle von svchost.exe gehosteten Dienste auf, zum Beispiel:
Services werden nicht unbedingt von gehostet
svchost.exe
. Wenn Sie also keinen Dienst finden, der nach dem Namen der ausgeführten Datei filtert, führen Sie ihn einfach austasklist /svc
. Es werden alle Dienste angezeigt.quelle
Der Prozess-Explorer zeigt in der Tat die individuelle Speichernutzung in svchost an. Stellen Sie sicher, dass Sie die neueste Version von hier haben: http://technet.microsoft.com/en-us/sysinternals/bb896653
Stellen Sie sicher, dass Sie den Prozess-Explorer als Administrator ausführen, klicken Sie auf den zu untersuchenden svchost und dann auf die
View DLLs
Schaltfläche (oder CTRL+D). Klicken Sie mit der rechten Maustaste auf die Überschriften im DLLs-Fenster,Select Columns...
überprüfen Sie sieWS Total Bytes
und drücken SieOK
.Jetzt können Sie die Speichernutzung einzelner Dienste (von DLLs implementiert) im svchost anzeigen und sortieren.
quelle
Während Process Monitor ein Allzweck-Dienstprogramm ist (das alles außer Geschirr spült), möchten Sie für diese spezielle Frage VMMap (ein anderes SysInternals-Dienstprogramm) verwenden.
http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx
VMMap ist ein Dienstprogramm zur Analyse des virtuellen und physischen Arbeitsspeichers. Es zeigt eine Aufschlüsselung der festgeschriebenen virtuellen Speichertypen eines Prozesses sowie die Größe des physischen Speichers (Arbeitssatz), der diesen Typen vom Betriebssystem zugewiesen wurde. Neben grafischen Darstellungen der Speichernutzung zeigt VMMap auch zusammenfassende Informationen und eine detaillierte Prozessspeicherzuordnung. Mithilfe leistungsstarker Filter- und Aktualisierungsfunktionen können Sie die Ursachen für die Verwendung des Prozessspeichers und die Speicherkosten der Anwendungsfunktionen ermitteln.
Neben flexiblen Ansichten zum Analysieren von Live-Prozessen unterstützt VMMap den Export von Daten in mehreren Formularen, einschließlich eines nativen Formats, das alle Informationen beibehält, damit Sie sie erneut laden können. Es enthält auch Befehlszeilenoptionen, die Skriptszenarien ermöglichen.
quelle
Dies dringt in das Gebiet des Stapelüberlaufs vor, aber wenn Sie die Speicherstatistiken pro Thread abrufen können, können Sie diese möglicherweise grob mit den einzelnen Dienst-DLLs korrelieren, indem Sie sie mit den im Thread-Stapel aufgelisteten DLLs abgleichen. Allerdings viel zu viel für mein kleines Sysadmin-Gehirn.
quelle
Ich erweitere hier die Antwort von Peter Mortensen. Bevor Sie die Art der Dienste ändern, überprüfen Sie bitte die vorhandene Art durch Befehl wie:
Welches wird das Folgende ausgeben:
Andere Typen als "10 WIN32_OWN_PROCESS", "20 WIN32_SHARE_PROCESS" sollten nicht geändert werden.
quelle
Die Trennung der Dienste ist die richtige Antwort, aber der Befehl sc config hat bei mir nicht funktioniert (2008 R2).
Sie können dies jedoch über die Registrierung tun, was bedeutet, dass der Parameter "Type" auf 0x00000010 (Dez. 16) gesetzt wird:
Achten Sie jedoch darauf, welchen Dienst Sie ändern möchten. Neben "own" und "share" gibt es spezielle Typen, die nicht geändert werden sollten, z.
Danach starten Sie den Dienst einfach neu und Sie sollten im ProcessExplorer sehen, dass er jetzt einen eigenen Prozess svchost.exe hat.
quelle