Производительность информационной системы - одно из важных свойств которое должно учитываться, а затем постоянно контролироваться на всех этапах создания программного обеспечения. Но эта задача при неверном подходе в решении рискует превратиться в кропотливую и очень трудоемкую работу, которая может значительно снизить общую эффективность разрабатываемой системы. Баланс между усилиями по оптимизации и результатами достигается с помощью инструментальных средств. Одним из таких средств являются функциональные возможности Visual Studio 2010 по профилированию, нагрузочному тестированию и автоматизации тестирования. В докладе будет проведен краткий обзор этих возможностей и основные сценарии применения для построения комплексной системы нагрузочного тестирования и имитационного мониторинга производительности.
Автоматизация процессов разработки. Нужно ли это, почему и какими средствами?
Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010
1. Оптимизация производительности и нагрузочное тестирование в среде VisualStudio Team System 2010 Дмитрий Андреев dmitryan@microsoft.com witter:@dmandreev
4. Сложные вопросы Возможно, мое приложение использует слишком много ресурсов процессора? Возможно приложение потребляет много памяти? Возможно в приложении есть много лишних I/O операций? Возможно осуществляются ненужные обращения к базе данных?
14. Продуктивность Новые суммарные и функциональные отчеты Интеграция с редактором кода «Только мой код» Правила и рекомендации Профайлинг в прогрессе
15. Платформа и технологии Поддержка виртуализации Профайлинг слоев приложений ПрофайлингJavaScript Профайлинг конкурентных систем ПрофайлингHPC приложений
16. Новые суммарные и детальные отчеты Отчеты как руководство к действию Графики производительности для выявления «бутылочных горлышек» приложения Поддержка Zoom для выявления деталей Визуализация стеков вызовов
17. «Только мой код» Опциональная возможность для снижения «шумов» при анализе производительности Исключает точки анализа .NET Framrworkдля фокусирования только на коде приложения Разработчик может включить некоторые уровни .NET Framework для более гибкого анализа Вызовы на уровень вниз (из приложения в Framework) Вызовы в верх (из Framework в приложение)
18. Правила и рекомендации Набор рекомендации по: поддержке оптимальной производительности Анализу (количество тестов) Возможность расширений
19. 10 представлений профайлера Summary Call Tree Modules Caller/Callee Functions Lines Marks Processes Function Details IPs
22. Основные сценарии Подготовка однопользовательского сценария Создание и запуск тестов оценки производительности Создание и отладка нагрузочных Web тестов Отчетность Фиксация проблем с использованием профайлера
23. Возможности нагрузочных тестов Целевые тесты (Goal Based) Различные комбинации подтестов (Test Mix) Анализ всего спектра индикаторов производительности ОС Построение графиков для последующего анализа Подключение данных для контекстного взаимодействия тестов Сохранение результатов тестов Возможности расширения с помощью аддонов Подробности http://blog.dynatrace.com/2009/05/20/how-to-extend-visual-studio-2010-web-and-load-testing-with-transactional-tracing/
24. Архитектура нагрузочного тестирования VSTS Test Controller Load Agent Load Agent Load Agent Load Agent Target Server Collector Agent ASP.NET Profiler
25.
26. Сетевая эмуляция Новый сетевой драйвер Ограничения пропускной способности Введение ошибок и задержек Сценарии Однопользовательские тесты Автоматическое тестирование
27.
28. Сетевая эмуляция вне среды Возможность подключать имитационный сетевой стек прямо в приложение Простые шаги Reference: %Program Files%icrosoft Visual Studio 10.0ommon7DErivateAssembliesataCollectors86serapi.dll Конфигурация из Application.Config <NetworkEmulationProfile name="3G" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> </NetworkEmulationProfile> Инициализировать «подмену» стека в Initialize Детали http://blogs.msdn.com/lkruger/archive/2009/06/24/creating-a-stand-alone-network-emulator-using-vs2010-beta-1-release.aspx
29. Запись нагрузочных Web тестов Visual Studio Launches Internet Explorer RecorderListener Browser Recorder Wininet Recorder Merging Recorder Internet Explorer Visual Studio Recorder BHO Browser events Record events Browser Control Wininet Shim Record events Wininet Record events Intercepts wininet calls
30. АддонIE для записи тестов WebTestRecorderPlugins Visual Studio Launches Internet Explorer RecorderListener Browser Recorder Wininet Recorder Merging Recorder Internet Explorer Visual Studio Recorder BHO Browser events Recorded Web Test Record events Browser Control Wininet Shim Recorder Result Wininet Record events Intercept s wininet calls Record events
33. Анализ производительности параллельных систем Многоядерные системы доминируют на рынке Разработчикам необходимо разрабатывать эффективные приложения под такие системы Проблемы Параллельное программирование сложно Множество путей решения, нет устоявшихся практик Visual Studio включает несколько средств PPL/ConcRT, TPL, PLINQ, средства отладки и оценки производительности
34. Далее о проблемах Тюнинг производительности параллельных систем Новые «проблемные области» и нюансы Это не новая проблема. Но она усложнена параллельностью
35. Новые средства Традиционные средства требуют улучшений и новых подходов Временные отношения Взаимодействия с ОС, библиотеками, I/O Визуализация очень важна Фокус на параллельном исполнении Основные цели Улучшение продуктивности при параллельной разработке Поддержка native и managed кода 32/64 Vista/Windows7/Server 2008
36. Визуализатор конкуренций Новое средство в IDE (Premium & Ultimate) Не требует инструментальной предварительной обработки исполняемых файлов Низкий порог нагрузки (меньше интерференции) Другие средства VS2010 Concurrency Resource Contention Tool (поддержка Windows XP) Windows Performance Toolkit Xperf, GPUView
37. Основные возможности Анализ конкурентных состояний Анализ блокировок тредов Анализ миграций тредов и нагрузки на ядра процессора Анализ зависимостей между тредами Анализ производительности по образцу (sample based)
38. Представление процессорной нагрузки (CPU Utilization) Изучение или подтверждение сценария конкуренции Тюнинг или поиск возможностей для параллельного выполнения Понимание ситуации совместной работы с соседними процессами Входная точка для более детального анализа
39.
40. Анализ блокирования тредов Какой тред выполняет операции и почему Запущен: профайлинг Заблокирован:почему Предоставление данных для действий Позволяет пользователю зафиксировать проблемы Агрегация стоимостей блогирующих стеков вызовов Много возможностей для упрощения работы Фильтрация по тредам, времени, типу блокирования
41.
42. Миграция тредов Назначение: Информировать о том как треды физически исполняются на конкретных ядрах процессора Выделить ситуации массированной миграции тредов Проверка влияния параметров thread affinity Определение регионов «интересов» Там где треды демонстрируют «плохое поведение» Временные регионы Представления блокирования для последуюшего анализа
43.
44.
45. Зависимости между тредами Назначение Позволяет разработчикам понять ситуации блокирования и зависимостей между тредами, вводя понятия «блокировщика» и «блокируемого» Предоставление возможностей для разрешения конфликтов Анализ зависимостей длинных цепей
46. Профайлинг по образцу Назначение: Предоставление возможностей по анализу кода нагружающего процессор Понимание того, в каком порядке выполняется целевая работа (при сложных параллельных сценариях)
47. Поддержка визуальных маркеров фаз Назначение: Механизм корреляции визуализации с фазами приложения Точный тайминг Достигается простым вызовом методов специального API Подробности http://code.msdn.microsoft.com/Scenario
48.
49. Заключение Возможности Visual Studio Team System 2010 позволяют уделять пристальное внимание вопросам производительности «из коробки». Единые интегрированные средства профайлинга, взаимодействия слоев приложения, нагрузочного тестирования и конкурентного анализа. Быстрые результаты повышающие качество разрабатываемых систем.
50. Ссылки Windows Performance Analysis Center http://msdn.microsoft.com/en-us/performance/default.aspx Visual Studio Profiler Team Blog http://blogs.msdn.com/profiler/ Maxim Goldin’s Blog: http://blogs.msdn.com/mgoldin/ Parallel Computing VS2010 http://msdn.microsoft.com/concurrency Concurrency Visualizer in VS2010 http://msdn.microsoft.com/hshafi http://msdn.microsoft.com/visualizeparallel Scenario Markers: http://code.msdn.microsoft.com/Scenario/Wiki/View.aspx?title=API&referringTitle=Home
Hinweis der Redaktion
The Instruction Pointers view enables you to see specific instructions that are executed during sampling profiling.