[OE-core] Fixing performance for Intel Atom

Andre McCurdy armccurdy at gmail.com
Tue Jun 2 20:56:24 UTC 2015


Hi all,

I've recently been looking into a performance regression when
switching from my SoC vendor's pre-compiled legacy SDK toolchain (gcc
4.5.1 + glibc 2.11) to OE. The CPU is a 45nm Intel Atom and my machine
config includes tune-atom.inc. The root cause of the slowdown seems to
be that by default OE for 32bit x86 configures glibc for i586-*-linux
and therefore does not enable the SSE optimised string functions, etc,
etc which are available when building glibc for i686-*-linux.

Performance of the OE builds can be restored by setting X86ARCH32 to
"i686" in tune-core2.inc. This seems to be a correct and valid fix,
applicable to atom, core2 and corei7 and hopefully acceptable for
upstream oe-core.

However, a side effect of the fix is that TRANSLATED_TARGET_ARCH
changes from i586 to i686, which means that any _i586 over-rides stop
working and I'm not sure on the best way to solve that.

Looking at the _i586 over-rides in oe-core and meta-oe, there aren't
many and most could (should?) probably be replaced with _x86 instead.
An alternative might be to duplicate every _i586 over-ride for _i686
(it's already done that way for KLIBC_ARCH and QEMUARCH in meta-oe).
Which would be the preferred approach?

Thanks
Andre
--



More information about the Openembedded-core mailing list