Re: What are the key factors for yocto build speed?


Mike Looijmans
 

On 18-03-2020 15:49, Adrian Bunk via Lists.Yoctoproject.Org wrote:
On Wed, Mar 18, 2020 at 10:12:26AM -0400, Jean-Marie Lemetayer wrote:
...
For example one of our build servers is using:
- AMD Ryzen 9 3900X
...
- 32Go DDR4 3200 MHZ CL14
...
It is a really good price / build time ratio configuration.
Depends on what you are building.
Building non-trivial C++ code (e.g. webkitgtk) with 24 cores
but only 32 GB RAM will not work, for such code you need
more than 2 GB/core.
Seems a bit excessive to buy hardware just to handle a particular corner case. Most of OE/Yocto code is plain C, not even C++.

My rig only has 8GB but doesn't run into memory issues during big GUI builds. The only thing that made it swap was the populate_sdk task that created a 1.1GB fiel and needed 20GB of RAM to compress that. Took a few minutes more due to swapping.
I submitted a patch today to fix that in OE.

Your mileage may vary. But RAM is easy to add.

On Wed, Mar 18, 2020 at 05:52:37AM -0700, Oliver Westermann wrote:
...
Any suggestions what to put in that build to get the most out of it?

Currently we're looking at a big Ryzen, 64G of RAM and one or multiple
SSDs on a "consumer grade" board like the X570.
...
I would buy 128 GB RAM to not run into problems due to lack of RAM,
and Linux will also automatically use unused RAM as disk cache.
As long as you aren't running out of RAM or disk space all that matters
is CPU speed, Ryzen 9 3950X with 128 GB RAM would be my choice unless
you are on a tight budget.
Of course he's on a tight budget. He wouldn't need to ask for advice otherwise...

Most consumer boards support up to 64GB RAM. Pushing to 128 may suddenly double the price of the mobo as well. I'd go for 32 (as 2x16GB) and do an easy upgrade to 64 when there's trouble. Even with 4x16GB that's not a bad investment, if it turns out to be a bottleneck 16GB modules will be easy to sell (contrary to smaller modules).

Join yocto@lists.yoctoproject.org to automatically receive all group messages.