24
www.devreach.com Demystifying Visual Studio 2012 Performance Tools Martin Kulov | kulov.net

Demystifying Visual Studio 2012 Performance Tools

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Demystifying Visual Studio 2012 Performance Tools

Martin Kulov | kulov.net

Page 2: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

You cannot manage,What you do not measure

Page 3: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

You cannot Improve,What you do not measure

Page 4: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Operating System

Trace Analysis

HDD RAM CPU LAN

Win32 API

CLR WinRT

CPU Counters

COM

Our code

Page 5: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

CPU Counters

• Hardware events – portable and platform– Instructions Retired– Non Halted Cycles– ITLB Misses– Branches Retired– Mis-predicted Branches– L2 Cache Read Misses– L2 Cache Read References

Page 6: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Operating System

Trace Analysis

HDD RAM CPU LAN

Win32 API

CLR WinRT Windows

Perf

Counters

CPU Counters

COM

Our code

Page 7: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Windows Performance Counters

• They are …counters• Min interval – 1sec• Apps and kernel send Increment

signals• Accessed by Windows API

Page 8: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Perf Counters Demo

Page 9: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Operating System

Trace Analysis

HDD RAM CPU LAN

Win32 API

CLR WinRT Windows

Perf

Counters

CPU Counters

Event

Tracing

for

Windows

COM

Our code

Page 10: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Event Tracing for Windows

• General purpose, high speed tracing• Buffering and logging in kernel• Faster than printf

– 20,000 events per second while only using 5% CPU load on a P3 500MHz!

• Provider, Consumer, Controller model• Over 700 providers in Win7, ~900 in

Win8!• Aggregates all sources• Stack walking (on kernel events)

Page 11: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

ETW Kernel Providers

• Hardware Configuration Events • Disk-level I/O • File-level I/O • Image Layouts• Page Faults• Network I/O • Registry I/O • Process and Thread info

Page 12: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

ETW Application Providers

• Windows Firewall• WLAN, LAN• USB, Bluetooth• IIS, ASP.NET, CLR, HTTP.SYS• Security• … many more

Page 13: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

ETW Demo

Page 14: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Side note: Symbols

• _NT_SYMBOL_PATH=SRV*c:\mss*http://msdl.microsoft.com/download/symbols

• Call stack information• Private managed code fields• Link to source code repository

Page 15: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Concurrency Visualizer

• Utilization• Threads• Cores• Stack Walking

Page 16: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Operating System

Trace Analysis

HDD RAM CPU LAN

Win32 API

CLR WinRT Windows

Perf

Counters

CPU Counters

Event

Tracing

for

Windows

COM

Our code

Profiler

Page 17: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Profiler

• Instrumentation• Sampling• Concurrency• Stack Walking

Page 18: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Profiler setup

• There can be only one• Uses environment variables– COR_ENABLE_PROFILING– COR_PROFILER – COR_XXX…

• Profiler API

Page 19: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Instrumentation

• Profiler based• Requires full code recompilation• Best during development phase• Complete execution path

Page 20: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Sampling

• Profiler based• Data collection on sample intervals• Suitable for long runs• Call Stack

Page 21: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Concurrency

• Show resource contention• Based on Detours• Microsoft Research project now sold

for $10k• http://research.microsoft.com/en-us/projects/deto

urs/

• Stack Walking

Page 22: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Profiling extras

• GC, Allocation• Tier Interaction• JavaScript• Production use• Licensing

Page 23: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Profiler Demo

Page 24: Demystifying Visual Studio 2012 Performance Tools

www.devreach.com

Thank [email protected]/in/kulov

Martin Kulov | kulov.net