Process Explorer and w3wp.exe in ASP.NET

Process Explorer checks .NET application performance. It reports the performance and runtime statistics of ASP.NET web applications—found in the w3wp.exe process. Process Explorer provides a way to get an overview of your .NET application's performance without changing its runtime in any way and without restarting it.

Process Explorer performance graphs for ASP.NET

This article demonstrates the Process Explorer tool on an ASP.NET website.

Performance monitoring

The Process Explorer provides a greater level of performance and activity monitoring for processing than does the Task Manager built into Windows Server operating systems. You can use Process Explorer to monitor the CPU usage over time for a certain process, how much memory it allocates and how much bandwidth your application uses, and for .NET programs, how much memory is allocated and garbage collected, and how many methods are JIT compiled and at what cost.

Zero CPU usage and I/O activity. Looking at the screenshot at the top of this article, you can see that the w3wp.exe process being monitored is not using much CPU, 92.4 MB of RAM are allocated to the process, and there is some I/O Bytes History, which reflects frequent Internet accesses to the website. The peak on the I/O Bytes History is about 36.7 KB for that access. Memory usage is flat.

Process Explorer CPU screenshot

Screenshot overview. This screenshot shows another tab on the Process Explorer application view for this process. It shows the Kernel Time, the User Time, the Total Time, and the Context (which reports context switches that occur). Kernel Time reflects time spent in lower-level operating system functions, while User Time more closely reflects time spent that was loaded from the process EXE itself.

Read Delta and Write Delta. This w3wp.exe process is not accessing the disk for reading or writing, so the Read Delta and Write Delta are zero. Because the memory on the server is so much faster than the disk, you can achieve a substantial performance improvement by storing your entire web site in memory. Hard disks are sometimes around one million times slower to access than the RAM.

Page Fault Delta. The screenshot shows that the Page Fault Delta for the application is zero, which means no memory is being read from the disk. If this figure is non-zero, the disk may be being accessed to increase the memory available to the application.

Physical Memory. The screenshot also reports the Physical Memory section which indicates the Working Set is around 93.4 MB. This is very close to the figure reported in the screenshot with the graph at the top. Because ASP.NET applications are garbage-collected, the figures shown on this will often be higher than the size of memory rooted in the managed heap. This is because garbage collections occur and this will not usually reduce the figures in this graph.

.NET processes

Just-in-time compiler (JIT)

Here we note that the Process Explorer application also contains a useful tab for monitoring statistics for .NET processes. If you are using ASP.NET and are exploring the w3wp.exe process, there should be a .NET tab. In this, you can see how many methods were compiled by the JIT and how long this took. You can also see how many garbage collections have occurred. If your applications inefficient with memory, you will see many garbage collections and this be a substantial percentage of the execution time.

Summary

ASP.NET web programming framework

Here we looked at the Process Explorer tool and used it on an ASP.NET application running inside a w3wp.exe process. We saw how the CPU usage history and memory usage can be monitored and how you can determine disk access rates and where page faults are occurring often. Process Explorer provides a free and useful way to get an overall view of the performance of an ASP.NET site without changing its execution or compilation in any way.

Process Explorer .NET Framework Info
.NET