CPU governor for modern ARM/ARM64 network devices: performance governor a good fit?

There's sometimes discussion about which CPU governor is best for network devices. Governors like 'ondemand' or 'schedutil' are said to impact performance, since the CPU needs to increase its speed to cope with higher loads. That frequency switching can introduce 'hiccups' apparently (the correct wording is escaping me). The obvious solution would be to switch to e.g. the performance governor, but most consumer network devices are probably not designed for that, so I'm wondering what the best approach is here?

Lately I've seen quite a few devices - mainly IPQ806x or IPQ807x ones I believe - that were moved to performance. IPQ40xx has been moved completely as a target.

I have an RB5009UG e.g. - with an ARM64 SoC. Its case was designed as a heatsink, it has SFP+ and 2,5 Gbps, two interfaces that are known to require more power (and run hotter) than standard gigabit interfaces. So surely MikroTik must have taken that into account while designing. But can I switch to the performance governor and not worry? I saw discussion on IRC on how things like tracing etc on some boards might not be designed to handle the SoC going 'full throttle' all the time, but I might have misunderstood that. So I'm looking for opinions on that.


My 2 cents:

the link you provided regarding ipq40xx mentions the details in the commit msg:
This soc has frequency adjustment available, but no voltage control.
So as the measurements indicated, it does not matter for heat or power if its running at full speed all the time

You could check if that soc in the Mikrotik has both freq and voltage scaling.
You could also measure dc power draw (if you have a dc power supply) to check between different governors.

A lot of people start to panic if a soc runs at 50C and "feels" too darn hot (at least from POV of human perception and fysiology).
But even then all components are still running well within design specification and mostly can hit up to 80 .. 85 without any issue.

"Arm64" is also pretty broad these days running from socs with few cores up to socs with many cores.

I can imagine that the thermals will be different between all these flavors so setting "performance" for the full target is something I would not do here.

But this statement is also speculation without facts and figures :slight_smile:

1 Like

Thanks, I had indeed only given the commit message a cursory glance. And you have more hands-on experience with this than I do, so your input is very much appreciated :slight_smile:.

Was hoping more people would chime in :frowning:.

Anyway - I switched to the performance governor on my RB50009UG, and that made power consumption jump from 6,3 W ± to 6,9 W ±. Cheap power meter. So a 10% increase.

I just recently noticed this and don't believe the change is correct. Testing wasn't done properly, and some CPU-related assumptions are wrong. See my recent comment in the original PR, which includes further explanation and my own testing.

TLDR: Simply dropping the lowest 48 MHz frequency provides the majority of latency improvement while avoiding a 20% increase in power-consumption from "performance mode". Better for us to do that instead.