JTreg spawns java processes and uses all memory with CONCURRENCY=auto
Alan.Bateman at oracle.com
Tue May 21 00:33:49 PDT 2013
On 20/05/2013 21:59, Tomasz Kowalczewski wrote:
> during a recent "Adopt OpenJDK" event held in Krakow I was using jtreg
> for running OpenJDK test cases. It was set up as per instructions
> published here: https://java.net/projects/adoptopenjdk/pages/InstallJtreg
> OpenJDK repository was cloned from http://hg.openjdk.java.net/jdk8/tl
> and jtreg version was jtreg-4.1-bin-b05_29_nov_2012.zip
> I have set 'CONCURRENCY=auto' environment variable.
> When running a test suite (.e.g.: 'cd jdk8_tl/test; make jdk_util')
> jtreg spawns a lot of java processes and it seems not to stop. Ever.
> It uses all 8 GB of RAM on my machine at which point Windows starts
> killing random processes.
> With 'CONCURRENCY=1' jtreg will spawn only a few java processes and
> will happily run all the test.
> What is the behavior for 'CONCURRENCY=auto'? Which value is used as
> default? Maybe it is not a bug its just that OpenJDK tests should be
> run on a big server machine with lots of RAM?
> Any suggestions or pointers to documentation will be very appreciated.
> Tomasz Kowalczewski
If you are using -concurrency then I would also suggest adding
-vmoption:-Xmx512m so that you limit the heap size of the VMs. I think
Mike has a patch coming for the test Makefile to make this the default.
On concurrency I personally find that -concurrency:auto works well for
the jdk tests, assuming you limit the heap size. The reason is that the
tests are a wild mix of work loads (some tests are I/O bound, some are
compute bound, some spend a lot of time sleeping). The exception is
Windows 32-bit where you can limit the heap but you might still run into
the virtual memory limits on the system.
More information about the jtreg-use