Jak zdiagnozować nieprawidłowe użycie procesora przez svchost.exe? [duplikować]


19

Mam laptopa z 32-bitowym systemem Win 7 zasilanym dwurdzeniowym Pentium (to laptop z 2010 roku). Czasami działa dobrze, ale zwykle pracuje na biegu jałowym przy 100% obciążeniu procesora. Procesor jest zużywany przez dwa procesy svchost.exe (po 50%). O ile rozumiem, jest to host usług. Czy jest jakiś sposób, aby dowiedzieć się, która usługa jest winowajcą?

Uwaga: dzieje się to nawet w trybie awaryjnym.


1
Możesz użyć eksploratora procesów, aby spojrzeć na usługi działające w dwóch instancjach svchost ( technet.microsoft.com/en-us/sysinternals/processexplorer.aspx )
— Yorik

@Yorik: Myślałem o tym, ale ProcessExplorer nie okazał się przydatny.
— Violet Giraffe

5
W Windows 7 powiedziałbym, że obecnie> 90% problemów z procesorem svchost jest związanych z usługą Windows Update. Jeśli masz poważne problemy z aktualizacją systemu (co może być trudne przy nowej instalacji ze starym procesorem), spróbuj zainstalować KB3050265, KB3138612 i KB3145739 bez połączenia sieciowego. Następnie uruchom ponownie komputer i wyszukaj aktualizacje.
— ontrack

@ontrack: Ciekawe. Właściwie myślę, że sprawdzanie aktualizacji jest wyłączone na tym komputerze, prawdopodobnie nigdy nie było aktualizowane od 2010 lub 2012 roku. I nie chcę instalować aktualizacji, muszę tylko naprawić problem z procesorem. Jeśli masz rację, czy po prostu wyłączysz usługę Windows Update?
— Violet Giraffe

pytano tak wiele razy. patrz dup. Prawdopodobnie widzisz problem skanowania WU. Rozwiąż to z kroków w mojej odpowiedzi: superuser.com/a/996072/174557
— magicandre1981

Odpowiedzi:


28

Jako instancja svchost.exe hostuje wiele usług systemowych, oto jak oddzielić usługi, każda do własnej instancji svchost.exe, aby dowiedzieć się, która usługa zużywa procesor.

Procedura jest następująca:

  1. Użyj Menedżera zadań, aby wyświetlić wszystkie procesy posortowane według malejącej liczby procesorów i zaznaczyć PID procesów, które zużywają procesor

  2. W wierszu polecenia (cmd) wprowadź polecenie
    Tasklist /svc /fi "IMAGENAME eq svchost.exe"
    wprowadź opis zdjęcia tutaj

  3. Problematyczne wystąpienia svchost.exe można teraz zlokalizować według ich identyfikatora PID, a po prawej stronie znajduje się lista usług systemowych, które obsługują

  4. Dla każdej z nazw na liście wprowadź następujące polecenie w wierszu polecenia (cmd), który jest uruchamiany jako administrator:
    sc config <name> type= own
    (Zwróć uwagę na spację między „=” a „własnym”)

  5. Restart

Oddzielone usługi systemowe będą teraz działać w osobnej instancji svchost.exe i będą widoczne w Menedżerze zadań na karcie Procesy. Możesz kliknąć instancję prawym przyciskiem myszy i wybrać opcję „Przejdź do usługi”, aby przejść bezpośrednio do usługi lub ponownie użyć polecenia tasklist.

Aby uzyskać więcej informacji, zobacz artykuł Microsoft
Pierwsze kroki z SVCHOST.EXE Rozwiązywanie problemów .


7

Process Explorer ułatwia to. Potwierdziłem, że działa z Process Explorer v16.20 na 64-bitowym systemie Windows 7 Professional i 64-bitowym systemie Windows 10 Pro.

  1. Uruchom podwyższoną wersję Process Explorer.
  2. Znajdź svchost.exew CPUkolumnie proces o wysokiej (a nawet po prostu mierzalnej / niepustej) wartości . Pomocne może być sortowanie według kolumny Processlub CPU.
  3. Kliknij svchost.exeproces prawym przyciskiem myszy i wybierz Properties....
  4. W oknie właściwości procesu wybierz Threadskartę. Wszystkie wątki w tym procesie zostaną wyświetlone.
  5. Znajdź w CPUkolumnie wątek o wysokiej (lub ponownie mierzalnej / niepustej) wartości . Sortowanie według CPUkolumny może w tym pomóc.Karta Process Process wątków
  6. ServiceKolumna pokaże nazwę usługi, w którym ten wątek jest uruchomiony.

