Frage Wie finde ich die Speichernutzung einzelner Windows-Dienste?


Der Task-Manager zeigt die Gesamtspeicherauslastung von svchost.exe an. Gibt es eine Möglichkeit, die Speichernutzung einzelner Dienste anzuzeigen?


Beachten Sie, dass dies ähnlich ist Detaillierte Leistungsberichte für svchost.exe


39
2018-05-26 15:44


Ursprung


Für jeden (wie mich) mit dem gleichen Problem: - Windows Task-Manager -> Leistung (Registerkarte) -> Ressourcenmonitor (Schaltfläche) - Und Sie erhalten svchost.exe aufgeteilt nach Dienst unter Windows 7 - Oliver
@Oliver Resource Monitor zeigt CPU pro Dienst, aber diese Frage bezieht sich auf Speicher. - Aidan Ryan
Sie können ein Skript sehen, um den Speicher einzelner Dienste zu überprüfen diese SO Antwort. - Rosberg Linhares
@RosbergLinhares Dieses Skript entspricht PeterMortensens - Aidan Ryan
@AidanRyan, für mich hat das Skript von PeterMortensen nicht mit den Diensten Schedule und gpsvc funktioniert. - Rosberg Linhares


Antworten:


Es gibt eine einfache Möglichkeit, die gewünschten Informationen zu erhalten für (aber es erfordert eine geringfügige Änderung an Ihrem System):

Teilen Sie jeden Dienst so auf, dass er in einem eigenen SVCHOST.EXE-Prozess ausgeführt wird der Service, der die CPU-Zyklen verbraucht, ist leicht sichtbar im Task-Manager oder im Prozess-Explorer (der Platz nach "=" ist erforderlich):

SC Config Servicename Type= own

Tun Sie dies in einem Befehlszeilenfenster oder fügen Sie es in einen BAT ein Skript. Administratorrechte sind erforderlich und ein Neustart des Computers ist erforderlich, bevor es dauert bewirken.

Der ursprüngliche Zustand kann wiederhergestellt werden durch:

SC Config Servicename Type= share

Beispiel: Windows Management Instrumentation in einem ausführen separate SVCHOST.EXE:

SC Config winmgmt Type= own

Diese Technik hat keine negativen Auswirkungen, außer vielleicht steigend Speicherverbrauch etwas. Und abgesehen von der Beobachtung der CPU Verwendung für jeden Dienst macht es auch einfach, Seite zu beobachten Fehler-Delta, Datenträger-E / A-Lesegeschwindigkeit und Datenträger-E / A-Schreibrate für jeder Service. Für Process Explorer, Menü Spalten anzeigen / auswählen:   Registerkarte Prozessspeicher / Seitenfehler Delta,   Registerkarte Prozessleistung / IO Delta Write Bytes,   Registerkarte Prozessleistung / IO Delta Read Bytes, beziehungsweise.


Auf den meisten Systemen gibt es nur einen SVCHOST.EXE-Prozess hat viele Dienstleistungen. Ich habe diese Sequenz benutzt (es kann sein direkt in ein Befehlszeilenfenster eingefügt):

rem  1. "Automatic Updates"
SC Config wuauserv Type= own

rem  2. "COM+ Event System"
SC Config EventSystem Type= own

rem  3. "Computer Browser"
SC Config Browser Type= own

rem  4. "Cryptographic Services"
SC Config CryptSvc Type= own

rem  5. "Distributed Link Tracking"
SC Config TrkWks Type= own

rem  6. "Help and Support"
SC Config helpsvc Type= own

rem  7. "Logical Disk Manager"
SC Config dmserver Type= own

rem  8. "Network Connections"
SC Config Netman Type= own

rem  9. "Network Location Awareness"
SC Config NLA Type= own

rem 10. "Remote Access Connection Manager"
SC Config RasMan Type= own

rem 11. "Secondary Logon"
SC Config seclogon Type= own

