Svchost: Как сделать так, чтобы он запускал только один модуль на экземпляр svchost.exe? Как получить расширенную информацию о процессе?
У меня проблема с одним из моих приложений. Я запускаю приложение, все в порядке. Когда я закрываю это приложение, я замечаю, что один из процессов "svchost" в системе занимает около 95-100% ЦП, и мне нужно выяснить, что занимает так много циклов ЦП.
Я поставил перед собой довольно простые и понятные цели:
- Получить информацию о процессе или этот конкретный "svchost", который занимает так много процессора
- Я знаю, для чего используется процесс svchost, поэтому я избавляю вас, ребята, от усилий, чтобы объяснить мне об этом. Так что теперь я должен знать, какие модули загружаются этим мошенническим svchost.
- Я запустил свое приложение, закрыл его и убедился, что мой процесс полностью закрыт, больше не в памяти. Затем я получил PID svchost, занимающий 100% CPU
- Я запустил ProcessExplorer (из sysinternals), получил информацию о том, сколько и каких сервисов размещал этот svchost. Они около 12 услуг. Я не стал бы беспокоиться об этом списке, так как меня больше беспокоит вопрос, КАК ОПРЕДЕЛИТЬ, какая из этих 12 служб загружает циклы ЦП.
- Теперь у меня есть список со мной, и здесь начинается сложная часть... Я хочу сделать 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.
Запустить монитор ресурсов
- Введите Resource Monitor в меню "Пуск" или
- Нажмите кнопку "Монитор ресурсов" на вкладке "Быстродействие" в диспетчере задач.
Нажмите на вкладку ЦП в верхней части монитора ресурсов.
Поставьте галочку рядом с процессом, который вы хотите исследовать (я сортирую по Среднее CPU)
Службы будут фильтроваться по помеченному вами процессу и отображать статистику ЦП для каждой службы, запущенной в этом процессе.