Приложение Winform профилирует загрузку процессора / пики. - PullRequest
1 голос
/ 19 сентября 2008

У меня есть приложение winforms, которое обычно на 2-4% CPU. Мы наблюдаем некоторые всплески до 27% процессорного времени в течение ограниченного числа раз. Что является лучшим инструментом профилирования, чтобы определить, что на самом деле вызывает этот всплеск. Мы используем dottrace, но я не вижу, как отобразить это точно на пики процессора?

Ценю помощь

Ответы [ 6 ]

2 голосов
/ 19 сентября 2008

Ранее я использовал 2 инструмента профилирования - профилировщик ANTS от RedGate и встроенный профилировщик в Visual Studio Team System.

Прошло некоторое время с тех пор, как я использовал профилировщик RedGate (http://www.red -gate.com / products / ants_profiler / index.htm ), хотя я использовал встроенный в Visual Studio 2008 довольно недавно.

При этом я почувствовал, что продукт RedGate стал более интуитивно понятным в использовании. Когда я использовал продукт RedGate, меня разочаровало то, что я не мог поручить профилировщику только профилировать мой код, начиная с определенной точки - у меня был скачок в производительности, которого нельзя было достичь, пока не было достаточного количества кода. уже выполнил и потому испортил мои результаты. Возможно, они добавили эту функцию с тех пор.

Встроенная версия для Visual Studio доступна только в версиях продукта самого высокого уровня. Кто-то исправит меня, если я ошибаюсь, но я не думаю, что даже в «Профессиональной» версии есть профилировщик. В настоящее время я использую Team System Developer Edition, в которой есть инструменты анализа кода.

Одна из версий VS делает то, что вы можете приостановить профилирование и даже запустить приложение с паузой профилирования, чтобы вы могли действительно сосредоточиться на производительности чего-то очень специфического. Это может быть чрезвычайно полезно, когда вы пытаетесь понять результаты анализа.

РЕДАКТИРОВАТЬ: Оба инструмента покажут вам использование памяти, а также количество вызовов определенного метода и сколько времени было потрачено на каждый метод. Насколько я знаю, они не показывают вам использование процессора в любой момент времени. Однако, вероятно, существует сильная корреляция между использованием процессора и количеством времени, затрачиваемым в данном блоке кода.

Если вы можете последовательно дублировать пики ЦП, вызывая определенные действия в APP, то я бы попробовал и взял в свои руки профилировщик VS, запустил приложение с паузой профилирования, включил профилирование прямо перед тем, как обычно результаты в пике, и изучите эти результаты.

Это предполагает, конечно, что у вас есть какое-то детерминированное поведение для воссоздания пиков. Если нет ... вы могли бы рассмотреть резьбовые процессы или сборку мусора кандидатом на снижение производительности.

0 голосов
/ 05 июня 2009

Лучший из них, который покажет вам шипы и позволит вам детализировать, чтобы увидеть, что является причиной, это инструменты Xperf / Xperfview.

Выезд http://msdn.microsoft.com/en-us/performance/cc825801.aspx

и http://msdn.microsoft.com/en-us/library/cc305221.aspx

Эти инструменты основаны на технологии ETW (Event Tracing For Windows), которая дает вам супер точное представление о том, что происходит для вашего процесса и для всей системы.

Эти инструменты также позволяют захватывать следы для последующего анализа, а также функцию прикрепления / отсоединения. Надеюсь, это поможет.

0 голосов
/ 05 ноября 2008

Если ваше приложение однопоточное, лучший инструмент для профилирования - ваша IDE.

Добавлено: Может быть, это очевидно, но процент использования ЦП не очень понятная концепция. Когда ваша программа вообще работает, она на 100%. Когда это не так, это на 0%. Таким образом, частичные проценты должны основываться на каком-то сглаживающем интеграле во времени. Однако, что бы это ни было, вы видите всплеск. Некоторые профилировщики позволяют выявить такой скачок и проанализировать только этот интервал.

0 голосов
/ 10 октября 2008

Вы также можете многое узнать о своем приложении с помощью Sysinternal Process Explorer и Perfmon (как это происходит в GC).

0 голосов
/ 01 октября 2008

Кроме того, этот всплеск действительно вызывает беспокойство? И на каком оборудовании вы это видите? Резкий скачок до 27% на четырехъядерном процессоре может вызывать беспокойство, но не на 800 МГц P3.

Как долго это остается шипами? @ Matt замечательно, что сборщик мусора может быть виноват. Или, возможно, обмен на диск.

Влияет ли это на общую производительность системы в течение длительного времени или на пару секунд?

Не то, чтобы поиск решения этой проблемы не должен вызывать беспокойство, но насколько это важно?

0 голосов
/ 26 сентября 2008

Я нашел DevPartner от Compuware http://www.compuware.com/ как отличный инструмент для профилирования. К сожалению, похоже, что в настоящее время они не поддерживают VS 2008.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...