Uploaded image for project: 'Code Tools'
  1. Code Tools
  2. CODETOOLS-7902454

jtreg should flush idle agent VMs

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Fixed
    • Icon: P3 P3
    • jtreg5.1
    • None
    • tools
    • None
    • b01

      Running large test suites with large number of TEST_JOBS instantiates and keeps lots of AgentServer JVMs. For example, with 16 test jobs tier1 has ~70 AgentServers after an hour of test run, taking 60+ GB of memory. jtreg should really flush idle AgentServers after a while, to unclutter memory during the run.

      Proof-of-concept patch:
       http://cr.openjdk.java.net/~shade/7902454/jtreg-poc.patch

      There might be better place to flush idle agents periodically. Current placement keeps stale agents alive until the next test starts, which might be too conservative.

      Experiment setup (run, rendering scripts, data) with patched jtreg running tier1 tests on Linux x86_64 fastdebug and TEST_JOBS=8 on i7-7820X are at:
       http://cr.openjdk.java.net/~shade/7902454/

      The summary is given by the picture:
       http://cr.openjdk.java.net/~shade/7902454/tier1-time-footprint.png

      Flushing on idle does improve footprint very considerably. Current behavior wastes lots of memory. 1s flush is obviously a no-go, as it defies the purpose of agentvm, notice it prolongs the run for about 10 minutes. But sensible flushes at around 30..60s give lots of memory back without slowing down tier1 all that much.

            jjg Jonathan Gibbons
            shade Aleksey Shipilev
            Votes:
            1 Vote for this issue
            Watchers:
            7 Start watching this issue

              Created:
              Updated:
              Resolved: