< prev index next >

src/hotspot/share/runtime/vm_version.cpp

Print this page
rev 52689 : 8213224: Move code related to GC threads calculation out of AdaptiveSizePolicy
Summary: Consolidate code related to GC threads calculation into a single class


  64   #error VERSION_BUILD must be defined
  65 #endif
  66 
  67 #ifndef VERSION_STRING
  68   #error VERSION_STRING must be defined
  69 #endif
  70 
  71 #ifndef DEBUG_LEVEL
  72   #error DEBUG_LEVEL must be defined
  73 #endif
  74 
  75 #define VM_RELEASE HOTSPOT_VERSION_STRING
  76 
  77 // HOTSPOT_VERSION_STRING equals the JDK VERSION_STRING (unless overridden
  78 // in a standalone build).
  79 int Abstract_VM_Version::_vm_major_version = VERSION_FEATURE;
  80 int Abstract_VM_Version::_vm_minor_version = VERSION_INTERIM;
  81 int Abstract_VM_Version::_vm_security_version = VERSION_UPDATE;
  82 int Abstract_VM_Version::_vm_patch_version = VERSION_PATCH;
  83 int Abstract_VM_Version::_vm_build_number = VERSION_BUILD;
  84 unsigned int Abstract_VM_Version::_parallel_worker_threads = 0;
  85 bool Abstract_VM_Version::_parallel_worker_threads_initialized = false;
  86 
  87 #if defined(_LP64)
  88   #define VMLP "64-Bit "
  89 #else
  90   #define VMLP ""
  91 #endif
  92 
  93 #ifndef VMTYPE
  94   #ifdef TIERED
  95     #define VMTYPE "Server"
  96   #else // TIERED
  97   #ifdef ZERO
  98     #define VMTYPE "Zero"
  99   #else // ZERO
 100      #define VMTYPE COMPILER1_PRESENT("Client")   \
 101                     COMPILER2_PRESENT("Server")
 102   #endif // ZERO
 103   #endif // TIERED
 104 #endif
 105 


 294   return strcmp(DEBUG_LEVEL, "release") == 0 ? "" : DEBUG_LEVEL " ";
 295 }
 296 
 297 unsigned int Abstract_VM_Version::jvm_version() {
 298   return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) |
 299          ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) |
 300          ((Abstract_VM_Version::vm_security_version() & 0xFF) << 8) |
 301          (Abstract_VM_Version::vm_build_number() & 0xFF);
 302 }
 303 
 304 
 305 void VM_Version_init() {
 306   VM_Version::initialize();
 307 
 308   if (log_is_enabled(Info, os, cpu)) {
 309     char buf[1024];
 310     ResourceMark rm;
 311     LogStream ls(Log(os, cpu)::info());
 312     os::print_cpu_info(&ls, buf, sizeof(buf));
 313   }
 314 }
 315 
 316 unsigned int Abstract_VM_Version::nof_parallel_worker_threads(
 317                                                       unsigned int num,
 318                                                       unsigned int den,
 319                                                       unsigned int switch_pt) {
 320   if (FLAG_IS_DEFAULT(ParallelGCThreads)) {
 321     assert(ParallelGCThreads == 0, "Default ParallelGCThreads is not 0");
 322     unsigned int threads;
 323     // For very large machines, there are diminishing returns
 324     // for large numbers of worker threads.  Instead of
 325     // hogging the whole system, use a fraction of the workers for every
 326     // processor after the first 8.  For example, on a 72 cpu machine
 327     // and a chosen fraction of 5/8
 328     // use 8 + (72 - 8) * (5/8) == 48 worker threads.
 329     unsigned int ncpus = (unsigned int) os::initial_active_processor_count();
 330     threads = (ncpus <= switch_pt) ?
 331              ncpus :
 332              (switch_pt + ((ncpus - switch_pt) * num) / den);
 333 #ifndef _LP64
 334     // On 32-bit binaries the virtual address space available to the JVM
 335     // is usually limited to 2-3 GB (depends on the platform).
 336     // Do not use up address space with too many threads (stacks and per-thread
 337     // data). Note that x86 apps running on Win64 have 2 stacks per thread.
 338     // GC may more generally scale down threads by max heap size (etc), but the
 339     // consequences of over-provisioning threads are higher on 32-bit JVMS,
 340     // so add hard limit here:
 341     threads = MIN2(threads, (2*switch_pt));
 342 #endif
 343     return threads;
 344   } else {
 345     return ParallelGCThreads;
 346   }
 347 }
 348 
 349 unsigned int Abstract_VM_Version::calc_parallel_worker_threads() {
 350   return nof_parallel_worker_threads(5, 8, 8);
 351 }
 352 
 353 
 354 // Does not set the _initialized flag since it is
 355 // a global flag.
 356 unsigned int Abstract_VM_Version::parallel_worker_threads() {
 357   if (!_parallel_worker_threads_initialized) {
 358     if (FLAG_IS_DEFAULT(ParallelGCThreads)) {
 359       _parallel_worker_threads = VM_Version::calc_parallel_worker_threads();
 360     } else {
 361       _parallel_worker_threads = ParallelGCThreads;
 362     }
 363     _parallel_worker_threads_initialized = true;
 364   }
 365   return _parallel_worker_threads;
 366 }


  64   #error VERSION_BUILD must be defined
  65 #endif
  66 
  67 #ifndef VERSION_STRING
  68   #error VERSION_STRING must be defined
  69 #endif
  70 
  71 #ifndef DEBUG_LEVEL
  72   #error DEBUG_LEVEL must be defined
  73 #endif
  74 
  75 #define VM_RELEASE HOTSPOT_VERSION_STRING
  76 
  77 // HOTSPOT_VERSION_STRING equals the JDK VERSION_STRING (unless overridden
  78 // in a standalone build).
  79 int Abstract_VM_Version::_vm_major_version = VERSION_FEATURE;
  80 int Abstract_VM_Version::_vm_minor_version = VERSION_INTERIM;
  81 int Abstract_VM_Version::_vm_security_version = VERSION_UPDATE;
  82 int Abstract_VM_Version::_vm_patch_version = VERSION_PATCH;
  83 int Abstract_VM_Version::_vm_build_number = VERSION_BUILD;


  84 
  85 #if defined(_LP64)
  86   #define VMLP "64-Bit "
  87 #else
  88   #define VMLP ""
  89 #endif
  90 
  91 #ifndef VMTYPE
  92   #ifdef TIERED
  93     #define VMTYPE "Server"
  94   #else // TIERED
  95   #ifdef ZERO
  96     #define VMTYPE "Zero"
  97   #else // ZERO
  98      #define VMTYPE COMPILER1_PRESENT("Client")   \
  99                     COMPILER2_PRESENT("Server")
 100   #endif // ZERO
 101   #endif // TIERED
 102 #endif
 103 


 292   return strcmp(DEBUG_LEVEL, "release") == 0 ? "" : DEBUG_LEVEL " ";
 293 }
 294 
 295 unsigned int Abstract_VM_Version::jvm_version() {
 296   return ((Abstract_VM_Version::vm_major_version() & 0xFF) << 24) |
 297          ((Abstract_VM_Version::vm_minor_version() & 0xFF) << 16) |
 298          ((Abstract_VM_Version::vm_security_version() & 0xFF) << 8) |
 299          (Abstract_VM_Version::vm_build_number() & 0xFF);
 300 }
 301 
 302 
 303 void VM_Version_init() {
 304   VM_Version::initialize();
 305 
 306   if (log_is_enabled(Info, os, cpu)) {
 307     char buf[1024];
 308     ResourceMark rm;
 309     LogStream ls(Log(os, cpu)::info());
 310     os::print_cpu_info(&ls, buf, sizeof(buf));
 311   }




















































 312 }
< prev index next >