Wie verfolge ich die CPU-Auslastung für Windows Services?

27

Ich verwende den Windows Task-Manager, um die CPU-Auslastung zu verfolgen. Ich stelle fest, dass meine Anwendungen aufgelistet sind, Windows-Dienste jedoch nicht.

Beispielsweise liegt die Gesamt-CPU-Auslastung bei 70%, die Zusammenfassung der aufgelisteten Anwendungen jedoch nur bei etwa 30%. Ich gehe davon aus, dass der Unterschied zu Diensten besteht, die nicht auf der Registerkarte "Prozesse" im Windows Task-Manager aufgeführt sind.

Küken
quelle

Antworten:

25

So erhalten Sie detaillierte Informationen zu einem Dienst ohne externe Tools unter Windows 7 und 8:

Öffnen Sie den Ressourcenmonitor:

  • Öffnen Sie den Task-Manager und klicken Sie auf die Registerkarte Leistung
  • Klicken Sie unten auf "Open Resource Monitor"

Servicedetail anzeigen:

  • Klicken Sie auf die Registerkarte "CPU"
  • Suchen Sie im Abschnitt "Prozesse" den gewünschten Prozess. Sie können nach CPU sortieren, indem Sie auf die Spaltenüberschrift "CPU" klicken
    • Aktivieren Sie das Kontrollkästchen daneben
  • Erweitern Sie den folgenden Abschnitt "Dienste". Sie sehen, welcher Dienst die CPU verwendet

Bildbeschreibung hier eingeben

Ich musste das herausfinden, weil svchost eine Menge Ressourcen verbrauchte und nur so konnte ich sehen, dass upnphost der Schuldige war.

dominik andreas
quelle
Es gibt auch einen Abschnitt "Dienste", den Sie unter "Prozesse" erweitern können. Wie auch immer, danke!
Nicholas Riley
Das ist, worüber ich gesprochen habe, ich bin froh, dass Sie es gefunden haben :-) Wenn Sie unter "Prozesse" einen Prozess auswählen (in meinem Fall einen bestimmten svchost), können Sie die Dienste in der Ansicht "Dienste" anzeigen, die diesem bestimmten zugeordnet sind verarbeiten.
Dominik Andreas
Schließlich kann ich den mysteriösen Dienst, der unter Windows 7 1 CPU zu 100% verbraucht, nur dann finden, wenn sich mein Bildschirm nach 15 Minuten im Leerlauf ausschaltet. Sobald ich es aufwecke, gibt der Dienst die CPU frei, die es verwendet. Ich habe gerade genug gesehen, um zu sehen, dass es ein "svchost" ist ... jetzt, mit einem Durchschnitt von 60 Sekunden, werde ich Zeit haben, es zu sehen. Verdammte Botnets!
MrBrody
7

Das wahrscheinlich beste Tool ist Process Explorer von Sysinternals. Sie können dieses Tool und viele andere hier bekommen .

Bearbeiten: Um zu sehen, welche Dienste in svchost anstatt als separater Prozess ausgeführt werden, müssen Sie die Spalte "Befehlszeile" zum rechten Fenster hinzufügen. Leider werden Ihnen hier keine Dienste angezeigt, die gebündelt ausgeführt werden. Um diese Informationen in Process Explorer anzuzeigen, müssen Sie den Mauszeiger über die betreffende Instanz von svchost bewegen. Die Informationen werden in einem Popup angezeigt.

KevinH
quelle
Sie können auch festlegen, dass procmon den Taskman ersetzt. Procmon registriert sich dazu als Debugger für taskman und führt sich anstelle von taskman aus, wenn Taskman gestartet werden soll.
Brian Reiter
Hoppla. Nicht procmon, ich meine procexp. (Procmon ist ein weiteres Tool von sysinternals, mit dem Sie den Registrierungs-, Dateisystem- und Windows-API-Zugriff auf Prozesse überwachen können.)
Brian Reiter,
Beachten Sie, dass Sie bei Verwendung von Datei> Details für alle Prozesse anzeigen die Registerkarte Threads in den Prozesseigenschaften für diese Instanz von svchost.exe verwenden können (doppelklicken Sie auf den Prozess oder drücken Sie die Eingabetaste), um die CPU-Auslastung pro Thread anzuzeigen In der Spalte Service wird der entsprechende Service aufgelistet.
Nicholas Riley
In ProcessExplorer haben mir die Registerkarten [Dienste] und [TCP / IP] wertvolle Informationen zur Identifizierung bestimmter Dienste geliefert. Es gibt auch eine andere Art der Service-Identifizierung über den rechten Mausklick im Standard-Task-Manager, den ich unten als separate Antwort veröffentliche.
Alex Fortuna
1