Jeśli nazwa usługi nie jest ci znana ...

  1. W oknie właściwości procesu wybierz Serviceskartę. Zostaną wyświetlone wszystkie usługi uruchomione w tym procesie.
  2. Dopasuj Servicekolumnę na Serviceskarcie do wartości Servicekolumny na Threadskarcie znajdującej się w kroku 6.Karta Usługi procesów Process Explorer
  3. Display NameKolumna wyświetli przyjazną nazwę usługi. Opis wybranej usługi pojawi się pod listą usług.

Ach, nie wiedziałem o tych zaawansowanych funkcjach Process Explorer. Dzięki.
— Violet Giraffe

3

Możesz użyć Menedżera zadań . Istnieją inne sposoby (wiersz poleceń, a nawet napisanie programu przy użyciu WinAPI ), ale nie będę ich tutaj omawiać. Zanim przejdziesz dalej, użytkownik powinien mieć uprawnienia administracyjne.

Na karcie Procesy :

  • Zaznacz opcję Pokaż procesy wszystkich użytkowników .
  • Kliknij prawym przyciskiem myszy na procesy „nagłówku tabeli” (która zawiera nazwy kolumn jak nazwa obrazu , PID , nazwy użytkownika , CPU , ...), a następnie wybierz Wybierz kolumny ... .
    • W wyskakującym oknie dialogowym przewiń w dół i upewnij się, że zaznaczyłeś Wiersz poleceń i PID (identyfikator procesu), a następnie naciśnij OK .
  • Wróć do zakładki Procesy , kliknij nagłówek kolumny procesora, aby procesy były uporządkowane według zużycia procesora (zwróć uwagę, że procesy mogą być wyświetlane w kolejności rosnącej / malejącej - każde kliknięcie CPU przełącza kolejność), klikaj, aż 2 procesy pojawiają się u góry tabeli. Teraz możesz zobaczyć ich linię poleceń (nie wiem, ale mam wrażenie, że jednym z nich jest netsvcs(Usługi sieciowe)), a także ich PID.

  • Następnie musisz dopasować 2 procesy do usług. W tym celu możesz:

    • Kliknij prawym przyciskiem myszy na nich i wtedy idź do usług (y) ... . Spowoduje to przejście do zakładki Usługi , z zaznaczoną całą usługą uruchomioną w tym procesie (dla tej opcji nie potrzebujesz żadnego z poprzednich kroków :)).
    • Otwórz przystawkę Usługi w mmc . Kiedy podwójne klikanie na usłudze (ma sens tylko sprawdzanie tych, które są uruchomione), w polu Ścieżka do pliku wykonywalnego możesz zobaczyć ich linię poleceń, na której powinieneś dopasować.
  • W W10 możesz wyświetlić dokładne informacje, których potrzebujesz, z Monitora zasobów (możesz uruchomić go z Menedżera zadań , zakładka Wydajność ). Tam przejdź do zakładki CPU , a usługi i zużycie procesora są wymienione.

EDYCJA 0 : Zaktualizowana odpowiedź, aby zapewnić prostsze (i bardziej sensowne) podejście, zamiast drapania mojej prawej głowy przy użyciu mojego stylu lewej ręki , który pierwotnie opublikowałem.


Nigdy nie zauważyłem, że widać wiersz poleceń, fajnie! Nie tak proste, jak odpowiedź Harrymca, ale dobrze wiedzieć.
— Violet Giraffe

Menedżer zadań może to zrobić samodzielnie. Jeśli podczas przełączania na kartę Usługi zostanie wybrany proces svchost, zostaną tam wybrane usługi uruchomione w tym procesie.
— Simon Richter,

1
Naprawdę? Na W10 tak się nie dzieje (przynajmniej gdy jest już wybrana usługa). Jedynym sposobem jest kliknięcie na proces, a następnie wybranie Idź do usług (opcji), które przegapiłem - najprawdopodobniej istnieje również w W7 ). Niestety nie jestem w stanie tego sprawdzić.
— CristiFati,

1
@ CristiFati ta opcja istnieje od Windows Vista (źródło: technet.microsoft.com/en-us/library/ff642468.aspx ), prawdopodobnie powinieneś dodać ją do swojej odpowiedzi zamiast ręcznego dopasowania PID
— Vasily Alexeev
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.