Вычислить отъедающий ресурсы виндовый сервис.
3574
7
Если способ определить сервис, загружающий процессор, кроме как отключая их по одному?
Какая-нибудь программа мониторинга?
Работаю в текстовом редакторе при изменениях текста (в основном при сохранениях), иногда процессор "призадумывается" на 1-2 секунды. Максимальная загрузка в этот момент создаётся svchost'ом, но вот каким именно сервисом - не понятно. Раньше такого не было.
Что ставил - не помню). Напрягает. Для наблюдения за процессами использую Process Explorer.
RealWega
используйте process explorer и поставьте его рисовать вам график загрузки.

Смотрите по ниятям(threads), т.е. нужно смотреть какая нить в момент зависания работает. отлавливается в ручную, по нити можно увидеть кто это делает, также процесс эксплорер по нити показывает какой системный сервис для нее работает.

Также можно посмотреть стек вызова Call Stack - там посмотреть какая функция и откуда работает в момент сжирания процессора.

Так-же можно запустить наблюдение за "ручками" handle по файловой системе и реестру - т.е. увидеть что происходит в момент - там нужно отлавливать сообщения об ошибках вида нет доступа, не возможно что нть открыть, доступится и т.п. это тоже может приблизить вас к решению
RealWega
во вложении как можно увидеть список сервисов, которые от процесса запущены -
просто наведите на него мышей и он их покажет.
RealWega
Нитки смотреть здесь, а во вкладке сервисы этой-же менюхи можно посмотреть и список сервисов. Менюха вылазиет когда на процесс пару раз нажмешь.

Для любой нитки можно запустить просмотр стека(только предварительно лучше debug tools поставить, чтобы более осмысленные вещи оно выводило)
ViT
2whiplash
Да, он самый.

2ViT
Спасибо, я уже облазил весь процесс эксплорер, но так и не выяснил для себя ничего конкретного. Единственное, попробую "только предварительно лучше debug tools поставить". "также процесс эксплорер по нити показывает какой системный сервис для нее работает" - я не могу понять, где можно эту связь проследить в этом и вопрос.
Вчера наблюдал: наибольшая загрузка у потока: kernel32.dll!CreateThread+0x22, в стеке - ntkrnlpa.exe, на втором месте ntdll.dll!RtlAllocateHeap+0x18c, в стеке также ntkrnlpa, хотя, если я смотрю стек вверх ногами, то внизу там kernel32.dll!GetModuleFileNameA+0x1b4. По другим строчкам в стеке (их там штук 5) я понять ничего не могу. По поводу file- и regmon'ов - хотелось что-то простое, чтобы просто показало из-за чего конкретно подтормаживает. К тому же process explorer не показывает увеличения файловых операций.
ЗЫ. Поставил штуки для отладки. Присоединился к нужному svchost'у. Всё облазил, но как применить увиденное не понял. Зато при выходе из отладки svchost грохнулся вместе со всеми своими службами. Пока поработаю без этих служб (с виду основные программы работают). Потом перезапущу и попробую по одной отключать службы, хотя муторно это (список служб приличный, в районе 10ка). Может вы чего подскажите по использованию wdt в купе с process explorer'ом. Я не могу сообразить как вычислить именно нужную службу и/или программу, которая её использует.
RealWega
дебагать svchost - это не самый разумный способ. Есть еще вдеро всяких статей на тему svchost.exe ест много CPU - так что попробуйте просто поставить все последние обновления.

почитайте вот это - может про вас http://support.microsoft.com/kb/927891
ViT
Воспользовавшись новейшим методом интеллектуального поиска - методом тыка, выяснил, что шило в коде было у "Службы сетевого расположения (NLA)". Сервис отмечен как вредитель и обесточен. В работающем состоянии эта служба каждую минуту загружала процессор процентов на 80 на одну-две секунды.
ЗЫ. Винда периодически обновляется.