rem 12. "Server"
SC Config lanmanserver Type= own

rem 13. "Shell Hardware Detection"
SC Config ShellHWDetection Type= own

rem 14. "System Event Notification"
SC Config SENS Type= own

rem 15. "System Restore Service"
SC Config srservice Type= own

rem 16. "Task Scheduler"
SC Config Schedule Type= own

rem 17. "Telephony"
SC Config TapiSrv Type= own

rem 18. "Terminal Services"
SC Config TermService Type= own

rem 19. "Themes"
SC Config Themes Type= own

rem 20. "Windows Audio"
SC Config AudioSrv Type= own

rem 21. "Windows Firewall/Internet Connection Sharing (ICS)"
SC Config SharedAccess Type= own

rem 22. "Windows Management Instrumentation"
SC Config winmgmt Type= own

rem 23. "Wireless Configuration"
SC Config WZCSVC Type= own

rem 24. "Workstation"
SC Config lanmanworkstation Type= own

rem End.

49
2018-06-07 11:53



Für die PowerShell-Benutzer da draußen: Get-Service | ForEach-Objekt {C: \ Windows \ System32 \ SC.EXE config $ _. Name typ = eigene} - Tom Wijsman
Tatsächlich bemerke ich normalerweise 3 oder 4 Fälle von svchost.exe auf Windows XP-Systemen. Auf diesem einen sehe ich 6. - SamB
@ TomWij: Sei äußerst Vorsicht bei der Verwendung dieses Snippets - wenn Sie EFS (Encrypting File System) verwenden und einstellen type= own Es funktioniert möglicherweise nicht richtig und Sie haben keinen Zugriff auf Dateien, die damit verschlüsselt sind (was katastrophal sein kann, wenn die BS-Dateien verschlüsselt sind!) - Beau
@Beau: Weißt du warum explizit? - Tom Wijsman
@Peter Mortensen: Ich habe erstellt Diensthinweis-Tool. It 1. Speichert Dienste, die svchost.exe Prozess teilen. 2. Konfiguriert Dienste so, dass sie in einem separaten Prozess ausgeführt werden. 3. Gibt alle in Schritt # 1 gespeicherten Dienste an einen Prozess zurück. Ihre Kommentare und Vorschläge sind willkommen. Danke für die Idee. - Dmytro Ovdiienko


Sie könnten das eingebaute verwenden tasklist Befehl und Filter nach Dienstname (/fi wechseln), zum Beispiel:

 tasklist /fi "services eq TermService"

Ausgabe:

Bildname PID-Sitzungsname Sitzungsnummer Mem-Verwendung
=============================== ================ == =======================
svchost.exe 2940 Konsole 0 7.096 K

Wenn Sie keinen Namen kennen, können Sie sie auflisten, indem Sie diese Anweisung ausführen:

 tasklist /svc /fi "imagename eq svchost.exe"

Es listet alle Dienste auf, die von svchost.exe gehostet werden, zum Beispiel:

Bildname PID-Dienste
=============================== =================== ==============================
svchost.exe 632 DcomLaunch
svchost.exe 684 RpcSs
svchost.exe 748 Dhcp, Dnscache
svchost.exe 788 LmHosts, W32Time
svchost.exe 804 AeLookupSvc, AudioSrv, Browser, CryptSvc,
                                   dmserver, Ereignissystem, hilfenvc,
                                   Lanmanserver, Lanmanworkstation, Messenger,
                                   Netman, Nla, Rasman, Zeitplan, seclogon,
                                   SENS, ShellHWDetection, TrkWks, winmgmt,
                                   Wuauserv, WZCSVC
svchost.exe 1140 ERSvc
svchost.exe 1712 RemoteRegistry
svchost.exe 196 W3SVC
svchost.exe 2940 TermService
svchost.exe 2420 TapiSrv

