I am currently using trinity v2.6.0. My jobs keep crashing at the butterfly stage of the analysis, with such error messages as:
succeeded(1008), failed(108076) 99.9771% completed. Invalid maximum heap size: -Xmx16G
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
There is clearly a problem with assigning enough memory to the JVM. My overall memory and CPU allocation for the last job I ran were:
#PBS -l procs=64
#PBS -l mem=1048320mb
and the run parameters of Trinity were:
--max_memory 1024G \
--bflyHeapSpaceMax 16G \
--bflyGCThreads 16 \
--normalize_reads \
--CPU 64 \
I would like to know what the --bflyHeapSpaceMax option specifies. Is it the maximum JVM heap space overall, or for each thread Trinity has generated?
Should I simply set the --bflyHeapSpaceMax to the same value as --max_memory?
I understand that the --bflyGCThreads option removes objects from the JVM once they are no longer in use, and in doing so frees up the memory. Is this correct?
Should I allocate on butterfly GC thread for each CPU/thread used by Trinity?
Does Trinity generate more than one butterfly GC thread on a single CPU?
succeeded(1008), failed(108076) 99.9771% completed. Invalid maximum heap size: -Xmx16G
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
There is clearly a problem with assigning enough memory to the JVM. My overall memory and CPU allocation for the last job I ran were:
#PBS -l procs=64
#PBS -l mem=1048320mb
and the run parameters of Trinity were:
--max_memory 1024G \
--bflyHeapSpaceMax 16G \
--bflyGCThreads 16 \
--normalize_reads \
--CPU 64 \
I would like to know what the --bflyHeapSpaceMax option specifies. Is it the maximum JVM heap space overall, or for each thread Trinity has generated?
Should I simply set the --bflyHeapSpaceMax to the same value as --max_memory?
I understand that the --bflyGCThreads option removes objects from the JVM once they are no longer in use, and in doing so frees up the memory. Is this correct?
Should I allocate on butterfly GC thread for each CPU/thread used by Trinity?
Does Trinity generate more than one butterfly GC thread on a single CPU?