I am trying to understand the CPU utilization report from running sar -u 1 3. On my system, it says ~50% utilization. I am surprised because ours is a high performance software where we create lots of threads. So I am thinking that context switches and cache misses could be the reason why we're seeing low CPU utilization numbers.
Question is, if a thread tries to read data and if that data has to be fetched from memory, is the thread considered to be "utilizing" the CPU while waiting for the data or not?