Default memory settings and how to change them

The amount of memory, which can be utilized by a CLC Workbench or CLC Server java process is initially set during the installation of the software. The default amount of memory set in the case of the Workbenches, or suggested in the case of the CLC Server, is the lesser of 50% of the available physical memory or 50GB. We recommend that the setting be left at the default level. 

However it is possible to alter it.

You will find information on how to change this setting in the CLC Workbenches in our deployment manual:
http://resources.qiagenbioinformatics.com/manuals/workbenchdeployment/current/index.php?manual=Setting_amount_memory_available_JVM.html

For how to change this setting for the CLC Genomics Server, please refer to the Server manual entry:
http://resources.qiagenbioinformatics.com/manuals/clcgenomicsserver/current/admin/index.php?manual=Setting_amount_memory_available_JVM.html

Please note that the configuration file that needs to be edited for this process is not automatically updated if more memory is installed in the machine. Changes to the memory setting for the QIAGEN CLC Genomics Server must be done manually.

The QIAGEN Genomics Server service must be restarted for changes to the configuration file, 'clcgenomicsserver.vmoptions', to take effect. When 'clcgenomicsserver.vmoptions' is edited, please make sure the file is saved with '.vmoptions' extension, not as a '.txt' or other.

 

Why only 50%?

The default setting, specifying that the maximum amount of memory the Workbench java process should use reflects that fact that space should be available for other system operations and that certain Workbench tools have binary phases -  that is, phases that do not run as part of the java process. Binary phases of such tools use memory outside that used by the Workbench process itself and are thus not subject to the memory settings in the vmoptions file. Tools with this profile include de novo assembly and analyses that include a read mapping phase (e.g. read mappings, RNA-seq analyses, small RNA analyses, etc.) and local BLAST searches.
 

Why only 50Gb?

The 50GB limit is to prevent pauses caused by the garbage collector (GC). In addition to ensuring free memory for the external binaries, as mentioned above, the recommended limits on maximum heap space are there to ensure that the JVM does not spend too much time running garbage collection (GC) processes. The GC is a memory handling subsystem of the JVM, which scans through the currently used heap, and frees up memory by removing contents no longer in use. The larger the maximum heap, the longer each check through the heap will take. The JVM has to suspend all other activities while running the GC - these suspensions are on the scale of milliseconds to a few seconds, and are normally not noticeable.

In combination with the GC subystem of the JVM, the CLC Workbenches and the CLC Genomics Server utilize a sophisticated caching system, moving unneeded data out of memory and in to temporary disk storage. The result of this caching system means that there will not be any noticeable performance improvement with a Java heap space larger than 50GB, while GC pauses may become more noticeable.