Svchost: Как сделать так, чтобы он запускал только один модуль на экземпляр svchost.exe? Как получить расширенную информацию о процессе?

У меня проблема с одним из моих приложений. Я запускаю приложение, все в порядке. Когда я закрываю это приложение, я замечаю, что один из процессов "svchost" в системе занимает около 95-100% ЦП, и мне нужно выяснить, что занимает так много циклов ЦП.

Я поставил перед собой довольно простые и понятные цели:

  1. Получить информацию о процессе или этот конкретный "svchost", который занимает так много процессора
  2. Я знаю, для чего используется процесс svchost, поэтому я избавляю вас, ребята, от усилий, чтобы объяснить мне об этом. Так что теперь я должен знать, какие модули загружаются этим мошенническим svchost.
  3. Я запустил свое приложение, закрыл его и убедился, что мой процесс полностью закрыт, больше не в памяти. Затем я получил PID svchost, занимающий 100% CPU
  4. Я запустил ProcessExplorer (из sysinternals), получил информацию о том, сколько и каких сервисов размещал этот svchost. Они около 12 услуг. Я не стал бы беспокоиться об этом списке, так как меня больше беспокоит вопрос, КАК ОПРЕДЕЛИТЬ, какая из этих 12 служб загружает циклы ЦП.
  5. Теперь у меня есть список со мной, и здесь начинается сложная часть... Я хочу сделать 1 из 2 вариантов ниже

Вариант 1: Как мне определить, какая из этих 12 служб занимает так много ЦП? Могу ли я получить расширенную информацию для этого процесса svchost, которая дает мне подробную информацию на основе "за услугу", размещенную в этом процессе, или на основе процесса, который у меня есть сейчас?

Вариант 2. Можно ли настроить windows, чтобы svchost запускал только один сервис на экземпляр svchost?

Если есть лучший способ выяснить причину этой проблемы, сообщите мне.

2 ответа

Решение

Я ответил на мой вопрос, но я поставил его под комментариями. Я сейчас добавляю то же самое в качестве ответа, чтобы он был известен.

Я выяснил, как сделать оба варианта в моем вопросе выше:

Решение для варианта 1:

Откройте Resource Monitor (resmon.exe), перейдите на вкладку CPU, проверьте файл svchost.exe (с PID, за которым нужно следить) на вкладке Image, перейдите в поле "services" и проверьте использование ЦП различными службами.

Решение для варианта 2:

sc config <service name> type= own

Или изменить в реестре HKLM\System\CurrentControlSet\Services\<ServiceName>\Type до 0x10.

Для получения дополнительной информации обратитесь к http://blogs.technet.com/b/askperf/archive/2008/01/11/getting-started-with-svchost-exe-troubleshooting.aspx неисправностей.aspx.

  1. Запустить монитор ресурсов

    • Введите Resource Monitor в меню "Пуск" или
    • Нажмите кнопку "Монитор ресурсов" на вкладке "Быстродействие" в диспетчере задач.
  2. Нажмите на вкладку ЦП в верхней части монитора ресурсов.

  3. Поставьте галочку рядом с процессом, который вы хотите исследовать (я сортирую по Среднее CPU)

  4. Службы будут фильтроваться по помеченному вами процессу и отображать статистику ЦП для каждой службы, запущенной в этом процессе.

Другие вопросы по тегам