19

У меня есть ноутбук с 32-разрядной системой Win 7 на базе двухъядерного процессора Pentium (это ноутбук 2010 года). Иногда он работает нормально, но обычно он работает на холостом ходу при 100% загрузке процессора. Процессор используется двумя процессами svchost.exe (по 50% каждый). Насколько я понимаю, это сервисный хост. Есть ли способ узнать, какой сервис является виновником?

Примечательно: это происходит даже в безопасном режиме.

3 ответа3

28

В качестве экземпляра svchost.exe размещено несколько системных служб, здесь показано, как разделить службы, каждая из которых имеет собственный экземпляр svchost.exe, чтобы выяснить, какая служба потребляет процессор.

Процедура выглядит следующим образом:

  1. Используйте диспетчер задач, чтобы показать все процессы, отсортированные по убыванию ЦП, и отметить PID процессов, которые потребляют ЦП

  2. В командной строке (cmd) введите команду
    Tasklist /svc /fi "IMAGENAME eq svchost.exe"

  3. Проблемные экземпляры svchost.exe теперь можно найти по их PID, а справа вы найдете список системных служб, которые они размещают

  4. Для каждого из имен в списке введите следующую команду в командной строке (cmd), которая запускается от имени администратора:
    sc config <name> type= own
    (Обратите внимание на пробел между '=' и 'own')

  5. перезагружать

Разделенные системные службы теперь будут запускаться в своем собственном экземпляре svchost.exe, и их можно увидеть в диспетчере задач на вкладке «Процессы». Вы можете щелкнуть правой кнопкой мыши по экземпляру и выбрать «Перейти к сервису (ам)», чтобы перейти непосредственно к сервису, или снова использовать команду tasklist.

Для получения дополнительной информации см. Статью Microsoft
Начало работы с SVCHOST.EXE Устранение неполадок.

7

Process Explorer делает это легко. Я подтвердил, что это работает с Process Explorer v16.20 на 64-битной Windows 7 Professional и 64-битной Windows 10 Pro.

  1. Запустите Process Explorer с повышенными правами.
  2. Найдите процесс svchost.exe с высоким (или даже просто измеряемым / непустым) значением в столбце CPU . Сортировка по столбцу Process или CPU может помочь в этом.
  3. Щелкните правой кнопкой мыши процесс svchost.exe и выберите Properties...
  4. В окне свойств процесса выберите вкладку Threads . Все темы в этом процессе будут отображаться.
  5. Найдите поток с высоким (или, опять же, просто измеримым / непустым) значением в столбце CPU . Сортировка по столбцу CPU может помочь в этом.Process Explorer процесс вкладка Темы
  6. Столбец Service покажет имя сервиса, в котором работает этот поток.

Если название сервиса вам не знакомо ...

  1. В окне свойств процесса выберите вкладку Services . Все сервисы, которые работают в этом процессе, будут отображены.
  2. Сопоставьте столбец « Service на вкладке « Services » со значением столбца « Service на вкладке « Threads », расположенной на шаге 6.Process Explorer вкладка "Службы процесса"
  3. В столбце « Display Name будет отображаться понятное имя службы. Описание выбранного сервиса появится под списком сервисов.
3

Вы можете использовать диспетчер задач. Есть и другие способы (командная строка или даже написать какую-нибудь программу с использованием WinAPI), но я не буду их здесь обсуждать. Прежде чем идти дальше, ваш пользователь должен иметь права администратора.

На вкладке Процессы :

  • Установите флажок Показать процессы всех пользователей.
  • Щелкните правой кнопкой мыши на "заголовке таблицы" процессов (который содержит имена столбцов, такие как « Имя изображения», « PID», « Имя пользователя», « CPU»...) и выберите « Выбрать столбцы ...».
    • В появившемся диалоговом окне выполните прокрутку вниз и убедитесь, что вы проверили Командную строку и PID (Идентификатор процесса), а затем нажмите OK.
  • Вернитесь на вкладку Процессы, щелкните заголовок столбца ЦП, чтобы процессы были упорядочены по их потреблению ЦП (обратите внимание, что процессы могут отображаться в порядке возрастания / убывания - каждый щелчок ЦП переключает порядки), нажимайте, пока 2 процесса появляются в верхней части таблицы. Теперь вы можете видеть их командную строку (я не знаю, но у меня есть ощущение, что один из них - netsvcs (Network Services)), а также их PID.

  • Далее необходимо сопоставить 2 процесса с сервисами. Для этого вы можете:

    • Щелкните правой кнопкой мыши по ним, а затем перейдите к сервису (ам) .... Это переместится на вкладку « Службы », в которой будут выбраны все службы, запущенные в этом процессе (для этой опции вам не нужны никакие предыдущие шаги :)).
    • Откройте Услуги SnapIn в ММС. При двойном клике на сервисе (имеет смысл проверять только те, которые работают), в разделе « Путь к исполняемому файлу» вы можете увидеть командную строку, с которой вам нужно выполнить сопоставление.
  • На W10 вы можете просмотреть точную информацию, которая вам нужна, из Resource Monitor (вы можете запустить ее из диспетчера задач, вкладка Performance ). Там вы переходите на вкладку CPU и перечисляются сервисы и их потребление CPU.

РЕДАКТИРОВАТЬ0: Обновленный ответ, чтобы обеспечить более простой (и более понятный ) подход, вместо того, чтобы поцарапать мою правую сторону головы, используя стиль левой руки , который я первоначально разместил.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .