mirror of
https://github.com/Kae7in/perfview
synced 2026-08-09 12:09:44 +00:00
Added help pages!
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -22,38 +22,27 @@
|
||||
|
||||
<div class="wrapper">
|
||||
<div id="sideBarContainer">
|
||||
|
||||
<input id="dirSelect" list="recentDirectories" type="text" placeholder="C:\Development\PerfViewData.etl">
|
||||
<datalist id="recentDirectories">
|
||||
</datalist>
|
||||
|
||||
|
||||
<!--<div id="filterContainer">
|
||||
<form action="#">
|
||||
<a href="#">Filter</a>
|
||||
<input type="text" name="fname" value="" onkeydown="">
|
||||
</form>
|
||||
</div>-->
|
||||
<input id="dirSelect" list="recentDirectories" type="text" placeholder="C:\Development\PerfViewData.etl">
|
||||
<datalist id="recentDirectories">
|
||||
</datalist>
|
||||
|
||||
<div id="treeContainer">
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="welcome">
|
||||
<h4>Welcome to PerfView!</h4>
|
||||
<p>
|
||||
PerfView is an application designed to simplify the collection and analysis of performance data.<br><br>
|
||||
Pressing the <b>F1</b> key will give you help for current view. Any blue hyperlinks in the UI also take you to help. For an overview of PerfView see the <a href="#"><u>User's Guide</u></a>. If you wish to ask a question that the documentation did not answer or if you have feedback or a bug report, see the <a href="#"><u>feedback instructions</u></a> in the documentation.<br><br>
|
||||
<b>If you are new to PerfView</b>, we strongly recommend reading the <a href="#"><u>tutorial</u></a> or watch the tutorial <a href="#"><u>videos</u></a>. It should only take 10-20 minutes to walk through. Also recommend is reading <a href="#"><u>what perfView can do for you</u></a>.<br><br>
|
||||
Pressing the <b>F1</b> key will give you help for current view. Any blue hyperlinks in the UI also take you to help. For an overview of PerfView see the <a href="help.html#UsersGuide" target="_blank"><u>User's Guide</u></a>. If you wish to ask a question that the documentation did not answer or if you have feedback or a bug report, see the <a href="help.html#Feedback" target="_blank"><u>feedback instructions</u></a> in the documentation.<br><br>
|
||||
<b>If you are new to PerfView</b>, we strongly recommend reading the <a href="help.html#Tutorial" target="_blank"><u>tutorial</u></a> or watch the tutorial <a href="perfViewWebVideos.html" target="_blank"><u>videos</u></a>. It should only take 10-20 minutes to walk through. Also recommend is reading <a href="help.html#WhatPerfViewCanDoForYou" target="_blank"><u>what perfView can do for you</u></a>.<br><br>
|
||||
|
||||
<b>Optimizing Time, or Unmanaged Memory: Collecting ETW Profile Data</b><br>
|
||||
PerfView can collect a time based ETW trace for investigating <a href="#"><u><b>CPU</b></u></a> and <a href="#"><u><b>Server Response Time</b></u></a>, as well as <a href="#"><u>Wall Clock / Blocked Time</u></a>, <a href="#"><u>Unmanaged memory</u></a> or <a href="#"><u>Managed memory</u></a>. For these cases PerfView has two ways of collecting ETW trace data:<br>
|
||||
PerfView can collect a time based ETW trace for investigating <a href="help.html#CPUInvestigation" target="_blank"><u><b>CPU</b></u></a> and <a href="help.html#MakingServerInvestigationEasy" target="_blank"><u><b>Server Response Time</b></u></a>, as well as <a href="help.html#BlockedTimeInvestigation" target="_blank"><u>Wall Clock / Blocked Time</u></a>, <a href="help.html#UnmanagedMemoryAnalysis" target="_blank"><u>Unmanaged memory</u></a> or <a href="help.html#GCHeapNetMemStacks" target="_blank"><u>Managed memory</u></a>. For these cases PerfView has two ways of <a href="help.html#CollectingData" target="_blank"><u>collecting ETW trace data</u></a>:<br>
|
||||
</p>
|
||||
<ul>
|
||||
<li>Run a command and collect data while the command is running. Collect->Run (Alt-R)</li>
|
||||
<li>Collect data machine wide by starting and stopping collection manually. Collect->Collect (Alt-C)</li>
|
||||
<li style="list-style-type: disc; margin-left: 20px;">Run a command and collect data while the command is running. Collect->Run (Alt-R)</li>
|
||||
<li style="list-style-type: disc; margin-left: 20px;">Collect data machine wide by starting and stopping collection manually. Collect->Collect (Alt-C)</li>
|
||||
</ul><br>
|
||||
|
||||
<p>
|
||||
@@ -61,8 +50,8 @@
|
||||
PerfView can also collect data about the GC heap of a .NET Runtime process. See <a href="#"><u>GC Heap Quick Start</u></a> for more details.<br>
|
||||
</p>
|
||||
<ul>
|
||||
<li>Take a heap snapshot of an existing process Memory->Take Heap Snapshot (Alt-S)</li>
|
||||
<li>To Take a heap snapshot from a Process Dump simply double click on the .DMP file in the file view to the left.</li>
|
||||
<li style="list-style-type: disc; margin-left: 20px;">Take a heap snapshot of an existing process Memory->Take Heap Snapshot (Alt-S)</li>
|
||||
<li style="list-style-type: disc; margin-left: 20px;">To Take a heap snapshot from a Process Dump simply double click on the .DMP file in the file view to the left.</li>
|
||||
</ul><br>
|
||||
|
||||
<p>
|
||||
@@ -71,13 +60,13 @@
|
||||
If the file contains more than one view of the data then double clicking on the object populates children nodes in the treeview. Double clicking on one of the children will open the viewer for that view. <b>Right clicking and selecting 'Help on Item'</b> will take you to the help for that particular entry in the viewer. There are two main viewers of profile data:<br>
|
||||
</p>
|
||||
<ul>
|
||||
<li>A stack viewer which allows aggregation and filtering of events with associated stack traces.</li>
|
||||
<li>An event viewer which allows filtering of time based events.</li>
|
||||
<li style="list-style-type: disc; margin-left: 20px;">A stack viewer which allows aggregation and filtering of events with associated stack traces.</li>
|
||||
<li style="list-style-type: disc; margin-left: 20px;">An event viewer which allows filtering of time based events.</li>
|
||||
</ul><br>
|
||||
|
||||
<p>
|
||||
<b>Diffing Profile Data</b>
|
||||
PerfView has the ability to determine the difference between two traces, which is very useful in doing regression analysis. To use the Diff functionality first view both traces in separate stack view windows and (if necessary) filter out all but the region that represents an equivalent amount of work in each view. Then use the Diff menu on the stack view window of the 'regressed' trace and to select the other window as its baseline. See <a href="#"><u>Diff Help</u></a> for more.
|
||||
PerfView has the ability to determine the difference between two traces, which is very useful in doing regression analysis. To use the Diff functionality first view both traces in separate stack view windows and (if necessary) filter out all but the region that represents an equivalent amount of work in each view. Then use the Diff menu on the stack view window of the 'regressed' trace and to select the other window as its baseline. See <a href="help.html#Diff" target="_blank"><u>Diff Help</u></a> for more.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,171 @@
|
||||
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<style type="text/css">
|
||||
.style1 {
|
||||
font-weight: normal;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>PerfView Videos</h1>
|
||||
<p>
|
||||
The documentation built into PerfView is intended to be sufficient to tell you what
|
||||
you need to know in order to use the tool effectively. However it is still valuable
|
||||
to have someone actually demonstrate the tool in action. Here we present a set of tutorial videos that will present the basics.
|
||||
</p>
|
||||
<p>
|
||||
Each tutorial is designed to be short and cover only one topic. This allows you
|
||||
to pick and choose the topics of interest and skip what is not currently
|
||||
relevant easily. Also keep in mind the Ctrl-Shift-G (go faster) and Ctrl-Shift-N
|
||||
(Normal speed) feature of Windows Media player. This can help you watch the
|
||||
videos even faster.
|
||||
</p>
|
||||
<h2>Getting the Latest PerfView Videos</h2>
|
||||
<p>
|
||||
The videos listed below are those that existed at the time this version of PerfView was released. Since more videos are being added all the time, you should check the <a href="http://channel9.msdn.com/series/PerfView-tutorial">PerfView Tutorial Series</a>
|
||||
on <a href="http://channel9.msdn.com/">Channel 9</a> for the latest additions. In particular the <a href="http://channel9.msdn.com/Series/PerfView-Tutorial?page=2">last page</a> of this series is the place to look for new material.
|
||||
</p>
|
||||
<h2>Getting PerfView</h2>
|
||||
<ol>
|
||||
<li>
|
||||
<a href="http://media.ch9.ms/ch9/58bc/9de8d66d-07f7-4265-a0eb-688870e858bc/0GettingPerfView_Source.wmv">Getting PerfView from the Internet</a> -(2 min) -
|
||||
PerfView is REALLY easy to get. If you have an internet connection you are about 4 clicks
|
||||
away from running perfView. This QUICK video shows you how.
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<h2>Time Investigations</h2>
|
||||
<p>
|
||||
The most common kind of performance investigation is optimizing time. For this case, the PerfView has the 'Run' and 'Collect'
|
||||
command that will generate ETL (event trace log) files that are used for analysis.
|
||||
</p>
|
||||
<h3>Collecting Data for Investigations into Time </h3>
|
||||
<ol>
|
||||
<li>
|
||||
<a href="http://media.ch9.ms/ch9/9774/2d7542e2-5aec-456a-a956-4b8b05ba9774/1CollectingDataWithRunCommand_Source.wmv">Collecting Data with the PerfView 'Run' Command</a> -(5 min) - Before you can
|
||||
investigate, you first have to collect. If your scenario can be run from the
|
||||
command line easily, you shoud use the 'Collect -> Run' command to collect the
|
||||
data. You can be finished collecting in less than a minute.
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://media.ch9.ms/ch9/575f/d27ed117-0df6-447d-b2ec-1c58fec0575f/11CollectionForServices_Source.wmv">Collecting Data For Services</a> -(7 min) - When investigating services it is convinient
|
||||
to explictly start and stop the trace. It is also very common to want to collect data on
|
||||
one machine (often by asking someone else to collect the data) and then analyze it on another
|
||||
machine. This video shows you some of your options for server-scenario data collection.
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
|
||||
<h3>CPU Investigations. </h3>
|
||||
<p>
|
||||
<span class="style1">
|
||||
The most common kind of Time investigation is investigating
|
||||
high CPU usage
|
||||
</span>
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
<a href="http://media.ch9.ms/ch9/4308/7c67a721-de52-4932-a9be-99db9fe74308/2SimpleCPUPerfInvestigation_Source.wmv">A Simple CPU Investigation</a> (16 min) - Typically the first investigation you
|
||||
do is to check on CPU usage. This totorial is longer than most, but that is
|
||||
because it covers alot of important 'background' information need to be a
|
||||
productive investigator. If you watch only one video, this should be it.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="http://media.ch9.ms/ch9/85e9/59ae86ea-70ff-492b-be16-ee329fac85e9/3ResolvingSymbols_Source.wmv">Symbol Resolution</a> (5 min) - By default Perfview only resolves 'easy'
|
||||
symbols (which include many managed methods). If you need symbol (.pdb)
|
||||
files to resolve addresses to names you typically need to ask PerfView to
|
||||
do this explicitly. This video shows you what the process is where PerfView
|
||||
looks by default, and where to start if you have problems getting symbols.
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://media.ch9.ms/ch9/58ef/081cbb95-9250-4840-8396-aa2bfe1058ef/4GroupingAndFolding_Source.wmv">Grouping And Folding</a> (13 min) -
|
||||
Something that sets PerfView appart from most other profiling tools is its
|
||||
ability to hide a large amount of irrelevant detail while also allowing you to
|
||||
have high detail on the parts of the application that matter to you.
|
||||
This magic is done by the grouping and folding features (GroupPats and Fold*
|
||||
textboxes). This video talks demonstrates this power and gives you
|
||||
the basics you need in order to use it effectively.
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://media.ch9.ms/ch9/6fd8/ce299ad3-febd-41d5-a3a0-4aa37a7b6fd8/5DrillInto_Source.wmv">Drilling Into Cost</a> (6 min) -
|
||||
In the first phase of an investigation you use the grouping and folding features
|
||||
to reduce the number of nodes you are considering. Your goal is to create
|
||||
nodes that are 'sematically meaninful' which account for a substantial part of
|
||||
the cost. After this grouping is complete, you know what to look at, the
|
||||
question is 'How?'. If you were to ungroup, the problem is that are
|
||||
effectively undoing the work you just did. Instead you want pick the
|
||||
samples from JUST ONE ENTRY, and 'Drill into' those. Once these samples
|
||||
are in their own window, you can safely ungroup without unrelated calls that you
|
||||
are not interested in skewing the statistics. This view shows you
|
||||
how easy it is to do this.
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
|
||||
<h3>Wall Clock Time Investigations. </h3>
|
||||
<p>Typically if you aredoing a time investigation, you are concerned about wall clock time (not CPU time). Thus you can argue that wall clock time investigations are more important that CPU investigations. However wall clock time is more harder to investigate because every thread in your process has its own wall clock time, and what you are intersted in is the CRITICAL PATH among these threads. CPU is nice because it TENDS to be on the critical path (even if the flow of control hops from thread to thread), which means ANY CPU time is probably important. This is NOT true for wall clock time and is part of what makes it harder to analyze. These videos walk you through what you need to know in order to do a successfull wall clock time investigation. </p>
|
||||
<ol>
|
||||
<li><a href="http://channel9.msdn.com/Series/PerfView-Tutorial/Tutorial-12-Wall-Clock-Time-Investigation-Basics">Wall Clock Time Investigation Basics</a> (16 min) - This video walks through a wall clock investigation on a very simple scenario (a disk bound sequential program). It covers how you should collect the data (the Thread Time checkbox), as well as using a method frame to isolate time to a particular thread and time interval for analysis.</li>
|
||||
<li><a href="http://channel9.msdn.com/Series/PerfView-Tutorial/Tutorial-13-Leveraging-Tasks-make-sense-of-ParallelAsynchronous-programs" href="http://channel9.msdn.com/Series/PerfView-Tutorial/Tutorial-13-Leveraging-Tasks-make-sense-of-ParallelAsynchronous-programs">Leveraging Tasks make sense of Parallel/Asynchronous programs</a> (16 min) - This video walks through a more complex scenario where operations are happening in paralell and shows you that if you used System.Diagnostics.Threading.Tasks to do the parallel activity, PerfView can 'roll up' the costs of the paralllel/async activity in a way that allows parallel/async programs to be analyzed like the simpler sequential case. </li>
|
||||
<li><a href="http://channel9.msdn.com/posts/Tutorial-14-Investigating-Wall-Clock-responce-time-in-ASPNET-Scenarios" href="http://channel9.msdn.com/posts/Tutorial-14-Investigating-Wall-Clock-responce-time-in-ASPNET-Scenarios">Investigating Wall Clock Response Time of ASP.NET scenarios</a> (16 min) In this video we show how to analyze the wall clock response time of an ASP.NET application. I also discuss this scenario in<a data-mce-href="http://blogs.msdn.com/b/vancem/archive/2012/11/28/video-wall-clock-time-analysis-of-asp-net-applications-using-perfview.aspx" href="http://blogs.msdn.com/b/vancem/archive/2012/11/28/video-wall-clock-time-analysis-of-asp-net-applications-using-perfview.aspx"> this blog entry</a>.</li>
|
||||
</ol>
|
||||
<h3>The PerfView Event Viewer</h3>
|
||||
<p>
|
||||
Fundamentally an ETW data file is a time order list of events. Some
|
||||
of the views (like the 'CPU Stacks' view) will regroup these events based on the
|
||||
stack traces that are attached to events, but by necessity these views throw
|
||||
away much of the data in that was logged with the event. Thus there
|
||||
are times when you want to see the 'raw' view, where you see a time ordered list
|
||||
of events where each event can have a particular event-specific payload.
|
||||
This is what the EventViewer is shows you.
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
<a href="http://channel9.msdn.com/Series/PerfView-Tutorial/Perfview-Tutorial-6-The-Event-Viewer-Basics">Event Viewer Basics</a> (16 min) -
|
||||
Using the data in the tutorial example, we describe the basic funtionality of
|
||||
the Event Viewer, which is mostly about filtering events (by name, time,
|
||||
process, and text) as well as deciding which fields to display.
|
||||
Also shown are features for accessing the stacks associated with particular
|
||||
events and the ability to export the view as a CSV (Excel file) for further processing.
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://channel9.msdn.com/Series/PerfView-Tutorial/PerfView-Tutorial-7-Using-the-Event-Viewer-in-ASPNET-Scenarios">The Event Viewer in ASP.NET Scenarios</a>
|
||||
(6 min) - ASP.NET is a common sceanrio for many server workloads, and ASP.NET
|
||||
can log ETW events that are very helpful in isolating the processing of one
|
||||
request from all the other processing that is happening on the server.
|
||||
In this video we demonstrate how to use these events to help in an
|
||||
investigation.
|
||||
</li>
|
||||
</ol>
|
||||
<h3>Using System.Diagnostics.Tracing.EventSource to Log Your Own Events</h3>
|
||||
<p>
|
||||
When doing any time based investigation, it is very useful to know what the program is doing at a 'high level', so that you can easily zoom into these logical regions and focus on just certain aspects of your applications performance. This is especially important in server scenarios as well any scnearios that use asynchronous I/O (because Async I/O makes it harder to use the stack of your program to do the same thing). There is a class in Version 4.5 of the .NET Framework called System.Diagnostics.Tracing.EventSource that lets you do just this. Using this class it is trivial to make your .NET program log ETW events with whatever payload you desire. These videos show you how.
|
||||
</p>
|
||||
<ol>
|
||||
<li><a href="http://channel9.msdn.com/Series/PerfView-Tutorial/PerfView-Tutorial-8-Generating-Your-Own-Events-with-EventSources">Generating Your own Events with EventSource</a> (12 min). This video is an introduction to using EventSource, showing you how to write the code, how to turn on your event source and how to view the resulting log messages in the PerfView Event Viewer (see Event Viewer Basics above). There is also a <a href="http://blogs.msdn.com/b/vancem/archive/2012/07/09/logging-your-own-etw-events-in-c-system-diagnostics-tracing-eventsource.aspx">companion blog entry</a> that has links to a version of EventSource that works on versions of the .NET Framework before V4.5. </li>
|
||||
</ol>
|
||||
<h2>Memory Investigations</h2>
|
||||
<p>
|
||||
PerfView's capabilities break into two rough categories, time (based on ETW
|
||||
events), and memory (based on memory snapshots). In this section we
|
||||
go into detail on how to use PerfView to do a Memory Performance investigation.
|
||||
</p>
|
||||
<ol>
|
||||
<li>
|
||||
<a href="http://channel9.msdn.com/Series/PerfView-Tutorial/PerfView-Tutorial-9-NET-Memory-Investigation-Basics-of-GC-Heap-Snapshots">Basics of GC Heap Snapshots</a> (9 min) - The first
|
||||
step in doing .NET Memory investigation is first determine whether .NET
|
||||
Memory is your problem and take a heap snapshot. This tutorial shows
|
||||
you how to determine how much of your process's memory is GC heap and (if that
|
||||
is your problem) shows you how to take a snapshot of the GC heap.
|
||||
</li>
|
||||
<li><a href="http://channel9.msdn.com/Series/PerfView-Tutorial/Tutorial-10-Investigating-NET-Heap-Memory-Leaks-Part1-Collecting-the-data">Investigating .NET Heap Memory Leaks: Part 1: Collecting the Data</a> (8 min) This is the first of a two part video of step-by-step instructions for using PerfView to investigate a 'Leak' in the .NET GC heap. This first part goes through the mechanics of collecting the data which involves taking two heap snapshots at appropriate times. </li>
|
||||
<li><a href="http://channel9.msdn.com/Series/PerfView-Tutorial/Tutorial-11-Investigating-NET-Heap-Memory-Leaks-Part2-Analyzing-the-data">Investigation .NET Heap Memory Leaks: Part 2: Analyzing the Data </a>(11 min). In this second part we take the two snapshots collected in part 1 and walk though the mechanics of doing a 'diff' of the two memory heaps to determine how the heap grew between the two points in time. This lets us home in on places where we were not dropping references to objects (which caused them to 'leak'). </li>
|
||||
</ol>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -39,21 +39,19 @@
|
||||
<li>
|
||||
<a href="#" class="title">Help</a>
|
||||
<ul class="menu vertical">
|
||||
<li><a href="#">Help on Main View</a></li>
|
||||
<li><a href="#">Users Guide</a></li>
|
||||
<li><a href="#">Getting Started Videos</a></li>
|
||||
<li><a href="#">Get the Latest Version</a></li>
|
||||
<li><a href="#">Give Feedback or Ask a Question</a></li>
|
||||
<li><a href="#">Reference Guide</a></li>
|
||||
<li><a href="#">Command Line Help</a></li>
|
||||
<li><a href="#">User Command Help</a></li>
|
||||
<li><a href="#">Multi-Scenarios Analysis</a></li>
|
||||
<li><a href="#">Extending Perfview</a></li>
|
||||
<li><a href="#">Viewing Linux Data</a></li>
|
||||
<li><a href="#">Viewing External Data</a></li>
|
||||
<li><a href="#">Using EventSources</a></li>
|
||||
<li><a href="#">Release Notes</a></li>
|
||||
<li><a href="#">About</a></li>
|
||||
<li><a href="help.html#MainViewerQuickStart" target="_blank">Help on Main View</a></li>
|
||||
<li><a href="help.html#StackViewerQuickStart" target="_blank">Help on Stack Viewer</a></li>
|
||||
<li><a href="help.html#UsersGuide" target="_blank">Users Guide</a></li>
|
||||
<li><a href="perfViewWebVideos.html" target="_blank">Getting Started Videos</a></li>
|
||||
<li><a href="help.html#LatestVersion">Get the Latest Version</a></li>
|
||||
<li><a href="help.html#Feedback" target="_blank">Give Feedback or Ask a Question</a></li>
|
||||
<li><a href="help.html#ReferenceGuide" target="_blank">Reference Guide</a></li>
|
||||
<li><a href="help.html#MultiScenarioAnalysis" target="_blank">Multi-Scenarios Analysis</a></li>
|
||||
<li><a href="help.html#PerfViewExtensions" target="_blank">Extending Perfview</a></li>
|
||||
<li><a href="help.html#ViewingLinuxData" target="_blank">Viewing Linux Data</a></li>
|
||||
<li><a href="help.html#ViewingExternalData" target="_blank">Viewing External Data</a></li>
|
||||
<li><a href="help.html#UsingEventSources" target="_blank">Using EventSources</a></li>
|
||||
<li><a href="help.html#ReleaseNotes" target="_blank">Release Notes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
Reference in New Issue
Block a user