Skip to content

Commit e335849

Browse files
Copilotbrianrob
andcommitted
Update broken links in PerfView user guide documentation
Co-authored-by: brianrob <[email protected]>
1 parent 91028c6 commit e335849

File tree

4 files changed

+126
-66
lines changed

4 files changed

+126
-66
lines changed

src/PerfView/SupportFiles/HtmlReportUsersGuide.htm

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ <h3>
2828
</h3>
2929
<p>
3030
By default PerfView causes the Runtime to log an event at the beginning and
31-
end of each <a href="http://msdn.microsoft.com/en-us/library/0xy59wtx.aspx">
31+
end of each <a href="https://learn.microsoft.com/en-us/dotnet/api/system.object.finalize">
3232
.NET
3333
Garbage Collection
3434
</a> as well as every time 100K of objects are allocated.&nbsp;&nbsp;
@@ -41,7 +41,7 @@ <h3>
4141
<p>
4242
If the GC heap is a large percentage of the total memory used then GC heap
4343
optimization then use the Memory->Take Heap Snapshot feature to drill into GC heap usage.
44-
See <a href="http://msdn.microsoft.com/en-us/magazine/dd882521.aspx">
44+
See <a href="https://learn.microsoft.com/en-us/archive/msdn-magazine/2010/april/clr-4-0-a-comprehensive-look-at-garbage-collection-improvements">
4545
Memory
4646
Usage Auditing For .NET Applications
4747
</a> for&nbsp; more on memory optimization.&nbsp;
@@ -63,7 +63,7 @@ <h3>
6363
By default, PerfView causes the Runtime to log an event every time a managed object is
6464
finalized, meaning that its finalizer (denoted in C# with the ~ syntax) is executed.
6565
For a detailed look at the costs involved in finalization, see this
66-
<a href="http://blogs.msdn.com/b/cbrumme/archive/2004/02/20/77460.aspx">blog post</a>.
66+
blog post (archived).
6767
</p>
6868
<p>
6969
PerfView is unable to determine the stack that allocated a finalizable object,
@@ -115,7 +115,7 @@ <h3>
115115
<ul>
116116
<li>
117117
Precompile the code - On Desktop .NET the
118-
<a href="\%22http:/msdn.microsoft.com/en-us/magazine/cc163808.aspx\%22">
118+
<a href="https://learn.microsoft.com/en-us/archive/msdn-magazine/">
119119
NGen Tool
120120
</a> can be used. On .Net Core
121121
<a href="https://github.com/dotnet/coreclr/blob/master/Documentation/building/crossgen.md">
@@ -152,7 +152,7 @@ <h3>
152152
</h3>
153153
<p>
154154
Background JIT compilation is a feature that was introduced in Version 4.5 of the .NET runtime.&nbsp;&nbsp; The basic idea is to take advantage of multiple processors available on most machines to speed up startup time by doing Just in Time (JIT) compilation on a background thread.&nbsp;&nbsp;&nbsp;&nbsp; Note that the .NET runtime&#39;s preferred solution to the cost o JIT compilation is to precompile the code with NGEN.&nbsp;&nbsp; This reduces the cost of JIT compilation to 0, where background JIT compilation cannot do nearly as well (it tends to reduce it by half), so using NGEN as part of application deployment should be considered first.&nbsp; However if&nbsp; using the
155-
<a href="\%22http:/msdn.microsoft.com/en-us/magazine/cc163808.aspx\%22">
155+
<a href="https://learn.microsoft.com/en-us/archive/msdn-magazine/">
156156
NGen
157157
Tool
158158
</a> is impossible (XCOPY deployment, non-admin deployment, silverlight, IL code generated at runtime), background JIT is the next best option.&nbsp;

src/PerfView/SupportFiles/PerfViewWebVideos.htm

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ <h1>PerfView Videos</h1>
3535
</p>
3636
<h2>Getting the Latest PerfView Videos</h2>
3737
<p>
38-
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="https://docs.microsoft.com/en-us/shows/perfview-tutorial/">PerfView Tutorial Series</a>
38+
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="https://learn.microsoft.com/en-us/shows/perfview-tutorial/">PerfView Tutorial Series</a>
3939
for the latest additions.&nbsp;
4040
</p>
4141
<h2>Getting PerfView</h2>
4242
<ol>
4343
<li>
44-
<a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/0-getting-perfview">Getting PerfView from the Internet</a> -(2 min) -
44+
<a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/0-getting-perfview">Getting PerfView from the Internet</a> -(2 min) -
4545
PerfView is REALLY easy to get. If you have an internet connection you are about 4 clicks
4646
away from running perfView. This QUICK video shows you how.
4747
</li>
@@ -55,13 +55,13 @@ <h2>Time Investigations</h2>
5555
<h3>Collecting Data for Investigations into Time </h3>
5656
<ol>
5757
<li>
58-
<a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/1-collecting-data-run-command">Collecting Data with the PerfView &#39;Run&#39; Command</a> -(5 min) - Before you can
58+
<a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/1-collecting-data-run-command">Collecting Data with the PerfView &#39;Run&#39; Command</a> -(5 min) - Before you can
5959
investigate, you first have to collect. If your scenario can be run from the
6060
command line easily, you shoud use the &#39;Collect -&gt; Run&#39; command to collect the
6161
data. You can be finished collecting in less than a minute.
6262
</li>
6363
<li>
64-
<a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/11-data-collection-server-scenarios">Collecting Data For Services</a> -(7 min) - When investigating services it is convinient
64+
<a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/11-data-collection-server-scenarios">Collecting Data For Services</a> -(7 min) - When investigating services it is convinient
6565
to explicitly start and stop the trace. It is also very common to want to collect data on
6666
one machine (often by asking someone else to collect the data) and then analyze it on another
6767
machine. This video shows you some of your options for server-scenario data collection.
@@ -77,21 +77,21 @@ <h3>CPU Investigations.&nbsp; </h3>
7777
</p>
7878
<ol>
7979
<li>
80-
<a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/2-simple-cpu-performance-investigation">A Simple CPU Investigation</a> (16 min) - Typically the first investigation you
80+
<a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/2-simple-cpu-performance-investigation">A Simple CPU Investigation</a> (16 min) - Typically the first investigation you
8181
do is to check on CPU usage. This totorial is longer than most, but that is
8282
because it covers a lot of important &#39;background&#39; information need to be a
8383
productive investigator. If you watch only one video, this should be it.
8484
</li>
8585

8686
<li>
87-
<a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/3-resolving-symbols">Symbol Resolution</a> (5 min) - By default Perfview only resolves 'easy'
87+
<a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/3-resolving-symbols">Symbol Resolution</a> (5 min) - By default Perfview only resolves 'easy'
8888
symbols (which include many managed methods). If you need symbol (.pdb)
8989
files to resolve addresses to names you typically need to ask PerfView to
9090
do this explicitly. This video shows you what the process is where PerfView
9191
looks by default, and where to start if you have problems getting symbols.
9292
</li>
9393
<li>
94-
<a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/4-grouping-folding">Grouping And Folding</a> (13 min) -
94+
<a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/4-grouping-folding">Grouping And Folding</a> (13 min) -
9595
Something that sets PerfView apart from most other profiling tools is its
9696
ability to hide a large amount of irrelevant detail while also allowing you to
9797
have high detail on the parts of the application that matter to you.&nbsp;&nbsp;
@@ -100,7 +100,7 @@ <h3>CPU Investigations.&nbsp; </h3>
100100
the basics you need in order to use it effectively.&nbsp;&nbsp;
101101
</li>
102102
<li>
103-
<a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/5-drilling-into">Drilling Into Cost</a> (6 min) -
103+
<a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/5-drilling-into">Drilling Into Cost</a> (6 min) -
104104
In the first phase of an investigation you use the grouping and folding features
105105
to reduce the number of nodes you are considering.&nbsp; Your goal is to create
106106
nodes that are &#39;sematically meaninful&#39; which account for a substantial part of
@@ -118,9 +118,9 @@ <h3>CPU Investigations.&nbsp; </h3>
118118
<h3>Wall Clock Time Investigations.&nbsp; </h3>
119119
<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 successful wall clock time investigation.&nbsp; </p>
120120
<ol>
121-
<li><a href="https://docs.microsoft.com/en-us/shows/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>
122-
<li><a href="https://docs.microsoft.com/en-us/shows/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 parallel 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>
123-
<li><a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/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>
121+
<li><a href="https://learn.microsoft.com/en-us/shows/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>
122+
<li><a href="https://learn.microsoft.com/en-us/shows/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 parallel 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>
123+
<li><a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/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 this blog entry (archived).</li>
124124
</ol>
125125
<h3>The PerfView Event Viewer</h3>
126126
<p>
@@ -134,15 +134,15 @@ <h3>The PerfView Event Viewer</h3>
134134
</p>
135135
<ol>
136136
<li>
137-
<a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/6-event-viewer-basics">Event Viewer Basics</a> (16 min)&nbsp; -
137+
<a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/6-event-viewer-basics">Event Viewer Basics</a> (16 min)&nbsp; -
138138
Using the data in the tutorial example, we describe the basic funtionality of
139139
the Event Viewer, which is mostly about filtering events (by name, time,
140140
process, and text) as well as deciding which fields to display.&nbsp;&nbsp;&nbsp;
141141
Also shown are features for accessing the stacks associated with particular
142142
events and the ability to export the view as a CSV (Excel file) for further processing.
143143
</li>
144144
<li>
145-
<a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/7-using-event-viewer-in-aspnet-scenarios">The Event Viewer in ASP.NET Scenarios</a>
145+
<a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/7-using-event-viewer-in-aspnet-scenarios">The Event Viewer in ASP.NET Scenarios</a>
146146
(6 min) - ASP.NET is a common sceanrio for many server workloads, and ASP.NET
147147
can log ETW events that are very helpful in isolating the processing of one
148148
request from all the other processing that is happening on the server.&nbsp;&nbsp;
@@ -155,7 +155,7 @@ <h3>Using System.Diagnostics.Tracing.EventSource to Log Your Own Events</h3>
155155
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.
156156
</p>
157157
<ol>
158-
<li><a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/8-generating-your-own-events-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>
158+
<li><a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/8-generating-your-own-events-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 companion blog entry (archived) that has links to a version of EventSource that works on versions of the .NET Framework before V4.5.&nbsp; </li>
159159
</ol>
160160
<h2>Memory Investigations</h2>
161161
<p>
@@ -165,14 +165,14 @@ <h2>Memory Investigations</h2>
165165
</p>
166166
<ol>
167167
<li>
168-
&nbsp;<a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/9-net-memory-investigation-basics-of-gc-heap-snapshots">Basics of GC Heap Snapshots</a> (9 min) - The first
168+
&nbsp;<a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/9-net-memory-investigation-basics-of-gc-heap-snapshots">Basics of GC Heap Snapshots</a> (9 min) - The first
169169
step in doing&nbsp; .NET Memory investigation is first determine whether .NET
170170
Memory is your problem and take a heap snapshot.&nbsp;&nbsp; This tutorial shows
171171
you how to determine how much of your process&#39;s memory is GC heap and (if that
172172
is your problem) shows you how to take a snapshot of the GC heap.&nbsp;
173173
</li>
174-
<li><a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/tutorial-10-investigating-net-heap-memory-leaks-part1-collecting-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>
175-
<li><a href="https://docs.microsoft.com/en-us/shows/perfview-tutorial/tutorial-11-investigating-net-heap-memory-leaks-part2-analyzing-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>
174+
<li><a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/tutorial-10-investigating-net-heap-memory-leaks-part1-collecting-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>
175+
<li><a href="https://learn.microsoft.com/en-us/shows/perfview-tutorial/tutorial-11-investigating-net-heap-memory-leaks-part2-analyzing-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>
176176
</ol>
177177

178178
</body>

0 commit comments

Comments
 (0)