Discover PerfView Tutorial (Audio) - Channel 9
PerfView Tutorial (Audio) - Channel 9

16 Episodes
Reverse
This video is about doing a wall clock time investigation of ASP.NET scenarios using the PerfView tool.  It is best to watch the video using one of the high quality links on the right so the text is readable.  If you have not already watched the video on wall clock time basics, you should do that first (as well as the even more fundamental videos it will refer you to).   You may also be interested in the video on wall clock time for parallel/async programs. As explained video on the basics wall clock time investigations, the key to doing such an investigation is focusing in on a 'critical path' of interest.   For ASP.NET scenarios the most obvious such path is the time it takes to respond to any particular request.   PerfView supports this idea by creating the 'ASP.NET Thread Time view', by identifying the snippets of time on individual threads that represent work to respond to the request, and associating this cost to a particular request (and further grouping requests by URL.   This allows you to quickly segregate 'uninteresting' time where threads are simply waiting for work from the 'important' time when it is on the critical path to respond to a request.  The result that it is very straightforward to drill into performance problems on any particular request. There is a companion perfView blog entries that you may be interested in.   In particular there is a ZIP file of source code and data used in this tutorial, so that you can explore this data and 'follow along' yourself with what was done in this video.  To use the zip file simply open it, and drag the directory inside to your desktop (or other location).   The file contains an HelloWorld.ASPX file (the source code, just view in notepad) as well as the AspNetHelloWorld.ETL.ZIP file (The data file used in this video)   You don't need to unzip this file, simply open it in PerfView.  You may be interested in the entire PerfView Tutorial video series,   
This is the second of a set of video tutorials on how to do wall clock time investigations with PerfView.   It is best to watch the video using one of the high quality links on the right so the text is readable.  If you have not already watched the video on wall clock time basics, you should do that first (as well as the even more fundamental videos it will refer you to).  In the first video the demo was the simplest case, a sequential program with both disk and CPU time.  In this video we discuss the more complex case when there are several threads doing concurrent activity that you wish to analyze.  The key PerfView feature that helps in cases like these is the 'Thread Time (with Tasks)', but only works if you use the System.Diagnostics.Threading.Tasks.Task class to spawn the concurrent activities.  In this view if one Task spawns another, the time associated with the subtask is attributed to the point at which the new Task was created.  Thus even though the work might be done on another thread, the cost is 'rolled up' based on the code that requested that that action be done.    This allows concurrent applications to be analyzed like the simple sequential case (where the cost of calling a routine is attributed to the routine that called it).   There is a companion perfView blog entries that you may be interested in.   In particular there is a ZIP file of source code and data used in this tutorial, so that you can explore this data and 'follow along' yourself with what was done in this video.  To use the zip file simply open it, and drag the directory inside to your desktop (or other location).   The file contains the EXE and PDB (symbol file), the complete VS2012 source (in the src directory) as well as the BlockedTimeParallel.ETL.ZIP file (The data file used in this video)   You don't need to unzip this file, simply open it in PerfView.  You may be interested in the entire PerfView Tutorial video series,   
This is the first of a set of video tutorials on how to do wall clock time investigations with PerfView.   It is best to watch the video using one of the high quality links on the right so the text is readable.  Wall clock time is often the most interesting metric because it is the time that the end user sees your app taking.   Unfortunately wall clock time investigations are more complex because frankly there are more 'players' (disk and network as well as CPU, page faulting, waiting on threads and processes, concurrent activity and resource contention).  Thus it does requires more thought and care on your part perform a blocked time investigation.In this tutorial we take the simplest case (a sequential program that scans the file system, which requires both CPU and DISK), to cover the basics of wall clock time investigation.   This tutorial assumes you have already seen the video on CPU analysis as well as the videos on resolving symbols and using the stack viewer.   Frankly taking a quick tour of the whole PerfView Tutorial Series, would not hurt.   There is a companion perfView blog entries that you may be interested in.   In particular there is a ZIP file of source code and data used in this tutorial, so that you can explore this data and 'follow along' yourself with what was done in this video.   To use the zip file simply open it, and drag the directory inside to your desktop (or other location).   The file contains the EXE and PDB (symbol file), the complete VS2012 source (in the src directory) as well as the BlockedTimeSync.ETL.ZIP file (The data file used in this video)   You don't need to unzip this file, simply open it in PerfView.  Other videos on wall clock time analysis includeLeveraging Tasks make sense of Parallel/Asynchronous programs Investigating Wall Clock Response Time of ASP.NET scenarios which I talk about in this blog entry.  
This video is the second in a two-part video on investigating a GC memory 'leak'.   This video discusses a real world memory leak that was found and corrected in PerfView itself.   If you have not watched part one, you should do so now.   This second part assumes that we have taken two heap snapshots and now wish to investigate the differences between the two snapshots.   We show how to do a diff, and explain the theory (negating the sample of the baseline), and how trivial it is to find what 'path of referneces' are keeping the objects alive.  Armed with this information we disover that some of growth is 'by design' (it is part of a useful cache), however some of the growh is an unfortunate side effect of other caching.   We discuss how we fixed this problem and then validated that the fix actually worked.    Aftet watching this  if you have not already done so, you should watch the video on GC Memory Investigation Basics. You may also be interested in the whole PerfView Tutorial Series. 
This video is the first in a two-part video on investigating a GC memory 'leak'.   This video discusses a real world memory leak that was found and corrected in PerfView itself.   This first part discusses how you likely found the leak (by observing memory growth using TaskManager or a simmiar utility), and that some care is needed because not all memory growth is a leadk.   The hallmark of a leak is unbounded growth when repeating an operation.  Also discussed is the  the basic theory of taking two snapshots, one as a baseline, and another after doing an operation that should return the application to the same memory configuration.   Aftet watching this you should watch part two of this video.   If you have not already done so, you should watch the video on GC Memory Investigation Basics. You may also be interested in the whole PerfView Tutorial Series. 
This video describes the basic information you need to start a NET memory investigation and in particular understand the data shown you in a .NET GC snapshot. 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.    For large GC heaps, PerfView does not dump every object, but instead samples the heap (but goes to great lengths to insure that sample is representative).     This video describes this sampling and how to learn more about it. After watching this video you should follow up with the tutorial on investigating heap minemory leaks with PerfView.  You may also be interested in the whole PerfView Tutorial Series.   
It may be that the ASP.NET events discussed in the previous video are diagnosting the performance of you service.  However it not (or you are not using ASP.NET), you will want to log your own ETW events.   This video shows you how easy it is to do this from C# by using a V4.5 Runtime class called System.Diagnostics.Tracing.EventSource (there is also a stand alone version for V3.5 or V4.0 runtimes).   The video goes through the process end-to-end from creating the C# method to do the logging, through activating the logging using PerfView, and finally displaying the events in PerfView's 'events' view. It is best to watch the video using one of the high quality links on the right so the text is readable. See the companion blog entry for the demo code and stand alone EventSource DLL.  You may also be interested in the whole PerfView Tutorial Series, as well as performance related material at Vance Morrison's Performance Blog. 
In the previous video learned the basics of using the event viewer. In this video we use that knowledge in a common scenario: investigating the performance of an ASP.NET server scenario. The video discusses the ASP.NET ETW events as well important fields like the 'ContextID' field that let you quickly home in on the processing that is related to a single event. This is VERY helpful in understanding performance regressions and sporatic peformance degrades. It is best to watch the video using one of the high quality links on the right so the text is readable.The next video is on showing you how to insert your own events int the ETW stream. You may also be interested in the whole PerfView Tutorial Series, as well as performance related material at Vance Morrison's Performance Blog. 
In the first tutorial we used the 'Run' command to caputure data while an executable ran. In tutorial 2-5 we learned how to use the StackViewer to do a CPU investigation. In this tutorial we learn more about a very different view called the EventViewer that allows you to look at ALL the data in each event that is logged in cronological order. This view is especially useful for finding 'when things happen' as well as see useful side information (like process command lines, and the version of all the DLLs in use). We show how to filter by event name, process, time range and event text as well as show to display only the columns that you are interested in. It is best to watch the video using one of the high quality links on the right so the text is readable. The next video is on applying the Event viewer to investigating an ASP.NET scenario. You may also be interested in the whole PerfView Tutorial Series, as well as performance related material at Vance Morrison's Performance Blog. 
In the first tutorial we used the 'Run' command to caputure data while an executable ran.   However for server scenarios you simply want to explicitly state when to start and stop data collection.   It is also likely that you will need to ask someone else (e.g. operations staff) to collect the data for you and send the data for 'offline' analysis.   This video shows you the support PerfView has for these server style scenarios.   It is best to watch the video using one of the high quality links on the right so the text is readable.  You may also be interested in the whole PerfView Tutorial Series. 
This is the fifth in a series of video tutorials on how to use the PerfView profiling tool. It is best to watch the video using one of the high quality links on the right so the text is readable. This tutoral is on PerfView's 'Drill Into' feature, which allows you to selectively ungroup a set of samples in isolation, so you can understand just that part in more detail.  You may wish to also to to the first tutorial on data collection or the second tutoral on data analysis if you have not already done so. The PerfView tool is a free Windows performance tool developed by the Microsoft .NET Runtime Performance team for investigating both managed can unmanaged performance problems. If you are having a performance problem, especially if it is a .NET application, it is hard to overestimate the value of this tool.You can get the PerfView tool (for free) at the Microsoft Download center. (bing search on 'PerfView download'). PerfView consists of a single XCOPYable EXE so it is easy to simply 'try out'. You can literally open the .ZIP file, and double click on the .EXE inside to launch it and then follow along with the video tutorial. Ultimately you will want to copy this file out of the ZIP file (e.g. drag it to the desktop) to make it easier to launch. 
This is the fourth in a series of video tutorials on how to use the PerfView profiling tool.   It is best to watch the video using one of the high quality links on the right so the text is readable.   This tutoral is on PerfView's grouping and folding operators, which are essential to finding the semantically meaninful operation (the forest) in the mounds of data collected (the trees).   You may wish to also to to the first tutorial on data collection or the second tutoral on data analysis if you have not already done so.   The next tutorial is on the 'Drill-Into' feature that lets you isolate and zoom into a performance issue.  The PerfView tool is a free Windows performance tool developed by the Microsoft .NET Runtime Performance team for investigating both managed can unmanaged performance problems. If you are having a performance problem, especially if it is a .NET application, it is hard to overestimate the value of this tool.You can get the PerfView tool (for free) at the Microsoft Download center. (bing search on 'PerfView download'). PerfView consists of a single XCOPYable EXE so it is easy to simply 'try out'. You can literally open the .ZIP file, and double click on the .EXE inside to launch it and then follow along with the video tutorial. Ultimately you will want to copy this file out of the ZIP file (e.g. drag it to the desktop) to make it easier to launch. 
This is the third in a series of video tutorials on how to use the PerfView profiling tool.   It is best to watch the video using one of the high quality links on the right so the text is readable.   A big part of an effective performance investigation is getting symbolic information (method names) for the parts of the program that are of interest to you.  This tutorial describes what you need to know to insure getting this information is not a stumbling block.   You may wish to also to to the first tutorial on data collection or the second tutoral on data analysis if you have not already done so.   The next tutorial is on the powerful grouping and folding operations PerfView supplies.  The PerfView tool is a free Windows performance tool developed by the Microsoft .NET Runtime Performance team for investigating both managed can unmanaged performance problems. If you are having a performance problem, especially if it is a .NET application, it is hard to overestimate the value of this tool.You can get the PerfView tool (for free) at the Microsoft Download center. (bing search on 'PerfView download'). PerfView consists of a single XCOPYable EXE so it is easy to simply 'try out'. You can literally open the .ZIP file, and double click on the .EXE inside to launch it and then follow along with the video tutorial. Ultimately you will want to copy this file out of the ZIP file (e.g. drag it to the desktop) to make it easier to launch. 
This is the second of a series of video tutorials on how to use the PerfView profiling tool.  This tutorial assumes you have watch the first tutorial on collecting data.   It is best to watch the video using one of the high quality links on the right so the text is readable. The next tutoral will discuss the important topic of symbol resolution.The PerfView tool is a free Windows performance tool developed by the Microsoft .NET Runtime Performance team for investigating both managed can unmanaged performance problems. If you are having a performance problem, especially if it is a .NET application, it is hard to overestimate the value of this tool.You can get the PerfView tool (for free) at the Microsoft Download center. (bing search on 'PerfView download'). PerfView consists of a single XCOPYable EXE so it is easy to simply 'try out'. You can literally open the .ZIP file, and double click on the .EXE inside to launch it and then follow along with the video tutorial. Ultimately you will want to copy this file out of the ZIP file (e.g. drag it to the desktop) to make it easier to launch. 
This is the first of a series of video tutorials on how to use the PerfView profiling tool to gather data for a CPU performance data on a simple .NET program.    It is best to watch the video using one of the high quality links on the right so the text is readable.  If you don't have PerfView already see tutorial 0: Getting PerfView to see just how easy it is to get it.   After watching this eee the next tutoral for how to analyze this data or browse the whole series.The PerfView tool is a free Windows performance tool developed by the Microsoft .NET Runtime Performance  team for investigating both managed can unmanaged performance problems.   If you are having a performance problem, especially if it is a .NET application, it is hard to overestimate the value of this tool.You can get the PerfView tool (for free) at the Microsoft Download center.  (bing search on 'PerfView download').   PerfView consists of a single XCOPYable EXE so it is easy to simply 'try out'.   You can literally open the .ZIP file, and double click on the .EXE inside to launch it and then follow along with the video tutorial.   Ultimately you will want to copy this file out of the ZIP file (e.g. drag it to the desktop) to make it easier to launch. 
If you have an internet connection you are just a few clicks away from installing perfView.   This video shows you just how easy it is.   It is best to watch the video using one of the high quality links on the right so the text is readable.   After downloading PerfView start with Tutorial 1: Collecting Data. This video assumes that you have .NET V4.0 installed.   If you run windows update, this is almost certainly the case as windows update does auto-install it.   It also assumes you are running on at least Windows Vista (e.g. Windows 7) or at least Windows 2K8.  You may also be interested in the whole PerfView Tutorial Series. 






