PerfView Version 1.9 Released to the Web


 

Today I have updated the PerfView Download Site, to version 1.9 of the program.   In particular this version has a fix for a symbol resolution on data collected from older (e.g. Win7 OSes) machine that I mentioned in a previous blog post.    It also has a number of other notable features

  • Generalization of Thread Time views support arbitrary requests demarked by user defined Start-Stop events
  • Significantly improved support for Async and Parallel activities in the ‘Thread Time’ Views
  • Can display file disk usage in the stack view using the Size -> DirectorySize option
  • Supports reading a very simple *.PerfView.XML or *.PerfView.JSON file, which enable reading data from ‘foreign’ profilers.
  • Support for Windows 10 self describing ETW events
  • Support for EventSource causality tracking
  • Support for V4.6.2 .NET Runtimes that line number level on NGEN images (e.g. the framework) even if IL PDBS are not available when NGEN images were created

Some of these features need a bit of a ‘walk through’ to show how useful they are, so I will be blogging about that in the days and weeks ahead.  

In particular you can now view data that was collected on a Linux machine or consume data from other ‘foreign’ profilers (or other hierarchical data sources).  

If you are new to PerfView the easiest way to get going is to simply download it (you are only a few clicks away).   Or for the less adventurous, you can watch some of the PerfView videos on channel 9.  

Vance

 

