JTreg spawns java processes and uses all memory with CONCURRENCY=auto

Alan Bateman Alan.Bateman at oracle.com
Tue May 21 00:33:49 PDT 2013

On 20/05/2013 21:59, Tomasz Kowalczewski wrote:
> Hello,
> 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.
> -- 
> Regards,
> 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 mailing list