[meta-ti] poor performance of OpenEmbedded on BeagleBoneBlack compared to Debian

Peter A. Bigot pab at pabigot.com
Wed Sep 3 18:59:28 PDT 2014


I've been trying to figure out why OpenEmbedded on beaglebone is three 
times slower than Debian on the ray-tracing application described at:

http://scruss.com/blog/2013/09/23/beaglebone-black-slow-as-a-dog/

Part of it is due to meta-yocto-bsp's beaglebone config not enabling CPU 
frequency control (CONFIG_GENERIC_CPUFREQ_CPU0, 
CONFIG_VOLTAGE_DOMAIN_OMAP, and some THERMAL options).  That can be 
fixed for linux-yocto, and isn't an issue with linux-ti-staging, but it 
doesn't eliminate the discrepancies.

With debian, the sample program described in that blog posting runs this 
fast:

   debian at beaglebone:~$ g++ -Ofast -mfloat-abi=hard -o card card.cpp
   debian at beaglebone:~$ time ./card > /dev/null
   real    4m54.846s
   user    4m54.627s
   sys     0m0.057s

With poky master + meta-ti it runs this fast:

   root at beaglebone:~# time ./card > /dev/null
   real    9m37.901s
   user    9m37.200s
   sys     0m0.150s

Still nearly twice as slow.  (With linux-yocto and the default kernel 
configuration it's up around 14m.)

One anomaly I've found is the CPU frequency range.  On debian we have:

   debian at beaglebone:~$ cat 
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
   300000 600000 800000 1000000

while on OE we have:

   root at beaglebone:~# cat 
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
   300000 600000 720000 800000

So OE isn't allowing the BeagleBoneBlack to run at its maximum speed.  
This isn't enough to explain a nearly 2x performance difference, but 
it's an issue I want resolved.

I've been unable to trace back where these frequencies come from. Could 
somebody tell me what configures the available frequencies for the 
AM335x in linux-ti-staging?

And if anybody has suggestions of where else to look for an explanation, 
I'd appreciate it.  I've tried all the gcc flags I can think of 
(-mcpu=cortex-a8, -mfpu=neon, -mfloat-abi=hard, etc), though I'm going 
to keep poking at it because I still suspect the problem is there.

Thanks.

Peter



More information about the meta-ti mailing list