System | CPU average load is rather useless

in v.4 there's "CPU average load" which is almost always near zero and tells absolutely nothing about an actually overloaded CPU. This pic should show actual CPU load instead, that's the info of interest to the user.
Here's a comparison of "CPU average load" vs. actual CPU load (tool used: htop) when the Marbel (new model) is maxed out using slooow (21 Mbps) OpenVPN:

In this scenario the average user would blame the VPN provider oder [whomever] but not the actual culprit: The router itself.
So please change it to show a useful value instead.

What is "the load"? The load is a value that represents the count of processes that are waiting to be executed ... If you have one CPU, and a load from 1, the CPU ist 100% used. If you have 2 CPU and a load of 1 else one CPU ist 100% in use or 2 CPU are 50% in use ... In that you also need to check if your process is able to use SMP...
Than the actual value is pretty useless, because there could be a load peek. In that case the processes will be queued and the load could go up to 15, I even saw 30 ... And after the blocking process which too much nice, everything is okay.

For that issue you have 3 loades. The last value, the 5 min average and the 15 minutes average.
In most cases the first value is not important at all. But the 15 minutes average will tell you if there is really an issue.
And as I see in your screenshot, the value is nearly 0.7, so the CPU has around 30% space to handle more processes before getting 100% used. And if I remember right, it has 2 CPU, so even a load of 2 would be acceptable.

As long as we don't use a realtime kernel and do in time calculations, this will be enough in 80% if the use cases.

Just my opinion as long time Linux user. I have debugged some bottlenecks in the past. And often a driver was the issue, not the waiting process at the CPU, shown in (h)top.

That's how linux CPU load works

Nothing you can change about it.

:joy: Believe me, as certified Solaris engineer I do know what CPU average load is and when it's of use. And its of no use to the average user that wants to know why the router appears slow.

And you built a nice stawman there: I sure don't want to change what CPU average load is but what value (actual CPU load) is displayed to the user.

That's where you're wrong (you describe kinda debugging a system). In a set system it's of interest when the router is at its limits (see above OpenVPN example) so the user can try to eliminate tasks that block overall performance.

Since OpenVPN is single-threaded, it would not even help.

1 CPU 100% due to OpenVPN, 1 CPU 0% idle - would cause the all-in-all load to be 50%.
So the information wouldn't be too useful.

Sure, a display per core was way better, the values are available.

I am not really sure, though.

People need to understand load in general before they can understand what the CPU load means. Without showing the top processes, it does not make sense to give a load in % - because you don't know which process the bottleneck is.

So speaking of this I am not even sure whether showing the load (per core or average, doesn't matter) is really helpful for anyone.

It's not about processes (that's low level) but tasks/jobs.
It's rather easy to correlate a a new task to unusual CPU load. In e.g. matters of OpenVPN one produces heavy load and watches CPU load. That back and forth, to eliminate other reasons one tries the same next w/o VPN and with Wireguard. Et voila, there's the culprit.

But I'm once again wasting my time, I rather build my own solutions just like with the other crap in v.4.
So have a nice day, I'm out.

I believe a lot of Linux users are pissed off by this "Load".

1 Like