Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора, в ходе CodeReview, протоколирования и т.п. не удалось найти виновника. Подскажите есть ли какие-нибудь инструменты и\или методики которые могут помочь. Спасибо
С уважением, Владислав Полищук
Re: Инструменты для поиска кода загружающего процессор кода
Здравствуйте, vladpol, Вы писали:
V>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора, в ходе CodeReview, протоколирования и т.п. не удалось найти виновника. Подскажите есть ли какие-нибудь инструменты и\или методики которые могут помочь. Спасибо
Профайлер должен помочь
Re[2]: Инструменты для поиска кода загружающего процессор ко
Здравствуйте, Ellin, Вы писали:
E>Здравствуйте, vladpol, Вы писали:
V>>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора, в ходе CodeReview, протоколирования и т.п. не удалось найти виновника. Подскажите есть ли какие-нибудь инструменты и\или методики которые могут помочь. Спасибо E>Профайлер должен помочь
Профайлер показывает время выполнения методов (если я не ошибаюсь), а это далеко не всегда коррелирует с загрузкой процессора. Или я не прав?
С уважением, Владислав Полищук
Re: Инструменты для поиска кода загружающего процессор кода
Здравствуйте, vladpol, Вы писали:
V>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора
Vlad, к сожалению помочь не могу, но имею аналогичную проблему. Присоединяюсь к просьбе! (да, у меня ещё и сокеты всякие)
Проблема в том, что понять КТО ест ЦПУ нереально. Смотрел процесс_эксплорером, нашёл даже гнусный трэд — и чего? Всякие кернельные запросы и ноль намёков.
Есть подозрение в какой-нть некорректности моста .NET -> Win32, т.к. сам код прост до безобразия, да и написан по мелкомягким же книжкам. Плюс вспомнить сюда дифирамбы Дотнету о "безопасности псевдокода" — ну безопасен он, кому легче-то? Сам же дотнет и напортачил. Ждём .NET 4.0 ...
Re[2]: Инструменты для поиска кода загружающего процессор ко
Здравствуйте, matumba, Вы писали:
M>Здравствуйте, vladpol, Вы писали:
V>>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора
M>Vlad, к сожалению помочь не могу, но имею аналогичную проблему. Присоединяюсь к просьбе! (да, у меня ещё и сокеты всякие)
У меня тоже сокеты имеются
M>Проблема в том, что понять КТО ест ЦПУ нереально. Смотрел процесс_эксплорером, нашёл даже гнусный трэд — и чего? Всякие кернельные запросы и ноль намёков.
А можно подоробнее как вы нашли "гнусный трэд"?
С уважением, Владислав Полищук
Re[3]: Инструменты для поиска кода загружающего процессор ко
M>>Проблема в том, что понять КТО ест ЦПУ нереально. Смотрел процесс_эксплорером, нашёл даже гнусный трэд — и чего? Всякие кернельные запросы и ноль намёков.
V>А можно подоробнее как вы нашли "гнусный трэд"?
Берёшь ProcessExplorer, в нём находишь своё приложение, правый клик -> Properties. Там вкладка Threads, где видно потребляемое время (см. на картинке обведённую колонку). Там же кнопка Stack с бесполезным набором функций.
Re: Инструменты для поиска кода загружающего процессор кода
Здравствуйте, vladpol, Вы писали:
V>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора, в ходе CodeReview, протоколирования и т.п. не удалось найти виновника. Подскажите есть ли какие-нибудь инструменты и\или методики которые могут помочь. Спасибо
Если это повторяется у разработчиков, то всё просто: цепляйтесь отладчиком, жмите Break All и смотрите какие потоки что делают (до этого можно посмотреть в Process Exporer идентификатор потока).
Если повторяется только у пользователей то попросите (или добавьте такую функциональность в программу) сделать дамп программы и прислать вам. Дальше, при анализе дампа, поймёте кто и что делает.
Обязательно почитайте блог http://blogs.msdn.com/tess, там есть целые руководства к действию и обучающие примеры.
Не переходите улицу на тот свет..
Re[2]: Инструменты для поиска кода загружающего процессор ко
Здравствуйте, matumba, Вы писали:
M> <skipped/>Сам же дотнет и напортачил. Ждём .NET 4.0 ...
Очень мало разработчиков которые встанут и скажут: "Да, я напортачил", обычно почему-то ищут проблемы в среде окружения.
И ведь даже порой бывает, что среда меняется под них
PS. По теме ответил выше.
Не переходите улицу на тот свет..
Re[3]: Инструменты для поиска кода загружающего процессор ко
Здравствуйте, vladpol, Вы писали:
V>Здравствуйте, Ellin, Вы писали:
E>>Здравствуйте, vladpol, Вы писали:
V>>>Дано много потчное .Net приложение, которое при определенных условиях начинает "кушать" 100% процессора, в ходе CodeReview, протоколирования и т.п. не удалось найти виновника. Подскажите есть ли какие-нибудь инструменты и\или методики которые могут помочь. Спасибо E>>Профайлер должен помочь V>Профайлер показывает время выполнения методов (если я не ошибаюсь), а это далеко не всегда коррелирует с загрузкой процессора. Или я не прав?
Не прав. Есть профайлеры (Ants Profiler), которые показывают построчно сколько каждая строка СУММАРНО отняла времени. Они считают не только ваши функции, но и функции фреймворка.
Т.е. если загвоздка где-то в строке,
var result = Regex.Match(value, value2)
то профайлер покажет вам кол-во вызовов этой строки и суммарное время выполнения оной.