kiitos
a year ago
> What Activity Monitor actually shows as % CPU or “percentage of CPU capability that’s being used” is what’s better known as active residency of each core, that’s the percentage of processor cycles that aren’t idle, but actively processing threads owned by a given process. But it doesn’t take into account the frequency or clock speed of the core at that time, nor the difference in core throughput between P and E cores.
Does "%CPU" need to take into account these things?
kevincox
a year ago
I think it would be useful in many scenarios. For example if I am running at near cores*100% I may think my system or fully loaded (or overloaded). But if those cores are running at a low frequencies because there isn't actually any overload I would want to know that. Because in this case if I spawn twice as many tasks and have twice as much throughput while the CPU% doesn't change that seems confusing.
I think if I had to pick a single number for reporting CPU usage it would be percent of available throughout. Although this has complications (the max frequency will depend on external conditions like temperature). But 0% would mean "no runnable tasks" and 100% would mean that the CPUs are running at the maximum currently available speed. The values in-between would be some sort of approximation but I think that is fine.
rcxdude
a year ago
From an intuitive point of view, if you want to use %CPU as "how much of the total available processing power is this process using", it's potentially valuable. With the status quo, a process might appear to be a few multiples more CPU intensive than it really is, if the system happens to be relatively idle.
That said, it's not particularly easy to apply these corrections, especially because the available maximum clock speed depends on variables like the ambient temperature, how bust all the cores are, and how long the CPU has been boosting for. So if you were to apply these corrections, either you report that a fully loaded system is using less than 100% of possible available CPU power in a lot of cases, or your correction factors vary over time and are difficult to calculate.
MarkSweep
a year ago
Raymond Chen has an article discussing whether or not this should be taken into account:
https://devblogs.microsoft.com/oldnewthing/20210629-00/?p=10...
dspillett
a year ago
need no, but it could be useful. Not a requirement, but a very “nice to have” property. It would reduce certain confusions in some end users, as well as being handy for us techie types.
Often you don't care that the current batch of processes are using 100% of what the CPU cores they are assigned to can do at current clock rates, what you want to know is how much is left available, so you can add more work without slowing any existing tasks down much.
It used to be, back when CPUs didn't have low & high power cores and always ran what they had at the same speed, that %CPU shown in various OS displays was a reasonably accurate measure of the impact of a process that could easily be used to judge optimisation success (getting the same done in less hardware effort) and scaling success (getting the same done in less wall-clock time by giving more hardware to the problem or improving parallelism to make better use of what you already have).
These days it is more complicated than most assume at face value, and you have to be a lot more careful when assessing such things to avoid incorrect assumptions leading to wrong decisions. It would be nice to get back to the previous state of affairs, in terms of a given % value meaning something more fixed. Of course that is not as practical to achieve as naively stating the problem might suggest: for a start you can't really state what 100% is because in many cases the maximum clock might only be achievable for very short periods before thermal throttling kicks in. Maybe if there is a “minimum maximum”, below which we know the throttle won't go, we could state that as 100% and display more when the heat limit is not taking effect, but I expect that really would confuse end users (I have memories of confused conversations when multi-core CPUs became common, when people saw displays of processes using ~200%, with that meaning ~100% of ~2 cores).
d1sxeyes
a year ago
I guess not. I think the problem here is a bit more fundamental: people (read, at least 1 from a sample of 1 - me) think that the '% CPU' column in Activity Monitor shows how much of the total processing power the computer has is being used by the process, when actually it's a much more complicated story. I don't think it's a bad thing that people learn more about what the metric actually means.
I at least found the article interesting, and learned something useful from it.
sophacles
a year ago
Yes. If my 10Ghz cpu core says it's running 100%, but is scaled down to 1hz, i'll be really confused about how much work it is doing, and look in all the wrong places to find out why my process is taking forever to run.
(extreme numbers to highlight the point)
smegsicle
a year ago
honestly if you want load avg why not just use load avg