For ease of deployment and support, 3DOrchestrate is delivered with the appropriate versions of both Apache TomEE and the Java Runtime Environment (JRE) in the following folders (Windows) or directories (Linux):
- Windows
<server_install_dir>\win_b64\code\jre\
<server_install_dir>\win_b64\code\tomee172\
- Linux
<server_install_dir>/linux_a64/code/jre/
<server_install_dir>/linux_a64/code/tomee172/
After installation and configuration, however, the 3DOrchestrate Distribution Server and 3DOrchestrate Station are left with very few or no settings related to JVM performance such as heap size, garbage collection, and Just-In-Time (JIT) runtime compilation. This is done because 3DOrchestrate is designed and supported to run with the embedded JRE and its default performance settings.
Java technology includes a mechanism called ergonomics that is specifically designed to influence default performance settings based on the execution environment. The details below explain the default settings and how to check their effective values in the target execution environment. It is assumed that the system administrator has a working understanding of the Java performance options.
This information does not constitute a performance tuning guide for 3DOrchestrate, however. Tuning 3DOrchestrate for performance, scalability, and reliability is a specific task that must be accomplished over time, based on metrics collected while monitoring real business usage. This kind of tuning is beyond the scope of this documentation.
Checking the final settings applied by Java ergonomics in a specific environment can be easily done as shown for the example machine/OS combinations below:
- Windows operating system, 4 Intel cores, Intel hyper-threading enabled, 16 GB
Running the 3DOrchestrate java.exe
with the command-line options shown:
<server_install_dir>\win_b64\code\jre\bin\java.exe -XshowSettings:vm -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=265716608 -XX:MaxHeapSize=4251465728 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers
-XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
VM settings:
Max. Heap Size (Estimated): 3.52G
Ergonomics Machine Class: client
Using VM: Java HotSpot(TM) 64-Bit Server VM
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b18, mixed mode)
- Linux operating system, 2 Intel cores, 12 GB
Running the 3DOrchestrate java.exe
with the command-line options shown:
<server_install_dir>/linux_a64/code/jre/bin/java -XshowSettings:vm -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=195176896 -XX:MaxHeapSize=3122830336 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers
-XX:+UseCompressedOops -XX:+UseParallelGC
VM settings:
Max. Heap Size (Estimated): 2.59G
Ergonomics Machine Class: server
Using VM: Java HotSpot(TM) 64-Bit Server VM
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
- Windows operating system, 8 Intel cores, Intel hyper-threading enabled, 48 GB
Running the 3DOrchestrate java.exe
with the command-line options shown:
<server_install_dir>\win_b64\code\jre\bin\java.exe -XshowSettings:vm -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=803921472 –XX:MaxHeapSize=12862743552 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers
-XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
VM settings:
Max. Heap Size (Estimated): 10.65G
Ergonomics Machine Class: client
Using VM: Java HotSpot(TM) 64-Bit Server VM
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b18)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b18, mixed mode)
One important setting to look at is Max. Heap Size
(MaxHeapSize). Based on the three examples above, the most important ergonomics rules for a 64-bit server VM are as follows:
Java ergonomics defaults to a parallel (multithreaded) "Stop The World" (STW) garbage collection (GC) algorithm for both young (-XX:+UseParallelGC
) and old (-XX:+UseOldParallelGC
) generation objects.
Notes:
- The option
-XX:+UseParallelGC
also implies -XX:+UseOldParallelGC
. - Stop The World (STW) garbage collection (GC) algorithm means that the 3DOrchestrate Distribution Server will periodically suffer pauses of unpredictable durations.
Java ergonomics defaults to a maximum heap size of one-fourth (1/4) of the total amount of available memory.
If it is necessary to explicitly set the maximum heap size, you must use the -Xmx
option for predictability.
With a basic understanding of Java ergonomics, continue on to the succeeding topics for an explanation of how the recommended Java performance policy impacts the 3DOrchestrate Distribution Server and 3DOrchestrate Stations in the supported configurations.