Number of agent VMs unbounded even when running with -concurrency:N ?
Jonathan Gibbons
jonathan.gibbons at oracle.com
Wed Dec 11 15:28:55 PST 2013
On 11/22/2013 02:48 AM, Alan Bateman wrote:
>
> Mike Duigou and I were chatting yesterday about the number of VMs that
> are might be in memory at a time when running in agentvm mode with
> -concurrency:N. We're not using -compilejdk so I think the starting
> answer is N+1 (the additional 1 because of jtreg itself). With the jdk
> tests then it gets complicated because there are some areas when the
> tests are configured to run in othervm mode, also there are many tests
> that spin up several VMs for the duration of the test.
>
> One point of discussion is we have different understanding on is what
> happens when a test is configured to run with a specific set of VM
> options. So suppose we are running with -concurrency:N and the agent
> pool has N agents already. If jtreg encounters a test with a
> completely new set of VM options then does it spin up a new VM (hence
> growing the pool to N+1) or does it close down one agent VM and spin
> up a new one?
>
> I skimmed through the jtreg code but it wasn't immediately obvious.
> Mike went one further and plotted the number of VMs that he sees on
> his system when running with -concurrency:11. His plots support his
> understanding that the number of VMs may be unbounded.
>
> -Alan.
I'm sorry I missed this when it was first posted.
I agree that the expected behavior should be N+1 VMs, plus transient
extra VMs as needed for indidivual tests.
If you have evidence that the set of VMs is growing without bound, I
would be interested to follow up on that. I would (obviously) regard
that as a fairly high priority bug. I did check the jtreg code, and the
following lines in MainAction.java reflect the intent that you can only
use test-specific JVM options in conjunction with /othervm mode:
> if (!othervm) {
> if (testJavaArgs.size() > 0)
> throw new ParseException(testJavaArgs +
> MAIN_UNEXPECT_VMOPT);
How easy would it be to run something like jps within a loop while jtreg
is running, and save the output for analysis, so that we can easily see
the java commands that were active as the number of VMs increases?
-- Jon
More information about the jtreg-use
mailing list