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

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

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

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

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

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

Если есть лучший вариант, как исследовать, сузьте основную причину этогоВопрос, пожалуйста, дайте мне знать.

Ответы [ 2 ]

24 голосов
/ 20 января 2013

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

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

Решение для варианта 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.

5 голосов
/ 19 апреля 2012
  1. Запустить монитор ресурсов

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

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

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

...