Added help pages!

This commit is contained in:
Kaelin Hooper
2016-08-16 14:16:04 -07:00
parent 52217dc753
commit c61bf70f4b
4 changed files with 9636 additions and 39 deletions
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.&nbsp;
</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.&nbsp;&nbsp; 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.&nbsp;&nbsp; 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.&nbsp;
</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 &#39;Run&#39; 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 &#39;Collect -&gt; Run&#39; 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.&nbsp; </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 &#39;background&#39; 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.&nbsp;&nbsp;
This magic is done by the grouping and folding features (GroupPats and Fold*
textboxes).&nbsp;&nbsp; This video talks demonstrates this power and gives you
the basics you need in order to use it effectively.&nbsp;&nbsp;
</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.&nbsp; Your goal is to create
nodes that are &#39;sematically meaninful&#39; which account for a substantial part of
the cost.&nbsp; After this grouping is complete, you know what to look at, the
question is &#39;How?&#39;.&nbsp;&nbsp; If you were to ungroup, the problem is that are
effectively undoing the work you just did.&nbsp;&nbsp; Instead you want pick the
samples from JUST ONE ENTRY, and &#39;Drill into&#39; those.&nbsp; Once these samples
are in their own window, you can safely ungroup without unrelated calls that you
are not interested in skewing the statistics.&nbsp;&nbsp; This view shows you
how easy it is to do this.
</li>
</ol>
<h3>Wall Clock Time Investigations.&nbsp; </h3>
<p>Typically if you aredoing a time investigation, you are concerned about wall clock time (not CPU time).&nbsp;&nbsp; Thus you can argue that wall clock time investigations are more important that CPU investigations.&nbsp; 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.&nbsp;&nbsp; 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.&nbsp; This is NOT true for wall clock time and is part of what makes it harder to analyze.&nbsp;&nbsp;&nbsp; These videos walk you through what you need to know in order to do a successfull wall clock time investigation.&nbsp; </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).&nbsp;&nbsp; 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 &#39;roll up&#39; 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>&nbsp;(16 min) In this video we show how to analyze the wall clock response time of an ASP.NET application.&nbsp; 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.&nbsp;&nbsp; Some
of the views (like the &#39;CPU Stacks&#39; 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.&nbsp;&nbsp; Thus there
are times when you want to see the &#39;raw&#39; view, where you see a time ordered list
of events where each event can have a particular event-specific payload.&nbsp;&nbsp;
This is what the EventViewer is shows you.&nbsp;&nbsp;
</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)&nbsp; -
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.&nbsp;&nbsp;&nbsp;
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.&nbsp;&nbsp;
In this video we demonstrate how to use these events to help in an
investigation.&nbsp;
</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 &#39;high level&#39;, so that you can easily zoom into these logical regions and focus on just certain aspects of your applications performance.&nbsp;&nbsp; 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).&nbsp;&nbsp;&nbsp; There is a class in Version 4.5 of the .NET Framework called System.Diagnostics.Tracing.EventSource that lets you do just this.&nbsp; Using this class it is trivial to make your .NET program log ETW events with whatever payload you desire.&nbsp;&nbsp; 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).&nbsp; 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).&nbsp;&nbsp;&nbsp; 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.&nbsp; </li>
</ol>
<h2>Memory Investigations</h2>
<p>
PerfView&#39;s capabilities break into two rough categories, time (based on ETW
events), and memory (based on memory snapshots).&nbsp;&nbsp; In this section we
go into detail on how to use PerfView to do a Memory Performance investigation.&nbsp;
</p>
<ol>
<li>
&nbsp;<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&nbsp; .NET Memory investigation is first determine whether .NET
Memory is your problem and take a heap snapshot.&nbsp;&nbsp; This tutorial shows
you how to determine how much of your process&#39;s memory is GC heap and (if that
is your problem) shows you how to take a snapshot of the GC heap.&nbsp;
</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 &#39;Leak&#39; in the .NET GC heap.&nbsp; This first part goes through the mechanics of collecting the data which involves taking two heap snapshots at appropriate times.&nbsp; </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).&nbsp; In this second part we take the two snapshots collected in part 1 and walk though the mechanics of doing a &#39;diff&#39; of the two memory heaps to determine how the heap grew between the two points in time.&nbsp; This lets us home in on places where we were not dropping references to objects (which caused them to &#39;leak&#39;).&nbsp; </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>