java - JVM crashes when attempting to run multiple invocations on a high-memory, many CPU server -


i've written java-based, single-threaded, genomics software runs on 1 sample @ time, , have hundreds of samples process. have access machine 64 cpus , terabyte of ram, , there no other users on system. maximum heap size requested each invocation 8 gigabytes. expect should able invoke 30 instances of code simultaneously (assuming 2 threads - main thread , gc thread?). i'm attempting dispatch 20 @ time (using makefile , -j20 argument). in practice, however, 5 run. rest fail message:

# there insufficient memory java runtime environment continue. # cannot create gc thread. out of system resources. 

suspicious had more simultaneous invocations actual resource limitations, implemented random several-second delay in execution loop each invocation of program. gets me 10 programs running simultaneously, rather 5, same failure message.

questions:

  1. why attempting invoke dozens of instances of jvm simultaneously fail way, despite doing on system has resources available?

  2. why hack implementing dispatch delay clear of problem?

  3. what's better way 20 instances running simultaneously?

the default collector multi-threaded , number of threads scaled based on number of cpu cores. if run many java instances @ once , 1 thread each may want switch serial collector, that'll consume fewer threads , virtual memory thread stacks.

additionally, jvm reserves lot of virtual memory up-front, potentially more need during itslifetime. should enable swap , allow overcommit avoid resource exhaustion.


Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -