bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: EAGAIN in "read jobs pipe"


From: lasse.makholm
Subject: RE: EAGAIN in "read jobs pipe"
Date: Wed, 10 Jan 2007 10:31:28 +0100

>Noticed something else.
>
>Something else completely pointless!
>
><ridiculous> must not be > 16385

True, if you have 16 KB pipes...

>  gmake -j 16386; # or above hang
>  gmake -j 16385; # or below fire along rapidly

Because you're trying to write more into the job tokens pipe than it can
hold...

You appearantly have 16K pipes (ulimit -a should tell you)... I get the
same on x86 Linux if I go beyond 4K jobs...

This code (from main.c) assumes that the pipe will be big enough to hold
all tokens:

      while (--job_slots)
        {
          int r;

          EINTRLOOP (r, write (job_fds[1], &c, 1));
          if (r != 1)
            pfatal_with_name (_("init jobserver pipe"));
        }

A bug? Perhaps... On the other hand, if you're using -j 65K, why not
just -j? Does you build even have 65K jobs?

I could be wrong of course, but I in my experience you don't gain any
real benefit from going beyond 3-4 jobs per (virtual) core... What's the
difference in build time from, say, -j 128 and -j 65385 for you?

The fact that your machine stays responsive during a build does not
necessarily mean that you will gain any benefit from increasing the -j
number...

/Lasse




reply via email to

[Prev in Thread] Current Thread [Next in Thread]