Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7188227

VM should recognize M-series SPARC

XMLWordPrintable

    • b20
    • generic, sparc
    • generic, solaris

        We have flags ergonomic tuning (number of GC threads and other) for T-series SPARCs. VM checks kstat data to recognize T-series but it does not check for M-series for which the same tuning should be done.
        M-series has a lot more threads then T-series: ParallelGCThreads=ncpus*5/16 (1488*5/16=465). Currently M-series CPU is not recognized as T-series and not niagara_plus and as result the number of GC threads even bigger (933).

        Here is code in vm_version_sparc.cpp:

        unsigned int VM_Version::calc_parallel_worker_threads() {
          unsigned int result;
          if (is_niagara_plus()) {
            result = nof_parallel_worker_threads(5, 16, 8);
          } else {
            result = nof_parallel_worker_threads(5, 8, 8);
          }
          return result;
        }

        Notice that even more serious than configuring the wrong number of GC-Threads is the fact the without the proper detection of M-Series CPUS the "UseMemSetInBOT" option will not be properly unset on these CPUs. From vm_version.cpp: "When using CMS or G1, we cannot use memset() in BOT updates because the sun4v/CMT version in libc_psr uses BIS which exposes 'phantom zeros' to concurrent readers - see https://bugs.openjdk.java.net/browse/JDK-6948537.

              kvn Vladimir Kozlov
              kvn Vladimir Kozlov
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: