+ All Categories
Home > Documents > Steve Carroll Senior Development Lead Microsoft Corporation Ed Glas Principal Group Manager...

Steve Carroll Senior Development Lead Microsoft Corporation Ed Glas Principal Group Manager...

Date post: 19-Dec-2015
Category:
View: 219 times
Download: 1 times
Share this document with a friend
41
Improving .NET Scalability And Performance With Visual Studio Steve Carroll Senior Development Lead Microsoft Corporation Ed Glas Principal Group Manager Microsoft Corporation TL24
Transcript

Improving .NET Scalability And Performance With Visual Studio Steve Carroll

Senior Development LeadMicrosoft Corporation

Ed GlasPrincipal Group ManagerMicrosoft Corporation

TL24

Performance lifecycle Diagnosing common .NET

performance problems

Outline

One Last Walkthrough

Before Launch

We Got Lucky!

Visual Studio Team System provides performance tools to support you throughout the software lifecycle

Performance Lifecycle

Design

Development

Gathering requirementsMaintenance

Deployment

Testing

Performance Requirements

Gathering requirements

Example Performance Requirement

Scenario Test Environment Requirement Goal

Home page Perf Environment #1 2s 1.5s

Search results page – 10 results Perf Environment #1 3s 4s

Checkout complete Perf Environment #1 5s 4s

E#1 Machine CPU RAM Disk NetworkClient Dell WS 650 1P 2.2 Ghz 1GB 7.5k eSata (100 GB) 600kb

App Server Dell PE 6650 4P 2.2 Ghz 4GB 2x15k RPM SCSI 1GbSQL Server HP DT 9250 8P 2.6 Ghz 16GB

3 x 7.2 K SATA (480 GB) 15 x 7.2 k SATA2 (3 TB) 1Gb

Application Data Size 1,000 restaurants, 50,000 menu items, 1,500 orders

Work load 1,000 virtual usersThroughput 100 home pages/sec

50 searches/sec2 checkouts/sec

Performance Lifecycle

Design

Gathering requirements

Prototype to validate architecture

Design PhaseExploratory performance tests

UI

Action layer

Service API Service API

Web app

Database

Web app

Database

Run tests to isolate your server’s performance

Run tests to isolate performance of your dependencies

Design

Run end-to-end performance tests

Now that we have the requirements,we are ready to implement and test

Case Study:Performance And Stress Testing Team Foundation Server

demo

TFS Perf Trends Report

TFS Perf ReportPri Scenario Goal Actual

Delta Goal

Delta build

Bug

2WebAccess: Run a query for 100 items 3.5 9.00 -157% -111% 518511

2VC: CommandLine - Rollback 1000 edits and folder rename 30 49.61 -65% 9% 416557

2WIT: UI - VS startup with connected Team Explorer (warm) 0.53 0.85 -61% 29% 535042

1Office Integration: Excel - Get 100 work items from picker 1 1.54 -54% -147% 468117

1 WIT: Run a In Group query 0.75 1.06 -41% 31% 468113

1 VC: UI - Open from SCC 120165.9

7 -38% -26% 510958

TFS Stress Trends Report

TFS Transaction Analysis

Application Command count Percentage

Test Weight from Dogfood Server

Version Control Download 7471817 82.98% 83.64%

Version Control QueryItems 470287 5.22% 5.24%

Integration IsMember 173575 1.93% 2.01%

Integration ReadIdentity 136990 1.52% 1.67%

WorkItem Tracking PageWorkitemsByIds 93075 1.03% 1.56%

WorkItem Tracking QueryWorkitems 84577 0.94% 1.10%

Version Control UpdateLocalVersion 75809 0.84% 1.23%

TFS Best Practices

Start early Focus on key scenarios Run tests regularly Measure against requirements Spend tuning time wisely

Using UI Tests as Performance Testsand JScript Profiling

demo

Types Of Performance Tests

Small DB

Expected Data Size

Peak Data Size

# Users

Data Scale

Target Layer

Web App

Database

Unit Test

Web Server

Web App

Database

Web Test

UI

Action Layer

Service API Service API

Web App

Database

Web App

Database

UI TestManual Test

Single UserTypical Load

Peak Load

Deployment And Maintenance

Run To Run Comparison Of Load Tests

demo

Anticipating Common .NET Performance Problems

Performance Code Analysis

public struct BusinessValueType{ public int Value; public string Name;}

Performance Quiz

<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString=“…“ ProviderName=“…" SelectCommand="SELECT * FROM ..."></asp:SqlDataSource>

Select Company: <asp:DropDownList ID="ddl1" runat="server” DataTextField="Company Name" DataValueField=“Company ID“ OnSelectedIndexChanged="Selection_Change”></asp:DropDownList>

Theory Objects that were just allocated will soon die Objects that have been alive for some time

will keep on living

About Generational GC

Gen 0 Gen 1 Gen 2

Gen 0 is full, start garbage collection!New objects are allocated in Gen 0Dead objects are foundStill living objects are promoted

Large object heap

1. Midlife crisis2. Managed leaks3. Large object heap

Three Bad Allocation Patterns

Diagnosing Memory Issues

demo

Locks are the up and coming bottleneck Multicore revolution Contention profiling

Low overhead Non-intrusive

Detecting .NET Locking Problems

Contention Profiler

demo

What's Cool And New In Visual Studio Team System 10

Collect more analysis data Remote profiler integration Sys Info data collection Extensible data collectors to support

more platforms Run to run reports in Microsoft Excel Load test log visualization Run functional tests as performance tests New design-time extensibility points Many usability enhancements

VSTS 10 Web And Load Test Features

Now works under virtualization! New function details page Rules and guidance to help detect

common problems JScript profiling Just my code profiling Many usability enhancements

VSTS 10 Profiler New Features

Visual Studio Team System provides performance tools to support you throughout the software lifecycle

Know your tools! Profiler blog: http://blogs.msdn.com/profiler Web/load test blog:

http://blogs.msdn.com/edglas Forums:

http://social.msdn.microsoft.com/forums/en-US/vstswebtest/threads/

http://social.msdn.microsoft.com/Forums/en-US/vstsprofiler/threads/

Know your platform! Improving .NET Performance and Scalability

Resources

Related Sessions

Session ID

Session Title

TL19 Bringing Out The Best In Multicore Systems BB07 SQL Server 2008: Developing Large Scale Web Applications And ServicesTL38 WCF: Zen Of Performance And Scale

PC53 Building High Performance JScript Applications

TL60 Improving Code Quality With Code Analysis

TL03 Microsoft Visual Studio Team System: Software diagnostics and quality

Evals & Recordings

Please fill

out your

evaluation for

this session at:

This session will be available as a recording at:

www.microsoftpdc.com

Please use the microphones provided

Q&A

© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market

conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.


Recommended