Оптимизация производительности и нагрузочное...

43
Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010 Дмитрий Андреев [email protected] witter :@ dmandreev

description

Производительность информационной системы - одно из важных свойств которое должно учитываться, а затем постоянно контролироваться на всех этапах создания программного обеспечения. Но эта задача при неверном подходе в решении рискует превратиться в кропотливую и очень трудоемкую работу, которая может значительно снизить общую эффективность разрабатываемой системы. Баланс между усилиями по оптимизации и результатами достигается с помощью инструментальных средств. Одним из таких средств являются функциональные возможности Visual Studio 2010 по профилированию, нагрузочному тестированию и автоматизации тестирования. В докладе будет проведен краткий обзор этих возможностей и основные сценарии применения для построения комплексной системы нагрузочного тестирования и имитационного мониторинга производительности.

Transcript of Оптимизация производительности и нагрузочное...

Page 1: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010 Дмитрий Андреев

[email protected] witter:@dmandreev

Page 2: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Содержание

Анализ производительностиНагрузочное тестированиеКонкурентный анализ

Page 3: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

3

Анализпроизводительности

Page 4: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Сложные вопросы

Возможно, мое приложение использует слишком много ресурсов процессора?Возможно приложение потребляет много памяти?Возможно в приложении есть много лишних I/O операций?Возможно осуществляются ненужные обращения к базе данных?

Page 5: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

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

Page 6: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Продуктивность

Новые суммарные и функциональные отчетыИнтеграция с редактором кода«Только мой код»Правила и рекомендацииПрофайлинг в прогрессе

Page 7: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Платформа и технологии

Поддержка виртуализацииПрофайлинг слоев приложенийПрофайлинг JavaScriptПрофайлинг конкурентных системПрофайлинг HPC приложений

Page 8: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Новые суммарные и детальные отчеты

Отчеты как руководство к действиюГрафики производительности для выявления «бутылочных горлышек» приложенияПоддержка Zoom для выявления деталейВизуализация стеков вызовов

Page 9: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

«Только мой код»

Опциональная возможность для снижения «шумов» при анализе производительности

Исключает точки анализа .NET Framrwork для фокусирования только на коде приложенияРазработчик может включить некоторые уровни .NET Framework для более гибкого анализа

Вызовы на уровень вниз (из приложения в Framework)Вызовы в верх (из Framework в приложение)

Page 10: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Правила и рекомендации

Набор рекомендации по:поддержке оптимальной производительностиАнализу (количество тестов)

Возможность расширений

Page 11: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

10 представлений профайлера

SummaryCall TreeModulesCaller/CalleeFunctionsLinesMarksProcessesFunction DetailsIPs

Page 12: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Демонстрация

Page 13: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

13

Нагрузочноетестирование

Page 14: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Основные сценарии

Подготовка однопользовательского сценарияСоздание и запуск тестов оценки производительностиСоздание и отладка нагрузочных Web тестовОтчетностьФиксация проблем с использованием профайлера

Page 15: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Возможности нагрузочных тестов

Целевые тесты (Goal Based)Различные комбинации подтестов (Test Mix)Анализ всего спектра индикаторов производительности ОСПостроение графиков для последующего анализаПодключение данных для контекстного взаимодействия тестовСохранение результатов тестовВозможности расширения с помощью аддонов

Подробности http://blog.dynatrace.com/2009/05/20/how-to-extend-visual-studio-2010-web-and-load-testing-with-transactional-tracing/

Page 16: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Архитектура нагрузочного тестирования

Load Agent Load Agent Load Agent

VSTS

Test Controller

Target ServerCollector

AgentASP.NET Profiler

Load Agent

Page 17: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Демонстрация

Page 18: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Сетевая эмуляция

Новый сетевой драйверОграничения пропускной способностиВведение ошибок и задержекСценарии

Однопользовательские тестыАвтоматическое тестирование

Page 19: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Демонстрация

Page 20: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Сетевая эмуляция вне среды

Возможность подключать имитационный сетевой стек прямо в приложениеПростые шаги

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

Page 21: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Запись нагрузочных 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

Page 22: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Аддон 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

Page 23: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Демонстрация

Page 24: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

24

Конкурентныйанализ

Page 25: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Анализ производительности параллельных систем

Многоядерные системы доминируют на рынкеРазработчикам необходимо разрабатывать эффективные приложения под такие системыПроблемы

Параллельное программирование сложноМножество путей решения, нет устоявшихся практик

Visual Studio включает несколько средствPPL/ConcRT, TPL, PLINQ, средства отладки и оценки производительности

Page 26: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Далее о проблемах

Тюнинг производительности параллельных систем

Новые «проблемные области» и нюансы

Это не новая проблема. Но она усложнена параллельностью

Page 27: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Новые средства

Традиционные средства требуют улучшений и новых подходов

Временные отношенияВзаимодействия с ОС, библиотеками, I/OВизуализация очень важнаФокус на параллельном исполнении

Основные целиУлучшение продуктивности при параллельной разработкеПоддержка native и managed кода32/64 Vista/Windows7/Server 2008

Page 28: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Визуализатор конкуренций

Новое средство в IDE (Premium & Ultimate)Не требует инструментальной предварительной обработки исполняемых файловНизкий порог нагрузки (меньше интерференции)

Другие средстваVS2010 Concurrency Resource Contention Tool (поддержка Windows XP)Windows Performance ToolkitXperf, GPUView

Page 29: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Основные возможности

Анализ конкурентных состоянийАнализ блокировок тредовАнализ миграций тредов и нагрузки на ядра процессораАнализ зависимостей между тредамиАнализ производительности по образцу (sample based)

Page 30: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Представление процессорной нагрузки (CPU Utilization)

Изучение или подтверждение сценария конкуренцииТюнинг или поиск возможностей для параллельного выполненияПонимание ситуации совместной работы с соседними процессамиВходная точка для более детального анализа

Page 31: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

31

Page 32: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Анализ блокирования тредов

Какой тред выполняет операции и почемуЗапущен: профайлингЗаблокирован: почему

Предоставление данных для действийПозволяет пользователю зафиксировать проблемы

Агрегация стоимостей блогирующих стеков вызововМного возможностей для упрощения работы

Фильтрация по тредам, времени, типу блокирования

Page 33: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

33

Page 34: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Миграция тредов

Назначение:Информировать о том как треды физически исполняются на конкретных ядрах процессораВыделить ситуации массированной миграции тредовПроверка влияния параметров thread affinityОпределение регионов «интересов»

Там где треды демонстрируют «плохое поведение»Временные регионыПредставления блокирования для последуюшего анализа

Page 35: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

35

Page 36: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Демонстрация

Page 37: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Зависимости между тредами

НазначениеПозволяет разработчикам понять ситуации блокирования и зависимостей между тредами, вводя понятия «блокировщика» и «блокируемого»Предоставление возможностей для разрешения конфликтов

Анализ зависимостей длинных цепей

Page 38: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Профайлинг по образцу

Назначение:Предоставление возможностей по анализу кода нагружающего процессорПонимание того, в каком порядке выполняется целевая работа (при сложных параллельных сценариях)

Page 39: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Поддержка визуальных маркеров фаз

Назначение:Механизм корреляции визуализации с фазами приложенияТочный тайминг

Достигается простым вызовом методов специального API Подробности http://code.msdn.microsoft.com/Scenario

Page 40: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Демонстрация

Page 41: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Заключение

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

Page 43: Оптимизация производительности и нагрузочное тестирование в среде Visual Studio Team System 2010

Вопросы?