Dienste werden nicht notwendigerweise von gehostet svchost.exe. Wenn Sie also keine Service-Filterung nach dem Namen der ausführenden Datei finden, führen Sie einfach aus tasklist /svc. Es zeigt alle Dienste an.


17
2018-05-26 17:35



Dies scheint den von einem einzelnen Dienst verwendeten Speicher nicht anzuzeigen, wie in der Frage gefordert. - Duncan Jones


Process Explorer zeigt Ihnen in der Tat die individuelle Speichernutzung innerhalb von svchost 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 Process Explorer als Administrator ausführen, klicken Sie auf den zu überprüfenden Svchost, und klicken Sie auf View DLLs Taste (oder STRG + D). Rechtsklick auf die Header im DLLs-Fenster Select Columns..., dann überprüfe WS Total Bytesund traf OK.

Jetzt können Sie die Speicherbelegung einzelner Dienste (implementiert durch dlls) im svchost anzeigen und sortieren.


6
2017-12-30 16:47



Es zeigt keine Heap-Größe. - Der_Meister


Während Process Monitor ein Allzweck-Dienstprogramm ist (das alles für Sie erledigt, außer Geschirrspülen), für diese spezielle Frage möchten Sie VMMap (ein anderes SysInternals-Dienstprogramm) verwenden

http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx

VMMap ist ein Prozess zur virtuellen und physischen Speicheranalyse. 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 wird. Neben grafischen Darstellungen der Speichernutzung zeigt VMMap auch Zusammenfassungsinformationen und eine detaillierte Prozessspeicherzuordnung. Mit leistungsstarken Filter- und Aktualisierungsfunktionen können Sie die Quellen für die Speichernutzung und die Speicherkosten von Anwendungsfunktionen identifizieren.

Neben flexiblen Ansichten für die Analyse von Live-Prozessen unterstützt VMMap den Export von Daten in mehreren Formaten, einschließlich eines nativen Formats, das alle Informationen enthält, sodass Sie wieder laden können. Außerdem enthält es Befehlszeilenoptionen, die Skriptszenarien ermöglichen. 


5
2018-06-07 17:23



Cool! Gibt es jetzt eine Möglichkeit, die Verwendung eines Heap-Speicherblocks für den einzelnen Dienst zurückzuverfolgen, der es besitzt? - Aidan Ryan


Dies kommt in stackoverflow-Bereich, aber wenn Sie pro-Thread-Speicher-Statistiken erhalten können, können Sie in der Lage sein, diese zu den einzelnen Service-DLLs zu korrelieren, indem Sie sie mit den im Thread-Stack aufgelisteten DLLs abgleichen. Viel zu viel für mein kleines Systemgehirn.


2
2018-05-26 16:51





Ich erweitere Peter Mortensens Antwort hier. Bevor Sie die Art der Dienste ändern, überprüfen Sie bitte den vorhandenen Typ anhand eines Befehls wie:

sc query wuauserv

Welche gibt folgendes aus:

    TYPE               : 20  WIN32_SHARE_PROCESS
    STATE              : 1  STOPPED
    WIN32_EXIT_CODE    : 0  (0x0)
    SERVICE_EXIT_CODE  : 0  (0x0)
    CHECKPOINT         : 0x0
    WAIT_HINT          : 0x0

Jeder Typ außer "10 WIN32_OWN_PROCESS", "20 WIN32_SHARE_PROCESS" sollte nicht geändert werden.


1
2018-03-10 06:59





Das Trennen 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:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\<ServiceName>\Type

Sei vorsichtig, welchen Dienst du modifizierst, es gibt spezielle Typen außer "Eigene" und "Teilen", die nicht geändert werden sollten, wie:

  • Kernel
  • Dateien
  • Empf
  • anpassen

Danach starten Sie den Dienst einfach neu und Sie sollten in ProcessExplorer sehen, dass er nun seinen eigenen svchost.exe-Prozess hat.


0
2018-02-26 17:31