Banana Pi BPI-M3 CPU load case study

The M3 boasts an octa core processor as we all know it but somehow the experience on Linux is not as smooth. I looked a little into the temperature and the CPU usage and came to a little conclusion.

With a 14mmx14mmx9mm heat sink, the temperature idles at 65 degrees Celsius. Which is the load temperature for many desktop processors properly cooled.

The CPU keep around 1 of the 8 cores at near 100% while the others at 0-30%. The core under load switches every few seconds probably to balance the thermal output.

I can never squeeze enough power from the 8 cores since they are basically all at sleep.

I got a PC fan and put it on top of the heat sink and the idle temperature dropped to 45 degrees Celsius and temperature under load to 55. Then around 2 of the cores ran at 70-100% while the others are at rest. But mostly still only 1 core ran at 100%.

I think due the the fact that the CPU is designed for mobile devices and the lacking of cooling on the M3, we are missing out on a lot of the power offered by A83t.

Did I miss something or did you completely missed your subject?

You used 6 sentences and mentioned not a single time throttling (slowing down CPU clockspeeds due to overheating). You talked about heat, CPU utilisation and CPU affinity (pretty normal that single threaded loads are spread across CPU cores and full load threads hop between cores. But that has nothing to do with throttling).

In case you’re interested in throttling create load on all cores and watch /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq decreasing. BTW: On nearly all modern SoCs that make use of budget cooling it’s pretty irrelevant to look at CPU utilisation when you don’t also have a look cpuinfo_cur_freq.

Try it out on your own: Use stress or sysbench --test=cpu --cpu-max-prime=100000 run --num-threads=8 to utilise all 8 cores.

I guess I will try the test. I thought it is more of a constant throttling / cooling feature where only 1 core runs at max.

Nope, this is just a sign that there’s one thread busy (the kernel will assign this to a specific CPU core and assign other tasks to other cores) and not that much else to do.

You did not even touched your subject line remotely. Throttling is something different than CPU utilisation and CPU affinity. And only looking at CPU utilisation tells you exactly NOTHING on a system that uses thermal throttling strategies.

If you have a task that runs with 100% CPU utilisation and cpuinfo_cur_freq is at 1.8GHz then this task will finish twice as fast as when cpuinfo_cur_freq is at 900MHz due to thermal throttling. In both cases you see 100% CPU utilisation and it simply tells you nothing.