Инструменты для поиска кода загружающего процессор кода
От: vladpol Украина http://vlad-mislitel.livejournal.com/
Дата: 26.06.09 09:45
Оценка:
Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора, в ходе CodeReview, протоколирования и т.п. не удалось найти виновника. Подскажите есть ли какие-нибудь инструменты и\или методики которые могут помочь. Спасибо
С уважением, Владислав Полищук
Re: Инструменты для поиска кода загружающего процессор кода
От: Ellin Россия www.rsdn.ru
Дата: 26.06.09 09:53
Оценка:
Здравствуйте, vladpol, Вы писали:

V>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора, в ходе CodeReview, протоколирования и т.п. не удалось найти виновника. Подскажите есть ли какие-нибудь инструменты и\или методики которые могут помочь. Спасибо

Профайлер должен помочь
Re[2]: Инструменты для поиска кода загружающего процессор ко
От: vladpol Украина http://vlad-mislitel.livejournal.com/
Дата: 26.06.09 09:59
Оценка:
Здравствуйте, Ellin, Вы писали:

E>Здравствуйте, vladpol, Вы писали:


V>>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора, в ходе CodeReview, протоколирования и т.п. не удалось найти виновника. Подскажите есть ли какие-нибудь инструменты и\или методики которые могут помочь. Спасибо

E>Профайлер должен помочь
Профайлер показывает время выполнения методов (если я не ошибаюсь), а это далеко не всегда коррелирует с загрузкой процессора. Или я не прав?
С уважением, Владислав Полищук
Re: Инструменты для поиска кода загружающего процессор кода
От: matumba  
Дата: 26.06.09 11:09
Оценка:
Здравствуйте, vladpol, Вы писали:

V>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора


Vlad, к сожалению помочь не могу, но имею аналогичную проблему. Присоединяюсь к просьбе! (да, у меня ещё и сокеты всякие)

Проблема в том, что понять КТО ест ЦПУ нереально. Смотрел процесс_эксплорером, нашёл даже гнусный трэд — и чего? Всякие кернельные запросы и ноль намёков.

Есть подозрение в какой-нть некорректности моста .NET -> Win32, т.к. сам код прост до безобразия, да и написан по мелкомягким же книжкам. Плюс вспомнить сюда дифирамбы Дотнету о "безопасности псевдокода" — ну безопасен он, кому легче-то? Сам же дотнет и напортачил. Ждём .NET 4.0 ...
Re[2]: Инструменты для поиска кода загружающего процессор ко
От: vladpol Украина http://vlad-mislitel.livejournal.com/
Дата: 26.06.09 11:27
Оценка:
Здравствуйте, matumba, Вы писали:

M>Здравствуйте, vladpol, Вы писали:


V>>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора


M>Vlad, к сожалению помочь не могу, но имею аналогичную проблему. Присоединяюсь к просьбе! (да, у меня ещё и сокеты всякие)

У меня тоже сокеты имеются

M>Проблема в том, что понять КТО ест ЦПУ нереально. Смотрел процесс_эксплорером, нашёл даже гнусный трэд — и чего? Всякие кернельные запросы и ноль намёков.


А можно подоробнее как вы нашли "гнусный трэд"?
С уважением, Владислав Полищук
Re[3]: Инструменты для поиска кода загружающего процессор ко
От: matumba  
Дата: 26.06.09 11:47
Оценка: 1 (1)
M>>Проблема в том, что понять КТО ест ЦПУ нереально. Смотрел процесс_эксплорером, нашёл даже гнусный трэд — и чего? Всякие кернельные запросы и ноль намёков.

V>А можно подоробнее как вы нашли "гнусный трэд"?


Берёшь ProcessExplorer, в нём находишь своё приложение, правый клик -> Properties. Там вкладка Threads, где видно потребляемое время (см. на картинке обведённую колонку). Там же кнопка Stack с бесполезным набором функций.
Re: Инструменты для поиска кода загружающего процессор кода
От: agos Россия http://trtrmitya.wordpress.com
Дата: 26.06.09 17:44
Оценка:
Здравствуйте, vladpol, Вы писали:

V>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора, в ходе CodeReview, протоколирования и т.п. не удалось найти виновника. Подскажите есть ли какие-нибудь инструменты и\или методики которые могут помочь. Спасибо

Если это повторяется у разработчиков, то всё просто: цепляйтесь отладчиком, жмите Break All и смотрите какие потоки что делают (до этого можно посмотреть в Process Exporer идентификатор потока).
Если повторяется только у пользователей то попросите (или добавьте такую функциональность в программу) сделать дамп программы и прислать вам. Дальше, при анализе дампа, поймёте кто и что делает.

Обязательно почитайте блог http://blogs.msdn.com/tess, там есть целые руководства к действию и обучающие примеры.
Не переходите улицу на тот свет..
Re[2]: Инструменты для поиска кода загружающего процессор ко
От: agos Россия http://trtrmitya.wordpress.com
Дата: 26.06.09 17:50
Оценка:
Здравствуйте, matumba, Вы писали:

M> <skipped/>Сам же дотнет и напортачил. Ждём .NET 4.0 ...

Очень мало разработчиков которые встанут и скажут: "Да, я напортачил", обычно почему-то ищут проблемы в среде окружения.
И ведь даже порой бывает, что среда меняется под них

PS. По теме ответил выше.
Не переходите улицу на тот свет..
Re[3]: Инструменты для поиска кода загружающего процессор ко
От: Kore Sar  
Дата: 27.06.09 07:43
Оценка:
Здравствуйте, vladpol, Вы писали:

V>Здравствуйте, Ellin, Вы писали:


E>>Здравствуйте, vladpol, Вы писали:


V>>>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора, в ходе CodeReview, протоколирования и т.п. не удалось найти виновника. Подскажите есть ли какие-нибудь инструменты и\или методики которые могут помочь. Спасибо

E>>Профайлер должен помочь
V>Профайлер показывает время выполнения методов (если я не ошибаюсь), а это далеко не всегда коррелирует с загрузкой процессора. Или я не прав?

Не прав. Есть профайлеры (Ants Profiler), которые показывают построчно сколько каждая строка СУММАРНО отняла времени. Они считают не только ваши функции, но и функции фреймворка.

Т.е. если загвоздка где-то в строке,
var result = Regex.Match(value, value2)
то профайлер покажет вам кол-во вызовов этой строки и суммарное время выполнения оной.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.