Activity Monitor: meanings and misleadings

Activity Monitor provides many different numbers for aspects of your Mac’s performance. When all Macs were Intel, even if we couldn’t necessarily define some of them, it wasn’t hard to work out roughly what each meant. Now there are also Apple silicon Macs, some of the figures don’t quite tally across architectures. To help you understand and compare them, I’ll try to explain what I think the less obvious numbers mean.

CPU

% CPU is a rough measure of the amount of time on the CPU cores that a process has run, but isn’t a true percentage out of a hundred. It’s also misleadingly inaccurate on Apple silicon chips.

It seems to be based on the active residency of each core, that’s the percentage of processor cycles which aren’t idle, but actively processing threads owned by a given process. Thus, in a given 10 second period, if 25% of the cycles are spent processing WindowServer code, the % CPU for that period is 25%.

Total active residency is measured for each core, then added together. If your Mac’s chip has 8 cores in all, then as each can run to 100%, when all eight cores are fully active, the total % CPU comes to 800. This is complicated for Intel processors with support for hyperthreading, which adds a further 100% for each core, resulting in full % CPU rising to a maximum of 1600 for those same eight cores.

The counterpart to % CPU is that the percentage not accounted for in % CPU is spent idle. Thus, processes totalling 100% CPU on my eight-core Intel CPU mean that its cores spend 700% idle, and there’s still a total core reserve of 1500% allowing for the maximum achievable with hyperthreading.

For cores with variable frequency, no allowance is made for any change in core frequency, nor for different types of core. Although the former affects some Intel processors, both are most significant on Apple silicon. A P core with 100% active residency at a frequency of 3 GHz processes instructions at three times the rate of the same P core at 100% and a frequency of 1 GHz, yet both will be shown in Activity Monitor as being at 100% CPU. Unfortunately, Activity Monitor doesn’t provide any information on core frequency, which is only available using the command tool powermetrics.

CPU Time is the total available processing time that has been used by a process. It’s not known whether this allows for the percentage of time in active residency, but it makes no allowance for different frequencies or core types, so mustn’t be over-interpreted.

% GPU is a similarly rough measure of GPU activity. Although this should be consistent within any given Mac, it doesn’t compare well between different GPUs.

Memory

Memory use in Intel Macs refers only to main system memory, and excludes graphics memory in graphics cards. Apple silicon Macs feature Unified Memory, in which main system memory is used by CPU cores, GPUs, and other components including the neural engine, ANE. Where relevant, GPU memory use in Apple silicon is indicated by [AS] below.

Memory Used is the total amount of physical (real) memory being used by the system and apps. [AS] should include that being used by the GPU.

App Memory is the total amount of physical memory allocated to system processes and apps. [AS] might or might not include that being used by the GPU.

Wired Memory is physical memory which can’t be either compressed or swapped out to disk. This is required by the system to operate, and can’t be freed for other purposes. [AS] should include all that being used by the GPU.

Compressed is physical memory which hasn’t been used recently, so has been compressed to save space. [AS] shouldn’t include any being used by the GPU.

For individual processes:

  • Real Memory is physical memory being used by that process.
  • Real Private Memory is physical memory being used exclusively by that process for its own code and data.
  • Real Shared Memory is physical memory being used by that process which is shared with other processes.
  • Purgeable Memory is physical memory being used to store items that could be cached to disk if necessary to free up physical memory.
  • Compressed Memory is physical memory which hasn’t been used recently, so its contents have been compressed to save space.

Note that all memory sizes are given in old-style bytes, with 1024 B in 1 KB, and so on, sometimes referred to KiB, MiB, etc., to distinguish them from rounded sizes, where 1000 B are 1 KB.

Energy

Energy Impact is “a relative measure of the current energy consumption” of an app, and currently appears to be the same number as % CPU. It therefore makes no allowance for core frequencies or types, and isn’t converted into real units of energy or power. For example, 100% active residency of an E core at maximum frequency requires around 100 mW, while a P core needs around ten times that amount at 1,000 mW, but both are referred to here as 100 units. Far better estimates are available in powermetrics.

Finally, most values given in Activity Monitor are time-weighted averages over the last period of up to a minute, which place greatest emphasis on the most recent past.