Comments (16)

  1. Alois Kraus says:

    That are great additions to PerfView. How does the NGEN pdb support exactly work? Does this mean I can get from mscorlib.ni.dll the file line infos if the public pdb with full source and line infos is is available?

  2. The NGEN support is really support in .NET V4.6.1 (it may be V4.6.2, I have not confirmed carefully).   Basically given the correct version of .NET when you do a NGEN createPdb, you no longer need the /lines info because it always dumps a nativecode->IL map into the NGEN image.  Thus while and NGEN pdb does not contain line information it contains enough information so that later line information can be used.    Thus you DON'T need the IL PDB at the time the NGEN PDB is generated anymore to get line level information.

    Thus you can collect data on any machine, and in theory the resulting .ETL.ZIP file contains enough information that you can get line information (that is Goto Source works), on any NGEN code (and in particular the .NET class library which is NGENed by default).  

    The upshost of this is that Goto Source works more often on framework code.  

    There is of course a big caveat that fetching source does tend to be fragile in other ways beside what was described above, but this was one of the major reasons GotoSource on framework could would fail.

  3. Fabio says:

    Is it possible use Eventsource on windows 10 (UAP)? My app doesn't compile with error "Windows Runtime class 'xxxxxxxx' has an invalid base type, 'System.Diagnostics.Tracing.EventSource'.  Classes must derive either from System.Object or from a composable Windows Runtime class….

    Thanks

  4. @Fabio.  Please don't use the Nuget package on UWP apps as Andre advised.  UWP already has the latest, and your app will simply be bigger and slower (and there are possible sublte bugs since we don't test that configuration).  

    Buyt to answer your question, yes, EventSource exists in the .NET RUntime used by UWP apps (System.Diagnostics.Tracing.EventSource).   However it sounds like you are trying to extend it using native code (C++?).   That does not work (as you found out).  It has nothing to do with EventSource per-se,.

    EventSource is really for when you are in C# or VB.  For native languages the suggestion is to use TraceLogging (see msdn.microsoft.com/…/dn904636(v=vs.85).aspx)

    1. ok, thanks. I never coded an UWP app, so I was not aware of it.

  5. Fabio says:

    @Vance Morrison Thanks for the link. I understood my error.

    @Andre.Ziegler Thanks for sugestion

  6. stejgmc says:

    Hi, not sure where to report bugs, so I’m pasting it here: https://social.msdn.microsoft.com/Forums/exchange/en-us/b177d1db-553b-464c-be4d-2f6dd3a746fc/perfview-bug-when-selecting-time-range?forum=wptk_v4 It’s bug about selected time range. Quite annoying when working a lot with time ranges because it resets quite often. Any possibility to fix it in future version(s)?

  7. Vladimir says:

    Hi Vance,

    I use the following command to collect GC events:

    perfview /GCCollectOnly /NoNGenRundown /AcceptEULA /nogui /MaxCollectSec:600 collect

    Could you please suggest how to add stacktraces for GC event while keeping the size of the trace relatively small.

    Thank you.

  8. Chris Gomez says:

    Hi Vance,

    I’m using this latest version of PerfView on Windows Server 2008 R2. I have been trying to figure out the command line to use to stop an error message that comes up when analyzing the output that thousands of events were lost.

    This is the command line I have been using
    perfview collect /NoGui /NoNGenRundown /Circular:0

    When I open the processed file in PerfView, I get the message:
    WARNING: There were 28080 lost events in the trace. Some analysis might be invalid. Use /InMemoryCircularBuffer to avoid this in future traces.

    I’ve tried adding just that one switch to the previous command line, I can tell that PerfView seems to stop collecting User events and when I stop the trace, it errors out quickly saying:
    “Error: System Tracing is only supported on Windows 8 and above.”

    My goal is to get collection started, trigger a Windows service to complete a process that takes about 20 minutes and look at the data. In the future I may be able to let PerfView run continuously and only log out the buffer when certain things happen, but I’m not at that point yet.

    I tried using earlier versions of PerfView, but they generally advised to set the BufferSize switch, but I ran into the same issues.

  9. ranta says:

    On the PerfView 1.9 download page, the Additional Information section says “For questions and/or discussion please visit the CLR Developer Tools Forum”. However, MSDN Forums nowadays classifies that forum (netfxtoolsdev) under “Archived Forums A-B”, and the most recent post is from January 2013. Is the advice on the download page still valid or should some other forum be used instead?

  10. Gustavo says:

    Any chance of getting -InMemoryCircularBuffer working in Win7 / 2008R2 ?
    Is it even possible with win 6.1 ETW infrastructure? (I’ve not tested WPR yet)

    I’m getting this in win7 :

    [EXECUTING: PerfView collect /nogui -InMemoryCircularBuffer -MaxCollectSec:5]
    .
    .
    .
    Error stopping Kernel session: System Tracing is only supported on Windows 8 and above.
    Aborting tracing for sessions ‘NT Kernel Logger’ and ‘PerfViewSession’.

    Strange, it tries to stop and yet it never logged a start like it does when you do not try to use a memory circular buffer :
    [Kernel Log: C:\bin\PerfView\PerfViewData.kernel.etl]
    [User mode Log: C:\bin\PerfView\PerfViewData.etl]

    The point is to use it in win7 / 2008R2 in “in memory” flight recorder mode so as to not use disk at all in the first part of the capture (of course after stop it it must save to disk).

    1. Gustavo says:

      I’ve tested WPRUI ( from ADK 8.1) in Win7 and it works with in memory circular buffer, so I don’t think it needs windows 8 for that. Why PerfView does ?

  11. Joezzx says:

    Hi Vance, Thanks for your perfview tool, it’s very helpful for my performance tuning work. but I found the version 1.9 will throw System.IO.IOException when wrote etl to zip file. the logs as follows:

    *** NGEN CREATEPDB returns: 0
    Found NGEN pdb d:\Users\JOE\AppData\Local\Temp\symbols\System.Core.ni.pdb\cc5a18de56b1ba18426a9607afab2be21\System.Core.ni.pdb
    Found NGEN pdb d:\Users\JOE\AppData\Local\Temp\symbols\System.ni.pdb\9a2715c05cb7bc5d06a7cc5801c474ca1\System.ni.pdb
    Found NGEN pdb d:\Users\JOE\AppData\Local\Temp\symbols\mscorlib.ni.pdbb312f3f14daccc8bdc79fdcd75a45e21\mscorlib.ni.pdb
    Found NGEN pdb d:\Users\JOE\AppData\Local\Temp\symbols\System.Net.Http.ni.pdb\c2a2e2c6297c71a9d5ea51e48a65d1de1\System.Net.Http.ni.pdb
    Generating NGEN Pdbs took 36.1 sec
    Moving \\perf\test2.etl.new to \\perf\test2.etl
    Deleting temp file
    Merge took 38.287 sec.
    Merge output file \\perf\test2.etl
    [Zipping ETL file \\perf\test2.etl]
    [Writing 13 PDBS to Zip file]

  12. Hi Vance. sorry for asking about this here (CLR Developer Tools Forum is “retired” now).
    I tried with this perfect tool on my PC and some other ones (Windows Server 2012) and was really impressed.
    Problem is that it does not work on exact server (it’s Windows Server 2012 as well) where i need to debug/solve CPU issue.
    I run “tutorial” > open .zip > open CPU Stacks > open “tutorial” or any other process > and see only one line like :
    “ROOT NaN 0 NaN 0 0.00 Infinity Infinity”.
    Do you or someone else know what is my problem here ?

  13. tecnologo says:

    the download link is broken 🙁

Skip to main content