<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Balchandra,<br>
    <br>
    Thanks for posting the commands. That gives us something to reason
    about.<br>
    <br>
    For my part, I have found -conc:auto to be too generous.   "auto"
    gets evaluated to the number of processors on the host system as
    seen by the Java runtime.  In my usage (on langtools) I have found a
    good rule of thumb to be half that number, so on a 32-way system, I
    use -conc:16, etc.    It is also a function of available memory.<br>
    <br>
    I played with the idea of supporting expressions using auto, such as
    -conc:auto/2 or -conc:auto-1 -- but then I came to my senses. This
    calculation is much better done in the environment used to run
    jtreg.<br>
    <br>
    I notice in your commands, you do NOT limit the amount of memory for
    each JVM with -Xmx.  That leaves all your JVMs using default
    ergonomics, which may be unduly optimistic when you have lots of
    JVMs running.<br>
    <br>
    As a general rule for anyone using -conc to run tests concurrently,
    I strongly recommend that the first few times you do this, use your
    system activity profiling tool to monitor CPU and memory usage.   
    If all your CPUs are redlining it at 100%, or if you start memory
    swapping, then your concurrency number is too high.  I would
    recommend that you target an average CPU utilization just below
    100%, and no memory swapping.<br>
    <br>
    A couple more comments inline.<br>
    <br>
    -- Jon<br>
    <br>
    P.S.   I'll see about converting some of these notes and guidelines
    into another jtreg page on OpenJDK.<br>
    <br>
    -- Jon<br>
    <br>
    <div class="moz-cite-prefix">On 12/11/2013 11:26 AM, Balchandra
      Vaidya wrote:<br>
    </div>
    <blockquote cite="mid:52A8BC76.60409@oracle.com" type="cite">
      <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
      <br>
      <div class="moz-cite-prefix">On 11/12/2013 17:55, Jonathan Gibbons
        wrote:<br>
      </div>
      <blockquote cite="mid:52A8A72C.7050300@oracle.com" type="cite">Balchandra,

        <br>
        <br>
        The important part of that of interest here is the part about
        "calls jtreg commands <br>
        (one each for jdk, langtools and hotspot) with those recommended
        <br>
        options". <br>
        <br>
        Is there a way you could post here the segment of the script
        that does that? <br>
        <br>
      </blockquote>
      Here it is<br>
      <br>
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <table height="300" border="0" width="749">
        <tbody>
          <tr>
            <td>2.1 Running tests in jdk/test </td>
          </tr>
          <tr>
            <td>
              <div style="margin-left: 40px;"> $ jtreg -dir:{openjdk
                source top directory}/jdk/test -verbose:summary
                -exclude:{openjdk source top
                directory}/jdk/test/ProblemList.txt -conc:auto -a
                -ignore:quiet -timeoutFactor:5 -othervm
                -testjdk:{location of the test jdk} `cat <a
                  moz-do-not-send="true"
                  href="http://download.java.net/jdk8/testresults/docs/dir.list">dir.list</a>`
                <br>
                <br>
              </div>
            </td>
          </tr>
          <tr>
            <td> 2.2 Running tests in langtools/test </td>
          </tr>
          <tr>
            <td>
              <div style="margin-left: 40px;"> $ jtreg -dir:{openjdk
                source top directory}/langtools/test -verbose:summary
                -conc:auto -a -ignore:quiet -timeoutFactor:5 -agentvm
                -testjdk:{location of the test jdk} com tools <br>
                <br>
              </div>
            </td>
          </tr>
          <tr>
            <td> 2.3 Running tests in hotspot/test </td>
          </tr>
          <tr>
            <td>
              <div style="margin-left: 40px;"> $ jtreg -dir:{openjdk
                source top directory}/hotspot/test -verbose:summary
                -conc:auto -a -ignore:quiet -timeoutFactor:5 -agentvm
                -testjdk:{location of the test jdk} compiler gc runtime
                sanity serviceability </div>
            </td>
          </tr>
        </tbody>
      </table>
      <br>
      The instructions is at <a moz-do-not-send="true"
        class="moz-txt-link-freetext"
        href="http://download.java.net/jdk8/testresults/docs/howtoruntests.html">http://download.java.net/jdk8/testresults/docs/howtoruntests.html</a><br>
      and is linked from <a moz-do-not-send="true"
        class="moz-txt-link-freetext"
        href="http://www.java.net/download/jdk8/testresults/testresults.html">http://www.java.net/download/jdk8/testresults/testresults.html</a><br>
      <br>
      The caveat in this approach is a human error where one (me) forget
      to update the instruction<br>
      or forget to remove any additional flags used in the script
      temporarily - a mismatch<br>
      of the results could occur. <br>
      <br>
      From the next build (b120), I am going to update "2.1 Running
      tests in jdk/test" to<br>
      <br>
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      $ jtreg -dir:{openjdk source top directory}/jdk/test
      -verbose:summary -exclude:{openjdk source top
      directory}/jdk/test/ProblemList.txt -conc:auto -a -ignore:quiet
      -timeoutFactor:5 -agentvm -testjdk:{location of the test jdk}
      :jdk_core :jdk_svc :jdk_beans :jdk_imageio :jdk_sound :jdk_sctp
      javax/accessibility com/sun/java/swing javax/print sun/pisces
      com/sun/awt <br>
    </blockquote>
    <br>
    Generally, I would say that if you need to put a list of groups on
    the command line, you need to update the groups file to create a new
    group that is composed of the individual groups you want to run.<br>
    <br>
    I think it would be good to have a group such as :jdk_default or
    something like that.<br>
    <br>
    <br>
    <br>
    <blockquote cite="mid:52A8BC76.60409@oracle.com" type="cite"> <br>
      <br>
      <blockquote cite="mid:52A8A72C.7050300@oracle.com" type="cite">Alternatively,

        that segment of the script could be a candidate for a target in
        <br>
        one or more test/Makefile files. <br>
      </blockquote>
      <br>
      This is good idea, but my experience with the 'make' is that if
      one target critically fail, all<br>
      subsequent targets will not run. I thought it is a restriction of
      'make'.<br>
    </blockquote>
    <br>
    Well, ...<br>
    a)  "make -k" keeps on going<br>
    b)  as a user of the Makefile, you should be looking for a single
    target, such as "make test", and it is up to the implementation of
    the target to run all the tests, even though some might fail.    
    There are various ways to do this: for example, you can prefix a
    make rule with "-" to ignore the exit code from a command, or you
    can do a composite command like<br>
        jtreg <opts> || echo some jtreg tests failed<br>
    <br>
    <blockquote cite="mid:52A8BC76.60409@oracle.com" type="cite"> <br>
      <br>
      Thanks<br>
      Balchandra<br>
      <br>
      <blockquote cite="mid:52A8A72C.7050300@oracle.com" type="cite"> <br>
        -- Jon <br>
      </blockquote>
    </blockquote>
    <br>
  </body>
</html>