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.
    • Topology: -Xk8300
    • EventsCore: -Xk3500
    • DiscoverAdmin: -Xk3200
    • Proxy: -Xk5700
    • Discover: -Xk3700
    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:
    com.collation.Topology.jvmargs.ibm=-Xk8300
  • Another option for fragmentation issues is to allocate some space specifically for large objects; > 64K. Use the -Xloratio parameter. For example:
    • -Xloratio0.2

    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 7.3.0.1, 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 7.3.0.1, 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 7.3.0.1, 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 7.3.0.1, 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:
<property name="jvmArgs"><value>
You can also modify the JVM properties that are in the collation.properties file. Those properties can have one of the following forms:
com.collation.JVM.jvmargs.VENDOR
Such property is added to the values that are read from the *-config.xml file.
com.collation.jvmargs.VENDOR
Such property is added to all TADDM JVMs.
com.collation.JVM.jvmargs
Such property overwrites all the values that are specified in the *-config.xml file.
where
  • JVM is Proxy, Topology, EventsCore, ExcmdbCore, DiscoverAdmin, StorageService, DiscoveryService
  • VENDOR is ibm or sun