Hi,

Op 10-01-2023 om 10:24 schreef Ferry Toth:
Hi,

On 10-01-2023 02:57, Randy MacLeod wrote:
Add Zheng.
Switch to Trevor's gmail since he might still be interested in this.

On 2023-01-09 05:49, Ferry Toth via lists.yoctoproject.org wrote:
Hi

On 09-01-2023 11:39, Alexander Kanavin wrote:
On Sun, 8 Jan 2023 at 23:13, Ferry Toth <[email protected]> wrote:

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?
I'd rather teach make/ninja upstream to watch memory consumption
and/or host pressure directly (e.g. similar to how it handles -l). And
offer any resulting patches to upstream first.

As there is already a clone of ninja available with jobserver support available I added another patch to update to that version and make an intercept to actually pass the named pipe to ninja.

Find it here: https://github.com/htot/poky/commits/kirkstone

This makes both make and ninja threads running from a shared thread pool. As cmake relies on ninja recipies are covered as well.

I guess this takes care of the majority of recipes.

In my case this new patch shaves no more then 1 minutes from my image build time (1h46) as the recipes built using ninja are not consuming that much memory (like nodejs). I hope others will benefit more.

Todo: location of the pipe as mentioned by Richard

Zheng and I *started* on that for make over the Xmas holiday.
See the (poorly formatted) thread:
  Add support for limiting CPU pressure, contrib, 2022/12/20
in:
https://lists.gnu.org/archive/html/bug-make/2022-12/threads.html

There were mixed reviews upstream with the maintainer, Paul Smith,
seeming to prefer that we investigate the job server approach and the current load averaging. I'll happily try to find time to play with Ferry's job server work.

The work is actually Richard's. I only fixed what broke over time.
I've been thinking about the various workflows and as Richard said, it seems that for many people who only do one build at a time, the job server and maybe a little linker restraint, would be all that's needed. For activities such as YP AB, we could teach the main job server to also look at /proc/pressure as a way to limit the pool size we could make a meta-jobserver for those who don't want/need to worry about non-compile tasks such as tests and build clean-up.


Note that cargo has the notion of a job server:
   https://github.com/rust-lang/cargo/issues/1744
   https://github.com/rust-lang/cargo/pull/4110


and ninja has an open issue:
   https://github.com/ninja-build/ninja/issues/1139
and an initial implementation:
   https://github.com/stefanb2/ninja/tree/topic-jobserver-fifo

What other build tools are in need of regulation and/or job server patches?

What I read, gcc has already -flto=jobserver.

Other (single threaded CPU intensive) might just be started from jobclient?

../Randy



Alex

Yeah, I'd rather teach the kernel to consider thrashing when scheduling jobs. As is now any user process can slow down any other users process and even the kernel itself to a standstill.

But kernel developers consider those issues "orthogonal" (i.e. they don't want to make the scheduler aware of io).






-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#58988): https://lists.yoctoproject.org/g/yocto/message/58988
Mute This Topic: https://lists.yoctoproject.org/mt/82015730/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to