Novell Home

My Favorites

Close

Please to see your favorites.

Novell Identity Manager and Recommended Java Heap Settings and Analysis

This document (7000224) is provided subject to the disclaimer at the end of this document.

Environment

Novell Identity Manager 3.6.1a
Novell Identity Manager 4.0.2

Situation

Trying to find a standard way to get the current IDM JVM heap sizes on Linux and/or *nix. This information will be useful for those who want to check or profile their Java heap sizes. On NetWare, you can get this information from Novell Remote Manager (NRM) --> Manage Application --> Java Application Information --> Details.
Also, are there recommended JVM Options for IDM *nix users?

Resolution

The current heap size, current heap free, and maximum heap size are all available by extension function calls to java.lang.Runtime which can be made from within a driver config's action on a rule as shown below:

Current heap size: java.lang.Runtime:totalMemory((java.lang.Runtime:getRuntime()))

Current heap free: java.lang.Runtime:freeMemory((java.lang.Runtime:getRuntime()))

Maximum heap size: java.lang.Runtime:maxMemory((java.lang.Runtime:getRuntime()))

Normally the default heap sizes are fine for most deployments and there is no reason to recommend anything different.

Additionally, watching the heap sizes isn't necessarily the best way to determine optimal heap size because in a garbage collection (GC) system, heap sizes often grow as big as you let them with the net runtime effect of a larger heap size being that GC happens less frequently but takes longer when it does happen. OutOfMemoryError's are the surest indicator of an insufficient maximum heap size. If you get into a situation where GC is happening frequently and very little memory is being released each time, that might be an indicator that a larger heap is might be beneficial. However, Java heap settings should not be increased in large increments (increase in 64 MB or 128 MB increments). Setting Java heap settings very high can cause other memory problems.

Another way of gathering similar information is to pass parameters to the JVM via environment variables. IDM now provides a way to send options directly to its environment via properties set on the appropriate DriverSet object (modifying eDirectory's ndsd script directly should never be done).  To enable logging of the garbage collection process the following options may be enabled:

-Xloggc:/tmp/idmgc.log -XX:+PrintGCDetails

After adding those options and restarting ndsd, the JVM will create a file at /tmp named idmgc.log (change the parameter Xloggc to change the file location or name) with the garbage collection information. The file will contain one line per garbage collection cycle.


Additional Information

For IDM 4.0.2 the default sizes for Java are as follows:
Initial Heap Size = 128 meg
Max Heap Size = 512 meg

Change Log

2012-07-10 AB - Fixed typos, removed bad recommendations (changing 'ndsd' script directly), added information on properly setting environment variables for all platforms while removing platform-specific ways.  Improved GC file name to be less redundant and more descriptive.  Added proper formatting for commands/paths.

Disclaimer

This Support Knowledgebase provides a valuable tool for NetIQ/Novell/SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.

  • Document ID:7000224
  • Creation Date:28-APR-08
  • Modified Date:23-OCT-13
    • NetIQIdentity Manager

Did this document solve your problem? Provide Feedback