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

Post on 30-May-2015

2.108 views 0 download

description

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

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

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

dmitryan@microsoft.com 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 позволяют уделять пристальное внимание вопросам производительности «из коробки».Единые интегрированные средства профайлинга, взаимодействия слоев приложения, нагрузочного тестирования и конкурентного анализа.Быстрые результаты повышающие качество разрабатываемых систем.

Вопросы?