Your friendly neighborhood ops troll is back!
Here’s a good article on why looking at %CPU (CPU utilization) is a misleading metric when using tools such as top. The normal inclination is to thing that a 90% utilization report means the CPU actually means it’s being used 90% of the time, right? You already know from the title I’m gonna tell you that’s wrong.
The tl;dr is that there is a bottleneck accessing main memory, which results in a lot of cycles that applications spend waiting on memory, falsely reporting that the CPU is “utilized”.
IPC (instructions per cycle) is a more accurate measurement of utilization and this article points to a few good examples of how to check that and tune apps that might be CPU-bound or memory-bound.