Magnus Ihse Bursie
magnus.ihse.bursie at oracle.com
Thu Nov 1 11:41:05 UTC 2018
On 2018-10-18 18:08, Erik Joelsson wrote:
> Hello Aleksey,
> We very deliberately added the automatic niceness for a better general
> user experience. This was back when build-infra was new and we started
> pushing the parallelism of the build to where the UIs of our
> development systems became annoyingly slow and sluggish when building.
> So, I would be very against removing it completely, but I certainly
> think it should be possible to opt out. We should never force such a
> behavior on an unwilling user. My only defense is that this was done
> so early so we probably didn't think about it. If you would like to
> provide a patch adding a configure arg for disabling it, it would
> certainly be welcome.
An alternative, I suspect, is to lower the value that is added to the
niceness, e.g. using "nice -n5" or even just "nice -n1". This sounds
like it should help with your particular case, and I still think it
would solve our original problem, that developer's workstations should
not be unresponsive while building.
I was about to suggest that you could achieve this by overriding NICE in
the configure command line, by e.g. configure NICE="/usr/bin/nice -n0"
(I presume -n0 is a no-op), but it turned out that this did not work! :(
I opened JDK-8213239 for this, but for the moment, that's not a usable
> On 2018-10-18 01:08, Aleksey Shipilev wrote:
>> Is there any specific user story behind "nice"-ing the compilation
>> jobs from within the build system?
>> It unfortunately clashes with priority budgeting. For example, my
>> build server is used by me doing
>> adhoc builds, automatic builds and some background tasks. The
>> automatic build user has priority 10
>> set in /etc/security/limits.conf. The background user has priority 20
>> set in limits.conf. In theory,
>> it sounds good: it would get all the CPU ad-hoc builds want, then
>> give CPU to automatic build jobs,
>> then to background jobs.
>> But then the build nice-s the compilation jobs, which drops its
>> priority down to the priority of
>> background jobs:
>> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
>> 25966 backgro+ 39 19 808872 460772 2440 R 97.0 1.4 4181:54 R
>> 25968 backgro+ 39 19 808872 460588 2340 R 97.0 1.4 4181:17 R
>> 25965 backgro+ 39 19 808872 460864 2680 R 93.4 1.4 4180:29 R
>> 30998 buildbot 39 19 6688224 1.050g 20000 S 64.8 3.4 4:58.52 java
>> 27518 buildbot 39 19 2915828 110884 21740 S 47.0 0.3 0:02.57 javac
>> 26802 buildbot 39 19 290900 264792 17392 R 38.2 0.8 0:05.48
>> 27486 buildbot 39 19 200296 171792 18440 R 30.6 0.5 0:01.96
>> ...which wrecks up this story. Maybe the better solution in build
>> system is to avoid nice-ing at
>> all, and require users who need it to invoke "nice -n ... make ..."?
>> Or maybe at least have the knob
>> that disables automatic niceness?
More information about the build-dev