crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Вопросы профилирования программ, обсуждение профайлеров, их возможностей, плюсов и минусов
Iron Bug
  опции профиля:
сообщение 22.10.2010, 12:22
Сообщение #1


Профессионал
*****

Группа: Модератор
Сообщений: 1599
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Предлагаю обсудить тему профайлеров. Кто чем пользуется, какие есть полезные фичи и т.п.

Вот у меня сейчас есть задача: есть прога (моя), которая активно работает с железом под вендой. И вот при тестировании выясняется, что после 10-20 часов непрерывной работы она иногда начинает жрать до 30-40% процессорного времени (вместо нормального 1%). Случается это редко, сидеть и ждать, когда произойдёт глюк, как-то несподручно, а логически предположить, почему такое происходит, я пока не могу, хотя усиленно думаю и просматриваю код... Есть ли что-то такое под венду, что сможет вести лог использования ресурсов процессом, причём желательно не постоянно, а только когда это использование начинает зашкаливать выше какого-то установленного лимита? Ну и чтобы интервал логирования был хотя бы раз так 10-100 в секунду, а длительность тестирования можно было бы задать несколькими днями.

Сообщение отредактировал Iron Bug - 22.10.2010, 12:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 26.10.2010, 14:48
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1599
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


неужели никто не сталкивался с профилированием?

у меня вот задача: как определить, какой из потоков в многопоточном приложении жрёт проц? (система - венда)
есть прога, в ней 15 потоков. иногда начинает жрать проц. поймать её в момент, когда она его жрёт, я могу. а вот как дальше в дебаге (или ещё где) определить, а какой конкретно процесс занимает весь проц - не могу. из прыжков по дебагу ничего не следует: при этом не видно общую загрузку проца, ибо всё происходит "медленно и печально".
как бы так исхитриться, чтобы понять, в каком потоке возникает проблема?

Сообщение отредактировал Iron Bug - 26.10.2010, 14:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
CodeHunter
  опции профиля:
сообщение 26.10.2010, 15:43
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 26.8.2010
Пользователь №: 1982

Спасибо сказали: 1 раз(а)




Репутация:   0  


Я под Windows юзаю вот это - Intel Paralel Studio
Можно проверить скок и кто использует проц или ядра проца + посмотреть что можно улучшить (в плане параллелизма)

Сообщение отредактировал CodeHunter - 26.10.2010, 15:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 26.10.2010, 17:56
Сообщение #4


Профессионал
*****

Группа: Модератор
Сообщений: 1599
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


а оно загрузку проца отдельными потоками умеет мониторить? у меня проблема в том, что загрузка проца возникает не сразу, а часов так через 8-10 работы программы. причём, гадство, при этом функциональность не меняется: всё работает, только дико жрёт проц почему-то. и по идее мне надо сделать так: запустить прогу надолго, потом вручную проверить, что она начала жрать проц и подключиться с профайлером. ну или можно сразу запускать, но чтобы можно было надолго оставить и потом включить отладку и смотреть - что и где.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 29.10.2010, 21:24
Сообщение #5


Профессионал
*****

Группа: Модератор
Сообщений: 1599
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Попробовала я Intel Parallel Studio. Хорошая штука, мне очень понравилась. Профилирует времена, затраченные на вызовы процедур, ищет узкие места в программе, всякие дедлоки. Много полезного, я ещё всё не пересмотрела там.
Правда, свой баг с пожиранием проца я так и не нашла: с замерами под IPS баг не проявляется, хоть тресни... Видать, чуть-чуть медленнее прога работает и этого достаточно, чтобы он не проявился. Гоняла двое суток подряд - ни единой ошибки и с процом всё нормально... а без слежки IPS он возникает :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.10.2010, 21:28
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2901
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Iron Bug, а ты сделай отладочные штампы времени (тиков) во всех функциях (да да, понимаю, но куда деваться, когда край? :) ) Считай разницу везде, и когда будет невероятно большая разница - выводи имя функции (или некую метку) в лог. Хоть станет ясно, где собака окопалась

Сообщение отредактировал Алексей1153 - 29.10.2010, 21:29
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 29.10.2010, 22:10
Сообщение #7


Профессионал
*****

Группа: Модератор
Сообщений: 1599
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


не, это нереально. программа большая. действительно большая. да и разница мне не поможет: там 16 потоков, которые зависят от данных, приходящих с железа и общаются между собой. причём данные приходят нормальные - это уже проверено. но через 8-10 часов прога начинает жрать проц. но она при этом внутри своей логики не тормозит, ни разу не сбоит, ничего вообще не портится, всё работает правильно. только вместо 1% начинает жрать 50% процессорного времени. в том и прикол, что просто так этот баг не поймаешь...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 29.10.2010, 22:17
Сообщение #8


фрилансер
******

Группа: Участник
Сообщений: 2901
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


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

Сообщение отредактировал Алексей1153 - 29.10.2010, 22:18
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 10.11.2010, 7:57
Сообщение #9


Профессионал
*****

Группа: Модератор
Сообщений: 1599
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


в общем, нашла я багу. дня три искала, тестировала анализировала. при одном из условий нарушалась синхронизация и не сбрасывался флаг и один процесс начинал в цикле выполнять кучу ненужных действий.
нашла с помошью Intel Thread Profiler. он позволяет подсчитывать количество вызовов, время, затраченное на выполнение каждой функции, время ожидания всяческих локов и ещё много чего можно с его помощью делать. очень удобный инструмент оказался и полезный. так бы я и не заподозрила, что именно этот поток гадит. в нём очень хорошо смотреть узкие места в приложении, искать, из-за чего конфликтуют процессы и т.п. можно также собирать статистику по ресурсам системы, да вообще море всяческих полезных функций. в общем, мне очень понравилась софтинка, рекомендую.

Сообщение отредактировал Iron Bug - 10.11.2010, 7:57
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 12.11.2010, 7:26
Сообщение #10


фрилансер
******

Группа: Участник
Сообщений: 2901
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(Iron Bug @ 10.11.2010, 9:57) *
Intel Thread Profiler

не подскажешь, какая версия посвежее и где качнуть ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 3.12.2020, 13:01