Improving .NET Scalability And Performance With Visual Studio

crookpatedspongySoftware and s/w Development

Dec 2, 2013 (3 years and 7 months ago)

77 views



Steve Carroll


Senior Development Lead


Microsoft Corporation



Ed Glas


Principal Group Manager


Microsoft Corporation

TL24



One Last
Walkthrough
Before Launch

We Got Lucky!

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

Please use
this format
when talking
about
CURRENT

products,
services or
features.

Design

Development

Gathering
requirements

Maintenance

Deployment

Testing

Performance Requirements

Please use
this format
when talking
about
CURRENT

products,
services or
features.

Gathering
requirements

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

Network

Client

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

1Gb

SQL

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 users

Throughput

100 home pages/sec

50 searches/sec

2 checkouts/sec

Design

Gathering
requirements



Exploratory performance tests



UI

Action layer

Service API

Service API

Web app

Database

Web app

Database



Design


Now that we have the requirements,

we are ready to implement and test

Pri

Scenario

Goal

Actual

Delta
Goal

Delta
build

Bug

2

WebAccess
:

Run
a query for
100
items

3.5

9.00

-
157%

-
111%

518511

2

VC:

CommandLine

-

Rollback
1000 edits and folder
rename

30

49.61

-
65%

9%

416557

2

WIT:

UI
-

VS startup with
connected Team Explorer (warm
)

0.53

0.85

-
61%

29%

535042

1

Office 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

120

165.9
7

-
38%

-
26%

510958

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%






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 Test

Manual Test

Single User

Typical Load

Peak Load

public
struct

BusinessValueType

{


public
int

Value;


public string Name;

}

<
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
>




Gen 0

Gen 1

Gen 2

Gen 0 is full, start garbage collection!

New objects are allocated in Gen 0

Dead objects are found

Still living objects are promoted

Large object heap

1.
2.
3.









Extensible data collectors


log visualization



design
-
time extensibility points



virtualization


Rules and guidance


Just my code

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



http://blogs.msdn.com/profiler

http://blogs.msdn.com/edglas

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

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



Improving .NET Performance and Scalability
Session ID

Session Title

TL19

Bringing Out The Best In
Multicore

Systems

BB07

SQL Server 2008: Developing Large Scale Web Applications And Services

TL38

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

www.microsoftpdc.com

©
2008 Microsoft
Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademar
ks
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
dat
e 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 accu
rac
y 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.