Upload
dmitry-andreev
View
2.107
Download
0
Embed Size (px)
DESCRIPTION
Производительность информационной системы - одно из важных свойств которое должно учитываться, а затем постоянно контролироваться на всех этапах создания программного обеспечения. Но эта задача при неверном подходе в решении рискует превратиться в кропотливую и очень трудоемкую работу, которая может значительно снизить общую эффективность разрабатываемой системы. Баланс между усилиями по оптимизации и результатами достигается с помощью инструментальных средств. Одним из таких средств являются функциональные возможности Visual Studio 2010 по профилированию, нагрузочному тестированию и автоматизации тестирования. В докладе будет проведен краткий обзор этих возможностей и основные сценарии применения для построения комплексной системы нагрузочного тестирования и имитационного мониторинга производительности.
Citation preview
Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010 Дмитрий Андреев
[email protected] witter:@dmandreev
Содержание
Анализ производительностиНагрузочное тестированиеКонкурентный анализ
3
Анализпроизводительности
Сложные вопросы
Возможно, мое приложение использует слишком много ресурсов процессора?Возможно приложение потребляет много памяти?Возможно в приложении есть много лишних I/O операций?Возможно осуществляются ненужные обращения к базе данных?
5
Эволюция средств профайлинга
• Sample Profiling
• Instrumentation Profiling
• .NET Memory Profiling
• Reports and Analysis
VS 2005 VS 2008 VS 2010
5
• Enhanced Analysis Capabilities
• Report Comparisons
• 64-Bit Support
• Developer Productivity
• Platform and Technology
Продуктивность
Новые суммарные и функциональные отчетыИнтеграция с редактором кода«Только мой код»Правила и рекомендацииПрофайлинг в прогрессе
Платформа и технологии
Поддержка виртуализацииПрофайлинг слоев приложенийПрофайлинг JavaScriptПрофайлинг конкурентных системПрофайлинг HPC приложений
Новые суммарные и детальные отчеты
Отчеты как руководство к действиюГрафики производительности для выявления «бутылочных горлышек» приложенияПоддержка Zoom для выявления деталейВизуализация стеков вызовов
«Только мой код»
Опциональная возможность для снижения «шумов» при анализе производительности
Исключает точки анализа .NET Framrwork для фокусирования только на коде приложенияРазработчик может включить некоторые уровни .NET Framework для более гибкого анализа
Вызовы на уровень вниз (из приложения в Framework)Вызовы в верх (из Framework в приложение)
Правила и рекомендации
Набор рекомендации по:поддержке оптимальной производительностиАнализу (количество тестов)
Возможность расширений
10 представлений профайлера
SummaryCall TreeModulesCaller/CalleeFunctionsLinesMarksProcessesFunction DetailsIPs
Демонстрация
13
Нагрузочноетестирование
Основные сценарии
Подготовка однопользовательского сценарияСоздание и запуск тестов оценки производительностиСоздание и отладка нагрузочных Web тестовОтчетностьФиксация проблем с использованием профайлера
Возможности нагрузочных тестов
Целевые тесты (Goal Based)Различные комбинации подтестов (Test Mix)Анализ всего спектра индикаторов производительности ОСПостроение графиков для последующего анализаПодключение данных для контекстного взаимодействия тестовСохранение результатов тестовВозможности расширения с помощью аддонов
Подробности http://blog.dynatrace.com/2009/05/20/how-to-extend-visual-studio-2010-web-and-load-testing-with-transactional-tracing/
Архитектура нагрузочного тестирования
Load Agent Load Agent Load Agent
VSTS
Test Controller
Target ServerCollector
AgentASP.NET Profiler
Load Agent
Демонстрация
Сетевая эмуляция
Новый сетевой драйверОграничения пропускной способностиВведение ошибок и задержекСценарии
Однопользовательские тестыАвтоматическое тестирование
Демонстрация
Сетевая эмуляция вне среды
Возможность подключать имитационный сетевой стек прямо в приложениеПростые шаги
Reference: %Program Files%\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\DataCollectors\x86\userapi.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
Запись нагрузочных Web тестов
Visual Studio
Recorder Listener
Internet Explorer
Browser Control
Wininet Shim
Wininet
Browser Recorder
Wininet Recorder
Browser events
Intercepts wininet calls
Merging Recorder
Record events
Record eventsRecord events
Recorder BHO
Visual Studio Launches Internet Explorer
Аддон IE для записи тестов
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
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 ToolkitXperf, GPUView
Основные возможности
Анализ конкурентных состоянийАнализ блокировок тредовАнализ миграций тредов и нагрузки на ядра процессораАнализ зависимостей между тредамиАнализ производительности по образцу (sample based)
Представление процессорной нагрузки (CPU Utilization)
Изучение или подтверждение сценария конкуренцииТюнинг или поиск возможностей для параллельного выполненияПонимание ситуации совместной работы с соседними процессамиВходная точка для более детального анализа
31
Анализ блокирования тредов
Какой тред выполняет операции и почемуЗапущен: профайлингЗаблокирован: почему
Предоставление данных для действийПозволяет пользователю зафиксировать проблемы
Агрегация стоимостей блогирующих стеков вызововМного возможностей для упрощения работы
Фильтрация по тредам, времени, типу блокирования
33
Миграция тредов
Назначение:Информировать о том как треды физически исполняются на конкретных ядрах процессораВыделить ситуации массированной миграции тредовПроверка влияния параметров thread affinityОпределение регионов «интересов»
Там где треды демонстрируют «плохое поведение»Временные регионыПредставления блокирования для последуюшего анализа
35
Демонстрация
Зависимости между тредами
НазначениеПозволяет разработчикам понять ситуации блокирования и зависимостей между тредами, вводя понятия «блокировщика» и «блокируемого»Предоставление возможностей для разрешения конфликтов
Анализ зависимостей длинных цепей
Профайлинг по образцу
Назначение:Предоставление возможностей по анализу кода нагружающего процессорПонимание того, в каком порядке выполняется целевая работа (при сложных параллельных сценариях)
Поддержка визуальных маркеров фаз
Назначение:Механизм корреляции визуализации с фазами приложенияТочный тайминг
Достигается простым вызовом методов специального API Подробности http://code.msdn.microsoft.com/Scenario
Демонстрация
Заключение
Возможности Visual Studio Team System 2010 позволяют уделять пристальное внимание вопросам производительности «из коробки».Единые интегрированные средства профайлинга, взаимодействия слоев приложения, нагрузочного тестирования и конкурентного анализа.Быстрые результаты повышающие качество разрабатываемых систем.
Ссылки
Windows Performance Analysis Center http://msdn.microsoft.com/en-us/performance/default.aspxVisual 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 VS2010http://msdn.microsoft.com/hshafihttp://msdn.microsoft.com/visualizeparallel
Scenario Markers:http://code.msdn.microsoft.com/Scenario/Wiki/View.aspx?title=API&referringTitle=Home
Вопросы?