Presentation: PerfView: The Ultimate .NET Performance Tool
Share this on:
What You’ll Learn
-
Hear about PerfView, an open source tool for .NET performance diagnosis in production environments.
-
Learn how to use PerfView through examples.
Abstract
PerfView is a free, standalone, small-impact tool produced by the CLR team that helps in performance investigations. It offers several unique features for understanding large performance reports, such as sampling, pattern folding, differencing, and grouping. You can use it for ETW analysis on large-scale Windows servers as well as low-end client devices and phones -- and you can even use it as a general-purpose analysis tool for Linux performance traces. In this session we will use PerfView to systematically measure and improve CPU time, wall-clock time, and memory usage (yes, PerfView can solve memory leaks as well!).
What's the primary focus of your talk?
I traditionally have been a Windows person. My first year as a developer was C++ on Windows. But at some point I became a performance diagnostic generalist. I do a mix of work that could be a Linux system, even embedded Linux, it could be .NET running on Windows, could be web applications, could be JVM. I don't deal with specific languages so much although I do still write code. I'm more interested in how the runtime works, in the interactions with the operating system, systems level stuff. That's where I find most interesting cases.
Can you tell us a bit about the motivation for your talk?
A lot of Windows developers only have in their toolbox some very expensive and not really 'wieldy' performance diagnostic tools. You could maybe use them in the development environment while you're writing the code, maybe even in load testing but not so much in production. A lot of the Windows profilers and the .NET profilers slow you down a lot, and they have really complicated installations required or they are very invasive. There's a bunch of problems which make them irrelevant for production even if it's a controlled production environment, and even worse if it is partially under your control, like a PaaS cloud offering where you're not really just running arbitrary code on the target machine. And this is where PerfView comes in. It's an open source tool. It was originally developed inside Microsoft for their own use troubleshooting and diagnosing issues with the .NET runtime itself and with various applications they had. One of the first users was the Bing team, and they have used it extensively until this day. But now it's a comprehensive tool for doing all kinds of performance analysis on Windows. It has a strong .NET focus but you can use it for C++ applications as well. What’s more, you can put PerfView in a production environment and grab data and move it back and forth.
How are you going to address the tool in your talk?
I've been doing .NET performance training for a while, so I have a huge collection of demos and labs which I’m going to use. Examples include a desktop application that has a non-responsive UI that we can troubleshoot using PerfView, a server application which is having trouble keeping up with requests because it's allocating a lot of memory and causing lots of garbage collection. I'll show how to set up continuous monitoring so that you can have something running in the background and collecting lightweight data all the time. When something suspicious happens, like a CPU spike or a particularly long request, then you automatically flush the events you collected so far, and you just keep recording them to memory so on disk you only get data that you want to analyze. There's about 5 or 6 examples like that that I'll be going through and showing the power of PerfView.
What you want someone to be able to leave your talk with?
I just want them to be using PerfView in their day job. It's really almost the only option for production environments and for systems that are not entirely under your control. Even in development, it has a bunch of features like one thing we will be showing, the heap memory snapshots. Of course, you can take a heap snapshot of a process and analyze it with numerous other tools. But PerfView has its own system for collecting snapshots, which is a lot more compact, so you can generate snapshots of 50 GB heaps, which is really hard with almost any other tool. I just want people to know that this thing is available, it's widely tested, it's a Microsoft product on one hand but it's very rapidly evolving, so it's something that they should be using for a lot of performance problems they run into.
Similar Talks
Tracks
-
Microservices/ Serverless: Patterns and Practices
Stories of success and failure building modern service and function-based applications, including event sourcing, reactive, decomposition, & more.
-
Distributed Stateful Systems
Architecting and leveraging NoSQL revisitied
-
Evolving Java and the JVM: Mobile, Micro and Modular
Although the Java language is holding strong as a developer favourite, new languages and paradigms are being embraced on JVM.
-
The Practice & Frontiers of AI
Learn about machine learning in practice and on the horizon
-
Operating Systems: LinuxKit, Unikernels, & Beyond
Applied, practical, & real-world deep-dive into industry adoption of OS, containers and virtualisation, including Linux on Windows, LinuxKit, and Unikernels
-
Stream Processing in the Modern Age
Compelling applications of stream processing & recent advances in the field
-
Leading Edge Backend Languages
Code the future! How cutting-edge programming languages and their more-established forerunners can help solve today and tomorrow’s server-side technical problems.
-
Modern CS in the Real World
Applied trends in Computer Science that are likely to affect Software Engineers today.
-
DevEx: The Next Evolution of DevOps
Removing friction from the developer experience.
-
Bare Knuckle Performance
Killing latency and getting the most out of your hardware
-
Tech Ethics in Action
Learning from the experiences of real-world companies driving technology decisions from ethics as much as technology.
-
Security: Red XOR Blue Team
Security from the defender's AND the attacker's point of view
-
Architecting for Failure
If you're not architecting for failure you're heading for failure
-
Architectures You've Always Wondered About
Topics like next-gen architecture mixed with applied use cases found in today's large-scale systems, self-driving cars, network routing, scale, robotics, cloud deployments, and more.
-
Observability: Logging, Alerting and Tracing
Observability in modern large distributed computer systems
-
Speaker AMAs (Ask Me Anything)
-
Building Great Engineering Cultures & Organizations
Stories of cultural change in organizations
-
Speaker AMAs (Ask Me Anything)