-
Improvement
-
Resolution: Unresolved
-
Minor
-
None
-
Jenkins ver. 2.164.3,
Slave: OS: Ubuntu 18.04 LTS, JDK: OpenJDK 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03
When running "freestyle project" (gmake) at slave, java takes high CPU percentage: from 40% to even 70%, 50% maybe considered average.
The load does not depend on build-process output.
Easy way to reproduce:
1) Create repository with single Makefile that just waits:
all:
sleep 300
2) Create jenkins "freestyle project" with single build step:
make
3) Execute the build at node
What you would see at slave is java process taking about 50% CPU waiting for process that does nothing.
I tried various options for agent including http://-dhudson.remoting.remoteinvocationhandler/$Unexporter.retainOrigin=false, but it makes no difference.
I've run remoting with profiler. Unfortunately I don't have results saved and it's hard for me to repeat this investigation right now, but I remember that most CPU was consumed for I/O read attempts. Child process output stream polling? Anyway - one can easily reproduce it as described above.
This affects make-style (freestyle builds) only. E.g. for maven builds, remoting process behaves correctly, I mean it takes few % of CPU.
I create it as "Improvement" as it allows builds to run SOMEHOW. But, frankly speaking, for me heating CPU for nothing is a bug. Besides, we have some builds which involve timing-tests - for these ones this is KO as tests cannot complete in such heavily-loaded environment.