отслеживалка локов

NataNata

Ситуация. Есть некая прога, работающая с данными в реальном времени. Прога большая, объектов разных классов много, много чего защищено локами, потоков тоже достаточно. Периодически возникает ситуация, когда что-то такое происходит и непрерывный процесс обработки данных подклинивает на время (секунда-две-три, но не виснет а дальше все продолжается. Хорошая аналогия ситуации - зарисовка из фильма Modern Times, где Чаплин стоял и бил каким-то долотом по деталям на конвеере, и когда ему хотелось почесать подмышку, то все остальные рабочие были вынуждены его ждать.
Нужна толковая утилита, которая позволяла бы выловить "козлящий" кусок кода. Думается, что лучшим решением в данном случае была бы прога, которая в состоянии отследить, как меняется состояние разных локов в течение времени и кто сколько какой лок пытается заполучить. Обвешивать свою прогу массой таймеров - дело дурное, тк прога реально большая.
Собственно, подскажите такую утилиту.
все это дело работает на .net-е. Козлит не garbage collector

Maurog

Собственно, подскажите такую утилиту.
все это дело работает на .net-е. Козлит не garbage collector
Описание продукта
Программное обеспечение Intel VTune Amplifier XE for Windows OS представляет собой инструмент для поиска «узких мест» в 32- и 64-битных приложениях Windows, а также в Java-приложениях для систем с архитектурой IA-32. Решение обеспечивает сбор и анализ данных об интегральной производительности процессов и приложений, а также их отдельных составляющих: функций, модулей и инструкций. Intel VTune Amplifier XE for Windows OS базируется на известной технологии Performance Analyzer и включает возможности Intel Parallel Amplifier, включая усовершенствованные опции для разработчиков. С помощью командной строки можно настраивать права и проводить сбор данных. Intel VTune Amplifier XE for Windows OS содержит дополнительный модуль для визуального представления иерархии модулей и функций приложения, а также поддерживает сценарные языки управления. Программа поддерживает новые процессоры Intel, целый ряд современных 32- и 64-разрядных дистрибутивов Linux, а также виртуальные Java-машины BEA, IBM и Sun. Intel VTune Amplifier XE for Windows OS входит в новую линейку продуктов Intel – Parallel Studio XE 2011.
Подробная информация
Благодаря Intel VTune Amplifier XE for Windows OS можно с минимальными усилиями находить и устранять «узкие места» в приложениях, используя наглядный графический интерфейс для платформ Windows, тесно интегрированный со средой разработки Visual Studio .NET. Средства быстрой детализации помогают моментально перейти к проблемным строкам исходного кода. Пользователь может проанализировать унаследованный код и сравнить показатели производительности до и после внесения изменений. Фиксация состояния процессора помогает определить проблемы, такие как потеря информации из кэша.
Функция анализа ключевых точек Hotspot Analysis позволяет просматривать результаты сбора информации по времени и по событиям с несколькими уровнями отображения, выводить подробные сведения об отдельных процессах операционной системы, о потоке, об исполняемом модуле, функции/методе, конкретной строке исходного кода или об отдельной инструкции на машинном языке или на ассемблере, что помогает четко идентифицировать проблемы в работе программы. Модуль графического профилирования вызовов Call Graph Profiling выводит данные о потоках исполнения программы, определяя важнейшие функции и последовательности вызовов.
Сбор сведений по всей системе с помощью Intel VTune Amplifier XE for Windows OS по времени и по событиям на основе установленных прерываний выдает максимально достоверные сведения о работе приложения с минимальными искажениями при замерах. Собранная детальная информация включает данные об отдельных процессах операционной системы, потоке, исполняемом модуле, функции/методе, конкретной строке исходного кода или об отдельной инструкции на машинном языке или на ассемблере, что помогает четко идентифицировать проблемы, обнаруженные в ходе исполнения программы. Реализованное в решении Intel VTune Amplifier XE for Windows OS по графическое представление потоков исполнения приложения помогает быстро найти критические функции и последовательности вызовов. Пользователь может увидеть, как функции отнимают больше всего времени или блокируются дольше всех.
Определить проблемы с производительностью на системном уровне помогает модуль Counter Monitor, который отслеживает работу системы и потребление ресурсов во время исполнения. Встроенное в Intel VTune Amplifier XE for Windows OS средство настройки Intel Tuning Assistant помогает повысить продуктивность работы благодаря автоматической подборки вариантов улучшения кода на основании прилагаемой обширной базы знаний.
В пакете реализована поддержка современных процессоров компании Intel:
Intel Pentium M.
Система на базе процессора Intel Xeon с поддержкой технологии Intel EM64T (Intel Extended Memory 64 Technology).
Процессоры на базе технологии Intel XScale, включая модели Intel PXA25x, PXA26x и PXA27x, поддержка которых реализована через библиотеку Remote Data Collection.
Решение Intel VTune Amplifier XE Intel VTune Amplifier XE for Windows OS поддерживает языки программирования, включая Microsoft C#, Microsoft .NET, Compaq Visual Fortran и Java.
не?

elenangel

не знаю как в винде, в линухе при дедлоке мы слали проге kill -SIGSEGV, она падала в коредамп и было прекрасно видно в каком месте она застряла. думаю при подвисании, а не полном дедлоке тоже можно так, главное успеть. надеюсь, идея понятна, можно ли это в винде реализовать - хз, наверно можно аналогичный способ найти. ну и конечно если бы не .net, а c++ я бы советовал gprof.

vall

shotgun profiling :2ar15: :lol:

Maurog

Периодически возникает ситуация, когда что-то такое происходит и непрерывный процесс обработки данных подклинивает на время (секунда-две-три, но не виснет а дальше все продолжается.
вы не пробовали банально профайлер натравить? почитать его статистику, может, увидели бы подвисания

Maurog

все это дело работает на .net-е. Козлит не garbage collector
доказательства есть?

Dasar

доказательства есть?
это же легко проверить. если хотя бы один поток продолжает работать (и там есть выделение памяти то проблема не в gc

Maurog

это же легко проверить. если хотя бы
тут несостыковочка :grin:
короче, рекомендую внимательнее проверить, даже если кому-то легко

NataNata

кстати, и в ms vs 2010 ultimate есть приличная отслеживалка

state7401281

Нужна толковая утилита, которая позволяла бы выловить "козлящий" кусок кода. Думается, что лучшим решением в данном случае была бы прога, которая в состоянии отследить, как меняется состояние разных локов в течение времени и кто сколько какой лок пытается заполучить. Обвешивать свою прогу массой таймеров - дело дурное, тк прога реально большая.
весь тред не читал, но если есть исходники - то почему бы просто не сделать "обёртку" к RWLockSlim'у (или тому чем вы пользуетесь которая логирует информацию что и когда берёт лок и (!) когда его отпускает.
Оставить комментарий
Имя или ник:
Комментарий: