Дмитрий Андреев
Анализ производительности Нагрузочное тестирование Конкурентный анализ
3
Возможно, мое приложение использует слишком много ресурсов процессора? Возможно приложение потребляет много памяти? Возможно в приложении есть много лишних I/O операций? Возможно осуществляются ненужные обращения к базе данных?
5 Sample Profiling Instrumentation Profiling.NET Memory Profiling Reports and Analysis VS 2005 VS 2008 VS Enhanced Analysis Capabilities Report Comparisons 64-Bit Support Developer Productivity Platform and Technology
Новые суммарные и функциональные отчеты Интеграция с редактором кода «Только мой код» Правила и рекомендации Профайлинг в прогрессе
Поддержка виртуализации Профайлинг слоев приложений Профайлинг JavaScript Профайлинг конкурентных систем Профайлинг HPC приложений
Отчеты как руководство к действию Графики производительности для выявления «бутылочных горлышек» приложения Поддержка Zoom для выявления деталей Визуализация стеков вызовов
Опциональная возможность для снижения «шумов» при анализе производительности Исключает точки анализа.NET Framrwork для фокусирования только на коде приложения Разработчик может включить некоторые уровни.NET Framework для более гибкого анализа Вызовы на уровень вниз (из приложения в Framework) Вызовы в верх (из Framework в приложение)
Набор рекомендации по: поддержке оптимальной производительности Анализу (количество тестов) Возможность расширений
Summary Call Tree Modules Caller/Callee Functions Lines Marks Processes Function Details IPs
13
Подготовка однопользовательского сценария Создание и запуск тестов оценки производительности Создание и отладка нагрузочных Web тестов Отчетность Фиксация проблем с использованием профайлера
Целевые тесты (Goal Based) Различные комбинации подтестов (Test Mix) Анализ всего спектра индикаторов производительности ОС Построение графиков для последующего анализа Подключение данных для контекстного взаимодействия тестов Сохранение результатов тестов Возможности расширения с помощью аддонов Подробности extend-visual-studio-2010-web-and-load-testing-with- transactional-tracing/ extend-visual-studio-2010-web-and-load-testing-with- transactional-tracing/
Load Agent VSTS Test Controller Target Server Collector Agent ASP.NET Profiler Load Agent
Новый сетевой драйвер Ограничения пропускной способности Введение ошибок и задержек Сценарии Однопользовательские тесты Автоматическое тестирование
Возможность подключать имитационный сетевой стек прямо в приложение Простые шаги Reference: %Program Files%\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\DataCollectors\x86\userapi.dll Конфигурация из Application.Config Инициализировать «подмену» стека в Initialize Детали stand-alone-network-emulator-using-vs2010-beta-1-release.aspxhttp://blogs.msdn.com/lkruger/archive/2009/06/24/creating-a- stand-alone-network-emulator-using-vs2010-beta-1-release.aspx
Visual Studio Recorder Listener Internet Explorer Browser Control Wininet Shim Wininet Browser RecorderWininet Recorder Browser events Intercepts wininet calls Merging Recorder Record events Recorder BHO Visual Studio Launches Internet Explorer
Visual Studio Recorder Listener Record events Internet Explorer Browser Control Wininet Shim Wininet Browser Recorder Wininet Recorder Browser events Intercept s wininet calls Merging Recorder Record events Recorder BHO Visual Studio Launches Internet Explorer WebTest RecorderPlugins Recorder Result Recorded Web Test
24
Многоядерные системы доминируют на рынке Разработчикам необходимо разрабатывать эффективные приложения под такие системы Проблемы Параллельное программирование сложно Множество путей решения, нет устоявшихся практик Visual Studio включает несколько средств PPL/ConcRT, TPL, PLINQ, средства отладки и оценки производительности
Тюнинг производительности параллельных систем Новые «проблемные области» и нюансы Это не новая проблема. Но она усложнена параллельностью
Традиционные средства требуют улучшений и новых подходов Временные отношения Взаимодействия с ОС, библиотеками, I/O Визуализация очень важна Фокус на параллельном исполнении Основные цели Улучшение продуктивности при параллельной разработке Поддержка native и managed кода 32/64 Vista/Windows7/Server 2008
Новое средство в IDE (Premium & Ultimate) Не требует инструментальной предварительной обработки исполняемых файлов Низкий порог нагрузки (меньше интерференции) Другие средства VS2010 Concurrency Resource Contention Tool (поддержка Windows XP) Windows Performance Toolkit Xperf, GPUView
Анализ конкурентных состояний Анализ блокировок тредов Анализ миграций тредов и нагрузки на ядра процессора Анализ зависимостей между тредами Анализ производительности по образцу (sample based)
Изучение или подтверждение сценария конкуренции Тюнинг или поиск возможностей для параллельного выполнения Понимание ситуации совместной работы с соседними процессами Входная точка для более детального анализа
31
Какой тред выполняет операции и почему Запущен: профайлинг Заблокирован: почему Предоставление данных для действий Позволяет пользователю зафиксировать проблемы Агрегация стоимостей блогирующих стеков вызовов Много возможностей для упрощения работы Фильтрация по тредам, времени, типу блокирования
33
Назначение: Информировать о том как треды физически исполняются на конкретных ядрах процессора Выделить ситуации массированной миграции тредов Проверка влияния параметров thread affinity Определение регионов «интересов» Там где треды демонстрируют «плохое поведение» Временные регионы Представления блокирования для последуюшего анализа
35
Назначение Позволяет разработчикам понять ситуации блокирования и зависимостей между тредами, вводя понятия «блокировщика» и «блокируемого» Предоставление возможностей для разрешения конфликтов Анализ зависимостей длинных цепей
Назначение: Предоставление возможностей по анализу кода нагружающего процессор Понимание того, в каком порядке выполняется целевая работа (при сложных параллельных сценариях)
Назначение: Механизм корреляции визуализации с фазами приложения Точный тайминг Достигается простым вызовом методов специального API Подробности
Возможности Visual Studio Team System 2010 позволяют уделять пристальное внимание вопросам производительности «из коробки». Единые интегрированные средства профайлинга, взаимодействия слоев приложения, нагрузочного тестирования и конкурентного анализа. Быстрые результаты повышающие качество разрабатываемых систем.
Windows Performance Analysis Center Visual Studio Profiler Team Blog Maxim Goldins Blog: Parallel Computing VS Concurrency Visualizer in VS Scenario Markers: erringTitle=Home