Probieren Sie den Extensoft Free Extended Task Manager aus

http://www.extensoft.com/?p=downloads

Gehen Sie zur Registerkarte Dienste und klicken Sie mit der rechten Maustaste auf einen ausgeführten Dienst. Klicken Sie dann auf Gehe zu Prozess .

Sie gelangen zurück zur Registerkarte Prozesse und können markieren, welcher Prozess von diesem Dienst verwendet wird.

Qwerty
quelle
Ich habe den kostenlosen erweiterten Task-Manager von extensoft installiert. Es wird eine Service-Registerkarte hinzugefügt. Ich klicke auf den Dienst und wähle zum Verarbeiten gehen. Es wird zur Registerkarte Prozess gewechselt, der Prozess wird jedoch nicht hervorgehoben. Gibt es auch ein Tool, das die CPU-Nutzung aller Dienste in einer Liste anzeigt (ähnlich der Prozessliste im Task-Manager)? Hinweis: Ich verwende Windows Vista Home Premium Edition.
Ich bin nicht sicher, warum es den Prozess nicht hervorhebt. Ich habe auch eine Vista-Maschine neben mir und sie zeigt, welcher Prozess mit dem Dienst zusammenhängt.
Qwerty
1

Viele Dienste werden in einer Instanz eines generischen Hostprozesses, svchost.exe, ausgeführt. Sie können tasklist / svc in einer Befehlszeile verwenden, um eine Aufzählung der Dienste abzurufen, die in jeder Instanz von svchost.exe zusammen mit anderen Prozessen ausgeführt werden.

Sie können im Task-Manager auch mit der rechten Maustaste auf einen Prozess svchost.exe klicken und "Gehe zu Service (s)" auswählen. Der Task-Manager wechselt dann zur Registerkarte "Services" und markiert die relevanten Services.

Mit sysinternals process explorer können Sie mit der Maus über eine servicehost.exe fahren und eine QuickInfo der darin gehosteten Dienste anzeigen.

Keine dieser Angaben gibt Auskunft darüber, wie viel CPU-Zeit des Host-Service-Prozesses für einen bestimmten Mitgliedsservice verwendet wird, der in diesem Prozess gehostet wird.

Brian Reiter
quelle
tasklist /svcist eine nette Sache, zeigt PIDs und verwandte Dienste in Kurzform. Vielen Dank!
Alex Fortuna
1

Dies funktionierte für mich im Standard-Task-Manager von Windows 7 Ultimate:

  1. Öffnen Sie den Task-Manager.
  2. Klicken Sie auf die Registerkarte [Prozesse].
  3. Klicken Sie auf die Schaltfläche [Prozesse aller Benutzer anzeigen].
  4. Klicken Sie mit der rechten Maustaste auf das svchost.exeProblem (Speicher, CPU usw.).
  5. Wählen Sie im Pulldown-Menü [Gehe zu Service (s)].

Dadurch gelangen Sie zur Registerkarte [Dienste] mit einem oder mehreren hervorgehobenen zugehörigen Diensten . Bitte beachten Sie, dass sich eine einzelne svchost.exeauf eine Reihe von Diensten auf der Registerkarte [Dienste] beziehen kann.

Alex Fortuna
quelle
0

Sie sollten den Task-Manager als Administrator öffnen. Klicken Sie auf die Schaltfläche "Prozesse aller Benutzer anzeigen".

Aber wie Brian Reiter sagte, werden viele Dienste in einem Prozess gehostet. Um festzustellen, welcher Dienst Ihre CPU verbraucht, können Sie mein Service Disclosure- Tool verwenden. Sie können damit Dienste auf bestimmte Prozesse aufteilen. Sie können sehen, welcher Dienst Ressourcen verwendet. Nach einer Untersuchung können Sie alle Dienste zurückgeben.

Dmytro Ovdiienko
quelle