Java Virtual Machine: IBM® parameters tuning
You can set Java™ Virtual Machine (JVM) parameters that reduce fragmentation of the Java heap and can help improve performance.
Fragmentation of the Java heap can occur as the number of objects that are processed increases. There are a number of parameters that you can set to help reduce fragmentation in the heap.
- A kCluster is an area of storage that is used exclusively for
class blocks. It is large enough to hold 1280 entries. Each class
block is 256 bytes long. This default value is usually too small and
can lead to fragmentation of the heap. Set the kCluster parameter, -Xk,
as follows to help reduce fragmentation of the heap. These are starting
values and might have to be tuned in your environment. An analysis
of a heap dump would be best to determine the ideal size.
Implement these changes in the collation.properties file by adding entries in the JVM Vendor Specific Settings section. For example, to implement these changes for the Topology server, add the following line:
- Topology: -Xk8300
- EventsCore: -Xk3500
- DiscoverAdmin: -Xk3200
- Proxy: -Xk5700
- Discover: -Xk3700
- Another option for fragmentation issues is to allocate some space
specifically for large objects; > 64K. Use the -Xloratio parameter.
This command reserves x% of the active Java heap (not x% of -Xmx but x% of the current size of the Java heap), to the allocation of large objects (≥64 KB) only. If changed, -Xmx should be changed to make sure that you do not reduce the size of the small object area. An analysis of a heap dump would be best to determine the ideal setting for this parameter.
There are a few additional parameters that can be set that affect Java performance. To change an existing JVM option to a different value, edit one of the following files:
- For a domain server in TADDM 7.3.0, the $COLLATION_HOME/deploy-tomcat/ROOT/WEB-INF/cmdb-context.xml file.
- For a domain server in TADDM 22.214.171.124, and later, the $COLLATION_HOME/apps/ROOT/WEB-INF/cmdb-context.xml file.
- For a synchronization server in TADDM 7.3.0, the $COLLATION_HOME/deploy-tomcat/ROOT/WEB-INF/ecmdb-context.xml file.
- For a synchronization server in TADDM 126.96.36.199, and later, the $COLLATION_HOME/apps/ROOT/WEB-INF/ecmdb-context.xml file.
- For a discovery server in TADDM 7.3.0, the $COLLATION_HOME/deploy-tomcat/ROOT/WEB-INF/discovery-server-context.xml file.
- For a discovery server in TADDM 188.8.131.52, and later, the $COLLATION_HOME/apps/ROOT/WEB-INF/discovery-server-context.xml file.
- For a storage server in TADDM 7.3.0, the $COLLATION_HOME/deploy-tomcat/ROOT/WEB-INF/storage-server-context.xml file.
- For a storage server in TADDM 184.108.40.206, and later, the $COLLATION_HOME/apps/ROOT/WEB-INF/storage-server-context.xml file.
To edit one of these files to change the settings for one of the TADDM services, first find the service in the file. The following example shows the beginning of a service definition in the XML file:
<bean id="Discover" class="com.collation.platform.service.ServiceLifecycle" init-method="start" destroy-method="stop"> <property name="serviceName"> <value>Discover</value> </property>
Within the definition, there are some elements and attributes that control the JVM arguments. For example:
<property name="jvmArgs"> <value>-Xms8M;-Xmx512M; -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.PollSelectorProvider </value> </property>
The JVM arguments can be set as a semicolon separated list in the following element:
You can also modify the JVM properties that are in the collation.properties file. Those properties can have one of the following forms:
- Such property is added to the values that are read from the *-config.xml file.
- Such property is added to all TADDM JVMs.
- Such property overwrites all the values that are specified in the *-config.xml file.
- JVM is Proxy, Topology, EventsCore, ExcmdbCore, DiscoverAdmin, StorageService, DiscoveryService
- VENDOR is ibm or sun