== Two views of CPU utilization (a realization) The traditional way to present CPU utilization in metrics dashboards and the like is as a percentage from 0 to 100. This is so common and ordinary that I wrote [[an entry on generating this from Prometheus CPU metrics PrometheusCPUStats]] without ever questioning things, and the Linux version of _top_ is sometimes mocked for showing process CPU utilizations of over 100% because it considers '100%' to be 'all of one CPU' on multi-CPU machines (which is to say pretty much all of them these days). But recently it struck me that this view of CPU utilization is only one of at least two ways to look at it. The customary 0% to 100% measure is really a measure of how much of the machine you're using and how much you have left. If you're at 75% CPU utilization, you're using three quarters the machine and have a quarter of it left (more or less). This is a perfectly fine measure and often what you care about, but it's not the only measure. Another measure is what the Linux '_top_' command tells you, which is how much CPU you're using, or to put it another way, how many CPUs you're using. How much CPU you're using is generally going to be a better view into how much work is being done by various things, without having to mentally re-scale a 0% to 100% number to account for things like how 10% of a 4-CPU machine is a lot less work being done than 10% of a 112-CPU machine. Of course 'how many CPUs are we using here' isn't a perfect measure either, unless your CPUs are uniform (ours are far from it, so 100% of a CPU on machine A may be much less actual performance than 100% of a CPU on machine B). But it's a starting point, just as the customary 0-100% of the machine is a customary starting point for how loaded down the machine is. Which starting point you want depends on what questions you're interested in asking or seeing answers for. As a pragmatic matter, people are often more worried about their machines falling over from being overloaded than they are curious about how much computation they're doing (and we're certainly no exception). This makes the 0-100% CPU utilization measure a good one to look at on a dashboard or the like, and indeed even Linux '_top_' displays overall system utilization this way (even as it displays per-process 'utilization' as how much CPU it's using). But now that I've thought of it, I'm going to keep my mind open about the 'how much CPU are we using' view too, and think about if I want to look at that at some point (and how best to visualize it).