DCSIMG
Video Recording of My Developers Academy Lecture (DEV409: Psychic Performance and Debugging 101) - All Your Base Are Belong To Us

All Your Base Are Belong To Us

Mostly .NET internals and other kinds of gory details

Video Recording of My Developers Academy Lecture (DEV409: Psychic Performance and Debugging 101)

(This is going to be my last post about the DevAcademy II; I promise.)

The video recording of my Developers Academy II lecture (DEV409: Psychic Performance and Debugging 101, download the slides and demos too) is now available.  If you tried accessing it during the last two days, there was something wrong with the streaming, but it works now (I'm watching it as I'm writing this post).  There are several funny quotes, such as "The last thing I prepared for you is an application crash; it's a good way to end the day - a crash."

By the way, thank you all one last time for attending, and thanks for choosing to read this and watch my video.

A brief summary of what you'll see in the video (each supported by a practical demonstration, the tools and process to diagnose the problem, the necessary theory to understand the issue, and a practical solution):

  1. Diagnosing a .NET memory leak
  2. Diagnosing GC trouble which causes the application to spend too much time in GC
  3. Diagnosing an application hang caused by an orphaned lock
  4. Explaining a cache collision scenario introduced by a single field in data structure
  5. Diagnosing excessive contention and using a lock-free queue to solve it
  6. Diagnosing an application crash using WinDbg and production-debugging breakpoints

I also recommend you take a look at the matrix of all lecture recordings.  I will certainly be watching most of them in the following couple of days.

The recording quality is terrible (the video is bad; audio is all right), but on LCD screens it's quite possible to see what's going on (especially since the WinDbg sessions are black on a white background, even though the fonts are smeared a little bit).

image

Using the .foreach debugger command to display the GC roots of all objects of a particular type.

image

Setting a breakpoint in the CLR before GC occurs, to display the contents of generation 0 (using the community debugging extension SOSEX).

image

Explaining about the evolution of locking in computer algorithms, as an introduction for wait-free data structures (comparing a lock-free queue to a queue that uses a .NET monitor for synchronization).

image

Using the Windows Performance Monitor to monitor the demo application for contention, memory usage, CPU usage and other parameters.  Note the DevAcademy.OrderProcessing performance counters - these are custom counters exposed by the application.

(By the way, it's in Hebrew.  You will still be able to see the demonstrations and the various WinDbg commands if you don't understand Hebrew, but there are lots of audio explanations as to what's going on ...)

Comments

All Your Base Are Belong To Us said:

[Updated: Dec 19] If you missed the lecture, you can always tune to the video recording . A few hours

# December 19, 2007 12:43 AM

Avi Pinto said:

שמעתי מחברים שהייתה הרצאה מעולה.

חבל שלא ניתן להוריד אותה,

הstreaming הזה די מעיק, ולא ניתן לשמוע בדרכים.

אם תוכל לפרסם לינק חלופי להורדה ישירה זה יהיה מצויין

# December 20, 2007 11:47 PM

All Your Base Are Belong To Us said:

TechEd Israel 2008 is going to take place on April 6-8, in Eilat (as usual). By the way, if you haven't

# February 29, 2008 7:00 PM

All Your Base Are Belong To Us said:

On March 10 Alik Levin and I presented at the Microsoft Performance Open House in Raanana. Alik's

# March 14, 2008 9:17 AM

All Your Base Are Belong To Us said:

My TechEd Eilat 2008 session titled Next Generation Production Debugging (webcast promo link) will be

# March 30, 2008 11:31 PM

All Your Base Are Belong To Us said:

Finalization is one of the most complicated and obscure areas of .NET. Most developers don't actually

# April 26, 2008 5:04 PM
Leave a Comment

(required) 

(required) 

(optional)

(required) 


Enter the numbers above: