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):
SC Config Servicename Type= own
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:
SC Config Servicename Type= share
Beispiel: So führen Sie die Windows-Verwaltungsinstrumentation in einer separaten SVCHOST.EXE aus:
SC Config winmgmt Type= own
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):
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.
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:
tasklist /fi "services eq TermService"
Ausgabe:
Bildname PID-Sitzungsname Sitzungsnummer Verwendung ================================================= ===================== svchost.exe 2940 Console 0 7.096 K
Wenn Sie keinen Namen kennen, können Sie diese mit der folgenden Anweisung auflisten:
tasklist /svc /fi "imagename eq svchost.exe"
Es listet alle von svchost.exe gehosteten Dienste auf, zum Beispiel:
PID-Dienste für Bildnamen ================================================ ========================= 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, EventSystem, helpsvc, LANMAN-Server, LANMAN-Workstation, Messenger, Netman, Nla, RasMan, Schedule, 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
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 aus tasklist /svc
. Es werden alle Dienste angezeigt.
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 sie WS Total Bytes
und drücken Sie OK
.
Jetzt können Sie die Speichernutzung einzelner Dienste (von DLLs implementiert) im svchost anzeigen und sortieren.
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.
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.
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:
sc query wuauserv
Welches wird das Folgende ausgeben:
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
Andere Typen als "10 WIN32_OWN_PROCESS", "20 WIN32_SHARE_PROCESS" sollten nicht geändert werden.
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:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\<ServiceName>\Type
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.