Account for the time a program spends not running, well enough to say which of the three usual causes you have, to read the system's own view of your process, and to stop guessing at performance from the inside of your code
What Happens While You Wait

A program spends most of its life waiting, and nothing inside the program can see why. This course covers what the operating system is doing in that gap: scheduling, the call across the boundary, waiting for a device, and how to watch it.
8 lessons, written and corrected before you arrived. Reading them here needs no account. The first reads the whole way through; the others open and then stop, because a page nobody owns cannot tell who is reading it. Starting the course gives you your own copy, where every idea has problems standing under it and you can ask about any sentence.