All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ferry Toth <fntoth@gmail.com>
To: Alexander Kanavin <alex.kanavin@gmail.com>
Cc: Janne Kiiskila <janne.kiiskila@izumanetworks.com>,
	Quentin Schulz <quentin.schulz@theobroma-systems.com>,
	"yocto@lists.yoctoproject.org" <yocto@lists.yoctoproject.org>,
	trevor.gamblin@windriver.com, richard.purdie@linuxfoundation.org,
	martin.jansa@gmail.com
Subject: Re: [yocto] bitbake controlling memory use
Date: Sun, 8 Jan 2023 23:13:43 +0100	[thread overview]
Message-ID: <033d7443-7da9-38e8-ef36-2a87cad5ff8d@gmail.com> (raw)
In-Reply-To: <CANNYZj-MhN3ruV4KtXKtD+qRkn82i4rtcuK=rMjOWkLn96Rjyg@mail.gmail.com>

Hi,

Just in case you are interested in the result.

Op 03-01-2023 om 18:33 schreef Alexander Kanavin:
> On Tue, 3 Jan 2023 at 16:58, Ferry Toth <fntoth@gmail.com> wrote:
>
>> I know you don't want to spend time on this. So don't. Others may have
>> an interest or a tip to improve Yocto in this area.
>>
>> I'm just trying to get an old patch from Richard Purdie to work
>> (http://git.yoctoproject.org/cgit.cgi/poky-contrib/commit/?h=rpurdie/wipqueue4&id=d66a327fb6189db5de8bc489859235dcba306237)
>> with later fixes by Trevor Gamblin.

I got Richards patch "Add shared make jobserver support 
<https://github.com/htot/poky/commit/28fd4b9e6e60bdd07352827ec713510ae86a39c6>" 
working again. It was a bit more work then last time, it was broken in 3 
places (poky, make and python). Find it here: 
https://github.com/htot/poky/commits/kirkstone

It works by making each make believe it is a submake, while the named 
pipe holding the execution tokens is created by bitbake.

Of course as is it only limits number of threads started by make, not 
ninja. On my machine (16 threads) while compiling (linux, nodejs, 
nodejs-native etc.) simultaneously this limits memory consumption to 
~14GB RAM. A little less then 1GB/thread.

Linking nodejs is another story. Each thread uses 4-5GB, and the recipe 
allows 5 threads simultaneously. With a nodejs_%.bbappend:

EXTRA_OEMAKE:prepend = "\
LINK='flock /tmp ${CXX}' \
"
only one thread will be linked simultaneously.

This brought my image build time from 3h > 1u47m (that is after removing 
out and sstate, not bbcache so excluding download time for sources).

>> Or alternatively something based on https://github.com/olsner/jobclient.

In principle we could use jobclient to start other programs then make, 
but for meta-intel-edison I didn't see any that would benefit from this.

It would be nice if ninja could use the same named pipe for the 
execution tokens as make, that might be for another holiday.

> By all means please do. Everyone will benefit from teaching make to
> abstain from starting new processes if RAM is tight, even people with
> xeon/epyc grade hardware. It's not that I don't want to spend time on
> this, it's simply that I do not have the time.

Ah, yes, that is a known problem. Like I said, this was for me just a 
little holiday project.

Now it works I'm not sure what to do. Richard marked the original patch 
as WIP. Maybe it's not appropriate for including into poky? If so I 
wouldn't mind carrying it in meta-intel-edison.

Or may be with a little work (from me) and a run on the CI servers we 
could make it go in?

> Alex


  reply	other threads:[~2023-01-08 22:13 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-11 15:23 bitbake controlling memory use Gmane Admin
2021-04-11 15:27 ` [yocto] " Alexander Kanavin
2021-04-11 15:49   ` Gmane Admin
2021-04-11 15:55     ` [yocto] " Alexander Kanavin
2021-04-11 16:08       ` Gmane Admin
2021-04-11 16:19         ` [yocto] " Alexander Kanavin
2021-04-14  1:14           ` Randy MacLeod
2021-04-14  3:14             ` Khem Raj
2021-04-14  4:59             ` Richard Purdie
2021-04-17 22:17               ` Gmane Admin
2021-04-18  9:59                 ` [yocto] " Richard Purdie
2021-04-18 19:34                   ` Gmane Admin
     [not found]                   ` <16770AD5E94DEAE5.1089@lists.yoctoproject.org>
2022-12-24 18:58                     ` Ferry Toth
2022-12-26  2:11                       ` [yocto] " Randy MacLeod
2022-12-27 16:56                         ` Ferry Toth
2021-06-05 13:35               ` Gmane Admin
2021-06-08 19:08                 ` [yocto] " Trevor Gamblin
2021-06-10  7:09                   ` Gmane Admin
     [not found]               ` <1685B30F5819A655.13459@lists.yoctoproject.org>
2021-06-07 19:27                 ` Gmane Admin
2021-06-08 19:12                   ` [yocto] " Trevor Gamblin
2021-06-10  9:22                   ` Ferry Toth
2021-06-10 19:06                     ` [yocto] " Trevor Gamblin
2021-06-10 20:35                       ` Ferry Toth
2021-06-12 16:31                         ` Ferry Toth
2021-06-13  0:38                           ` Randy MacLeod
2021-06-13 10:58                             ` Ferry Toth
2023-01-03 14:15                             ` Ferry Toth
2023-01-03 14:18                               ` [yocto] " Alexander Kanavin
2023-01-03 14:29                                 ` Ferry Toth
2023-01-03 14:36                                   ` Quentin Schulz
2023-01-03 14:41                                     ` Ferry Toth
2023-01-03 15:03                                       ` Janne Kiiskila
2023-01-03 15:12                                         ` Ferry Toth
2023-01-03 15:24                                           ` Alexander Kanavin
     [not found]                                           ` <1736D5DCC66BC3DE.4716@lists.yoctoproject.org>
2023-01-03 15:37                                             ` Alexander Kanavin
2023-01-03 15:58                                               ` Ferry Toth
2023-01-03 17:33                                                 ` Alexander Kanavin
2023-01-08 22:13                                                   ` Ferry Toth [this message]
2023-01-09 10:39                                                     ` Alexander Kanavin
2023-01-09 10:43                                                       ` Richard Purdie
2023-01-09 10:54                                                         ` Ferry Toth
2023-01-19 19:59                                                           ` Ferry Toth
2023-01-09 10:49                                                       ` Ferry Toth
2023-01-10  1:57                                                         ` Randy MacLeod
2023-01-10  9:24                                                           ` Ferry Toth
2023-01-14 22:33                                                             ` Ferry Toth
2023-08-28 12:56                                                               ` Martin Hundebøll
2023-01-03 15:44                                   ` Martin Jansa
2021-04-12  2:25 ` Chen Qi
2021-04-12 18:45   ` Gmane Admin
2021-04-12  8:13 ` [yocto] " Robert Berger
2021-04-12 18:47   ` Gmane Admin
     [not found] ` <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.12d167de-8268-4441-bd03-b78a3e04713e@emailsignatures365.codetwo.com>
     [not found]   ` <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.0d2bd5fa-15cc-4b27-b94e-83614f9e5b38.a8aa18ca-4a64-4525-851c-c6d34f355f1f@emailsignatures365.codetwo.com>
2021-04-12  8:28     ` [yocto] " Mike Looijmans

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=033d7443-7da9-38e8-ef36-2a87cad5ff8d@gmail.com \
    --to=fntoth@gmail.com \
    --cc=alex.kanavin@gmail.com \
    --cc=janne.kiiskila@izumanetworks.com \
    --cc=martin.jansa@gmail.com \
    --cc=quentin.schulz@theobroma-systems.com \
    --cc=richard.purdie@linuxfoundation.org \
    --cc=trevor.gamblin@windriver.com \
    --cc=yocto@lists.yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.