New issue
Advanced search Search tips

Issue 905556 link

Starred by 2 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

autoninja: better to set -l ?

Project Member Reported by ukai@chromium.org, Nov 15

Issue description

autoninja dropped -l 
https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/0db62fcf9c7e559f30b81073868f1a6d78a7f94a

but building chromium debug makes desktop unresponsive (load average goes > 70 or so with ninja -j800 on linux).

better to set -l <num_core>*n or so?
 
Cc: drott@chromium.org
What caused your desktop get stuck?

not sure.
during build, desktop was very slow.  I basically only used chrome browser while building.

../../testing/libfuzzer/gen_fuzzer_owners.py invokes lots of git and gn?

../../third_party/closure_compiler/js_binary.py runs java
Is it possible for us to put them separated pool?  Or, are they already in the separated pool?
Just for the record, the intention behind removing -l was that it froze building with goma on Mac OS, compare b/117810340
We dropped -l from autoninja.py because it caused significant build slowdowns for some users. This was reported on OSX - see internal bug b/117810340.

Given that -l was causing problems for some users and had uncertain benefits it felt best to remove it. Now that it has been removed from autoninja.py users can choose whether to have it or not, whereas when autoninja.py automatically added it there was no choice.

If it works well on Linux then maybe it could be added back on that platform, or added back if an environment variable is set. It's behavior on Windows was never perfect given that there can easily be delays in how quickly CPU load ramps up.

Cc: -tandrii@chromium.org
Re: #6
Just to note but my investigation in b/117810340 shows -l works also bad for Linux.

I think it natural for -l to make the build slow.  That is because -l deny ninja to add new tasks when the load average is above the given number.  It means even if a new task is expected to run remote, ninja denies it when high-load programs like js_binary.py is running.

Re: #4
I found they are in build_toolchain_action_pool.  Please see build.ninja.

How about make depth of build_toolchain_action_pool in build.ninja much smaller?  e.g. num_cores / 4 or less.
It might be controlled by action_pool_depth gn args?  Its default value seems to be number of CPUs.  (Please see src/build/toolchain/BUILD.gn)
Status: Available (was: Untriaged)

Sign in to add a comment