More on using EventSources with XPERF or WPR

In my introduction to EventSource blog, I showed a simple example of using EventSource to log ETW information. In that example I used the PerfView tool to collect and display the information.   It is also possible to do the same using the XPERF or WPR tools (part of the WIndows Performance Toolkit) and in this…

15

Exploring EventSource Activity (correlation and causation) Features

In this post we will be going over the New EventSource Activity support introduced in .NET version 4.6.   If you use EventSource in a server (concurrent) environment, you will want to read this post. What are Activities? If you have been using EventSource in sever scenarios you probably have wanted what I am calling ‘Activity’ support.   …

15

Next Version of PerfView has been released!

For those that don’t know, PerfView is a performance profiling tool that can be used to diagnose a broad range of performance problems.      We released a free copy of this to the web back in January.    Well, it has been over 6 months since that release and I have been busy adding various capabilities to…

15

Analysis of Reader-Writer lock

In my last post I posted readerWriterDemo.cs which is an implementation of a Reader-Writer lock.   I held it up as an example of good design of a concurrent data structure.   I want to now show you a bit of what my thinking was when it was designed and what the important properties it has.   Before you…

14

Measuring managed code quickly and easiliy: CodeTimers

My performance blog entries to date have been ‘foundational’.  In entries so far, I talk about how to use Visual Studio to look at the native code generated for the runtime.   With this foundation, we can now start exploring what the native code for managed code looks like and what optimzations the runtime does on…

14

Windows high speed logging: ETW in C#/.NET using System.Diagnostics.Tracing.EventSource

In my introduction to EventSource  posting and my posting of the EventSource specification, I tried to give you the ‘quick start’ for using EventSource to generate ETW events from C# (or any .NET language).    In this posting I would like to back a bit and motivate the ‘why’ behind event tracing for windows (ETW) and EventSource in particular. …

13

Digging into interface calls in the .NET Framework: Stub-based dispatch.

In my last blog, I demonstrated how to use the .NET SOS.DLL extension DLL in the Visual Studio.    In this entry I will use the capabilities of this extension DLL to dig into the way the .NET framework handles interface dispatch.  As with all my blog entries, I hope that after reading this you will…

12

Digging deeper into managed code with Visual Studio: Using SOS

I have let my blog laps for too long.    I am back to blogging.   I realized reciently that we have simply not written down many interesting facts about how the runtime actually works.  I want to fix this.   Coming up in future blogs I am going to be doing a bit of a ‘architectural overview’ which…

11

Just For Fun: Instructions for building a Marble Tree Using a Laser Cutter.

Over 15 years ago I was visiting some relatives and they showed me a toy that they had bought called a marble tree.   The picture on the right is not that toy I saw, but gives you an idea of what I saw.    The beauty of this toy is that any human being from about age 1 on pretty much knows…

10

MeasureIt Update: Tool for doing MicroBenchmarks for .NET

Almost a year ago now I wrote part 1 and part 2 of a MSDN article entitled ‘Measure Early and Measure Often for Good Performance’.  In this article I argued that if you want to design high performance applications you need to be measuring performance early and often in the design process.   To help doing…

9